编写程序实现新闻网页数据的请求和获取数据的保存: 进入一个学校的新闻首页,分析各不同新闻网页url之间的区别和联系,并根据得到的规律通过程序生成所要请求的网页的url(前30个页面)。 使用requests库通过http协议的get方法向web server 请求30个页面的数据,要求:(1)30个请求分别由5个线程实现,每个线程负责6个url页面的请求;(2)每个线程中的不同页面请求的时间间隔是3秒;(3)当线程中成功获取某一个新闻网页数据后,需要在屏幕上输出相应的状态信息(如。。。网页请求成功) 对于每个获取的网页数据,分别将其写入到本地相应的html文件中,要求本地网页数据文件的文件名为pageXXX(XXX为请求页面的编号) 对生成的文件进行验证,如果出现中文乱码的问题,请对可能的原因进行分析,并给出可行的解决方案。
import requests
import threading
import time
header = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
}
url_list =[]
for i in range(30):
count = 41 - i
count_str = str(count)
url_list.append("http://www.ldu.edu.cn/index/zhyw/"+ count_str +".htm")
# url_list[i] = "http://www.ldu.edu.cn/index/zhyw/"+ count_str +".htm"
def MyThread(count_thread):
# count_thread = 4
print(count_thread)
for i in range(6):
time.sleep(3)
url = url_list[i+count_thread*6]
# print(url)
response = requests.get(url,params = None,headers = header)
print(response.status_code) # 获取状态码
print(response.cookies) # 获取cookie,这种获取的cookie不能用于登录,因为它不是完整的
print(response.headers) # 获取响应头
data = response.text
stringtext = str(i + count_thread * 6)
encoding_str = response.encoding
f = open(r'baidu' + stringtext + '.html', 'w', encoding=encoding_str)
f.write(data)
f.close()
# print(data)
def main():
for i in range(5):
t = threading.Thread(target=MyThread, args=(i,))
t.start()
if __name__ == '__main__':
main()
资源已将上传至资源库