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

大家好,我是皮皮。

一、前言

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

image.png

二、解决过程

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

image.png

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

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

image.png

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

image.png

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

image.png

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

1import requests 2import time 3 4url = ['https://wap.game.xiaomi.com/index.php?c=app&v=download&package=com.joypac.dragonhero.cn.mi&channel=meng_4001_2_android', 5 'https://wap.game.xiaomi.com/index.php?c=app&v=download&package=com.yiwan.longtengtianxia.mi&channel=meng_4001_2_android', 6 'https://wap.game.xiaomi.com/index.php?c=app&v=download&package=com.netease.mrzh.mi&channel=meng_4001_2_android'] 7header = {'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'} 8 9start = time.time() 10# 方法一:判断response.headers里面的内容 11for i in url: 12 resp = requests.get(i, headers=header, stream=True) 13 if 'Content-Length' in resp.headers: 14 print(f'有效url有:\n {i}') 15end = time.time() 16print(f'测试完毕!共耗时: {end - start:.2f}秒') 17 18# 方法二:判断响应的字节流大小 19start2 = time.time() 20for i in url: 21 resp = requests.get(i, headers=header, stream=True) 22 chunk_size = 1024 23 for data in resp.iter_content(chunk_size=chunk_size): 24 if len(data) > 800: 25 print(f'有效url有:\n {i}') 26 break 27end2 = time.time() 28print(f'测试完毕!共耗时: {end2 - start2:.2f}秒') 29

下面是代码截图: image.png image.png

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

image.png

如此就清晰多了。

三、总结

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

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

点赞
收藏

评论区

加载中...

相关推荐

Python网络爬虫中重新请求,请问有什么比较好的解决方法?

大家好,我是皮皮。一、前言前几天在Python钻石群有个叫【某嘟】的粉丝问了一个关于Python网络爬虫中重新请求的问题,这里拿出来给大家分享下,一起学习。二、解决过程这里【DIY】大佬给了一个思路,确实可行。不过后来她自己又找到了一个更好的方法,找到一个HTTPAdapter可以实现超时重试,大概用法如下:fromrequests.adapter

盘点一道Python中的yield生成器的题目

大家好,我是皮皮。一、前言前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python生成器的问题,这里拿出来给大家分享下,一起学习下。二、解决过程这里【月神】给出了解答,如下图所示:当然了,这块有点难理解的部分,如下图所示:如果加return的话,效果就不一样了。这里在额外细节化一下,【瑜亮老师】给出了yield用法细节。这个题目主

为啥chrome查看到网页,只有5000多行,应该有1万多行才对

大家好,我是皮皮。一、前言前几天在Python白银交流群【磐奚鸟】问了一个Python网络爬虫处理的问题,这里拿出来给大家分享下。二、实现过程这里【惜君】给了一个指导,可能网站有限制数据量。这里【瑜亮老师】发现了问题所在,如下图所示:数据方面确实存在,顺利

盘点一个Python网络爬虫抓取股票代码问题(上篇)

大家好,我是皮皮。一、前言前几天在Python白银群【厚德载物】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。二、实现过程这个问题其实for循环就可以搞定了,看上去粉丝的代码没有带请求头那些,导致获取不到数据。后来【瑜亮老师】、【小王子】给了

盘点一个Python网络爬虫抓取股票代码问题(下篇)

大家好,我是皮皮。一、前言前几天在Python白银群【厚德载物】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。二、实现过程这个问题其实for循环就可以搞定了,看上去粉丝的代码没有带请求头那些,导致获取不到数据。后来【瑜亮老师】、【小王子】给了

Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除

大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这