各位早安,书接上回我们将程序码成功加上储存的功能,我们今天要来使它的规模更大更方便使用
首先目前我们只会建一个档案存放资料
如果想要存取更大量资料只有一个档案是不行的
因为记事本一旦资料太多就会变得难以阅读
所以我今天以15页为目标 每个档案5页 建3个档案
在此之前
我们先利用之前学到的读档来让终端也输出我们抓到的内容
把原本的
print("爬完了")
改成
read = open("Pet_Get.txt", encoding="utf-8")
print(read.read())
read.close()
第一行开档
第二行印出读取出来的东西
第三行关档
执行结果
可以看到把档案内的资料印出来了
接下来是利用多一个回圈建立更多档案并印出更多页
把原本用来写入的部分
file = open("Pet_Get.txt", "w", encoding="utf-8")
for i in range(1,4,1):
infor = getData(infor)
file.write("--------------------第"+str(i)+"页--------------------\n")
for inf in infor:
file.write(inf)
file.close()
改成
for x in range(1,4,1):
file = open("Pet_Get"+str(x)+".txt", "w", encoding="utf-8")
for i in range(1,6,1):
infor = getData(infor)
file.write("--------------------第"+str(i)+"页--------------------\n")
for inf in infor:
file.write(inf)
file.close()
加一层回圈用来建立更多档案
并把档案名称编号
将原本一个档案内存三篇文章改成存五篇
执行後可以看到他一个一个新增了3个档案 就是这次执行的结果
但是终端内的输出依然没变
因为他还是读取之前的 Pet_Get.txt
而不是新的 Pet_Get1.txt Pet_Get2.txt Pet_Get3.txt
所以下面读取的部分也要更新成读这三个档案
要加上去的回圈逻辑跟写入的一样
把原本
read = open("Pet_Get.txt", encoding="utf-8")
print(read.read())
read.close()
for x in range(1,4,1):
read = open("Pet_Get"+str(x)+".txt", encoding="utf-8")
print(read.read())
read.close()
这样就会读取新建立的 Pet_Get1.txt Pet_Get2.txt Pet_Get3.txt 了
原本的 Pet_Get.txt 没用了已经可以删掉了
执行结果
可以看到这里印出了三个档案量的内容 资料也都成功写入档案内
有这些问题都是我在构思程序码时对程序设计不够了解导致的
扩大程序的规模也让这些原本没发现到的问题浮现出来
有这麽多问题可不能放任它们 明天我们就要来把这些问题解决了 顺便再优化一下程序
今天的程序码
import requests
import bs4
def getData(infor):
headers = {"cookie" : "over18=1"}
#建立headers用来放要附加的cookie
request = requests.get(infor[0],headers = headers)
#将网页资料利用requests套件GET下来并附上cookie
data = bs4.BeautifulSoup(request.text, "html.parser")
titles = data.find_all("div", class_ = "title")
#解析网页原始码
i = 1
for title in titles:
if title.a != None:
if "兔" not in title.a.text:
infor.insert(i, "https://www.ptt.cc"+title.a["href"]+" "+title.a.text+"\n")
i = i+1
#利用for回圈把资料放进infor[1]开始的位置内并筛选掉已被删除的文章
prePage = data.find("a", class_ = "btn wide", text = "‹ 上页")
newUrl = "https://www.ptt.cc"+prePage["href"]
#抓取上页按钮内URL
infor[0] = newUrl
return infor
#将newUrl放进infor[0]再把infor传出去
infor = ["https://www.ptt.cc/bbs/Pet_Get/index.html"]
#抓PTT领养版的网页原始码
for x in range(1,4,1):
file = open("Pet_Get"+str(x)+".txt", "w", encoding="utf-8")
for i in range(1,6,1):
infor = getData(infor)
file.write("--------------------第"+str(i)+"页--------------------\n")
for inf in infor:
file.write(inf)
file.close()
#写入资料
for x in range(1,4,1):
read = open("Pet_Get"+str(x)+".txt", encoding="utf-8")
print(read.read())
read.close()
#读取档案中资料并印出
欧洲古代贵族会用放射性铀玻璃做的器皿吃饭生活导致有人生病喔
你去火锅吃到饱是会吃爆蔬菜的草食人还是吃爆肉类的肉食人呢
<<: [2021铁人赛 Day25] Web Exploitation Web渗透题目 01
>>: 【Side Project】 (老板)订单清单UX功能实作2-ChcekBox
前测是敲门砖,决定他们要不要和你面试, 我听说过有人前测找代打, 也碰过某个公司的前测题目同期完全一...
前面我们有讲过 C# 中的类,今天我们补充点,关于类的继承的内容。 在实际的环境中,我们的对象都是不...
C# C# 读做 (see sharp), 是一个基於 .Net Framework 的通用, 多范...
为什麽想写这个? 一样是在某次开会听到这个名词,脑中开始想说这跟api有什麽不一样,为什麽要特别加...
时间time模组 使用前要先import time Time()可以传回自1970/1/1以来的秒...