http协议-数据请求

编写程序实现新闻网页数据的请求和获取数据的保存: 进入一个学校的新闻首页,分析各不同新闻网页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()


资源已将上传至资源库

发布了90 篇原创文章 · 获赞 37 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_25368751/article/details/103648086