大家好,我是皮皮。
一、前言
前幾天在Python最強(qiáng)王者交流群【德善堂小兒推拿-瑜亮老師】分享了一個(gè)關(guān)于Python網(wǎng)絡(luò)爬蟲(chóng)的問(wèn)題,這里拿出來(lái)給大家分享下,一起學(xué)習(xí)。

二、解決過(guò)程
這里【PI】大佬提出了思路,的確可行。

【皮皮】給了一份代碼,取巧,這里就不展示了。后來(lái)【月神】給了一份可行的代碼,如下所示:
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)

程序運(yùn)行之后,不到1秒就出來(lái)結(jié)果了,沒(méi)想到j(luò)upyter里邊可以自動(dòng)顯示時(shí)間,以前也有看到,但是沒(méi)有留意,Pycharm里邊是沒(méi)有的,這里來(lái)看,jupyter還是蠻香,Pycharm還得自己設(shè)置打印時(shí)間。

【月神】的方法完全滿(mǎn)足題目要求,不過(guò)這個(gè)文件解析有點(diǎn)慢。

后來(lái)【德善堂小兒推拿-瑜亮老師】大佬攤牌了:題目就考這一個(gè)知識(shí)點(diǎn):stream=True,別的都是簡(jiǎn)單的很。這里給出了代碼:
import requests
import time
url = ['https://wap.game.xiaomi.com/index.php?c=app&v=download&package=com.joypac.dragonhero.cn.mi&channel=meng_4001_2_android',
'https://wap.game.xiaomi.com/index.php?c=app&v=download&package=com.yiwan.longtengtianxia.mi&channel=meng_4001_2_android',
'https://wap.game.xiaomi.com/index.php?c=app&v=download&package=com.netease.mrzh.mi&channel=meng_4001_2_android']
header = {'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里面的內(nèi)容
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'測(cè)試完畢!共耗時(shí): {end - start:.2f}秒')
# 方法二:判斷響應(yīng)的字節(jié)流大小
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}')
break
end2 = time.time()
print(f'測(cè)試完畢!共耗時(shí): {end2 - start2:.2f}秒')
下面是代碼截圖:


那小伙伴們就問(wèn)了,那個(gè)stream參數(shù)是干啥用的???不慌,【月神】丟來(lái)一個(gè)解析。

如此就清晰多了。
三、總結(jié)
大家好,我是皮皮。這篇文章主要分享了在Python網(wǎng)絡(luò)爬蟲(chóng)過(guò)程中,構(gòu)建網(wǎng)絡(luò)請(qǐng)求的時(shí)候,參數(shù)stream=True的使用,使用了一個(gè)具體的實(shí)例給大家演示了該參數(shù)的具體用法!關(guān)于該參數(shù)的介紹,請(qǐng)參考文中的解析。
最后感謝【德善堂小兒推拿-瑜亮老師】分享,感謝【皮皮】、【PI】、【月神】大佬給出的思路和代碼支持,感謝粉絲【冫馬讠成】、【孤獨(dú)】等人參與學(xué)習(xí)交流。