Python网络爬虫过程中,构建网络请求的时候,参数`stream=True`的使用

网友投稿 223 2022-09-05


Python网络爬虫过程中,构建网络请求的时候,参数`stream=True`的使用

大家好,我是皮皮。

一、前言

前几天在Python最强王者交流群【德善堂小儿推拿-瑜亮老师】分享了一个关于Python网络爬虫的问题,这里拿出来给大家分享下,一起学习。

二、解决过程

这里【PI】大佬提出了思路,的确可行。

【皮皮】给了一份代码,取巧,这里就不展示了。后来【月神】给了一份可行的代码,如下所示:

for url in all_url: resp = requests.get(url, headers=header, stream=True) content_length = resp.headers.get('content-length') if content_length and int(content_length) > 10240: print(url)

程序运行之后,不到1秒就出来结果了,没想到jupyter里边可以自动显示时间,以前也有看到,但是没有留意,Pycharm里边是没有的,这里来看,jupyter还是蛮香,Pycharm还得自己设置打印时间。

【月神】的方法完全满足题目要求,不过这个文件解析有点慢。

后来【德善堂小儿推拿-瑜亮老师】大佬摊牌了:题目就考这一个知识点:stream=True,别的都是简单的很。这里给出了代码:

import requestsimport timeurl = [' ' '= {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}start = time.time()# 方法一:判断response.headers里面的内容for i in url: resp = requests.get(i, headers=header, stream=True) if 'Content-Length' in resp.headers: print(f'有效url有:\n {i}')end = time.time()print(f'测试完毕!共耗时: {end - start:.2f}秒')# 方法二:判断响应的字节流大小start2 = time.time()for i in url: resp = requests.get(i, headers=header, stream=True) chunk_size = 1024 for data in resp.iter_content(chunk_size=chunk_size): if len(data) > 800: print(f'有效url有:\n {i}') breakend2 = time.time()print(f'测试完毕!共耗时: {end2 - start2:.2f}秒')

下面是代码截图:

那小伙伴们就问了,那个stream参数是干啥用的啊?不慌,【月神】丢来一个解析。

如此就清晰多了。

三、总结

大家好,我是皮皮。这篇文章主要分享了在Python网络爬虫过程中,构建网络请求的时候,参数stream=True的使用,使用了一个具体的实例给大家演示了该参数的具体用法!关于该参数的介绍,请参考文中的解析。

最后感谢【德善堂小儿推拿-瑜亮老师】分享,感谢【皮皮】、【PI】、【月神】大佬给出的思路和代码支持,感谢粉丝【冫马讠成】、【孤独】等人参与学习交流。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python实现:与其穷举构造字典,不如直接用《百家姓》返回其index
下一篇:Spring Cache与Redis结合的使用方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~