出現問題描述及分析:
最近做爬蟲是,經常出現ConnectionResetError: [WinError 10054] 等錯誤,主要是因爲使用urlopen方法太過頻繁,引起遠程主機的懷疑,被網站認定爲是攻擊行爲,導致urlopen()後,request.read()一直卡死在那裏,導致最後拋出10054異常。
具體解決辦法:
1、設置sleep()等待一段時間後繼續下面的操作【簡單常用】
import time
time.sleep(t)
2、在request後面寫入一個關閉的操作
response.close()
3、設置socket默認的等待時間,在read超時後能自動往下繼續跑
socket.setdefaulttimeout(t_default)
4、防止循環時某一個請求失敗導致循環退出,從而程序退出【常用】
拋出異常,保存日誌或者重新請求,或者加請求超時。=
try:
html = requests.get(pic, headers=Hostreferer, timeout=15)
print('成功')
except requests.exceptions.RequestException as e:
print(e)
print('失敗')
continue
具體例子:
1、使用Python爬取妹子網的圖片,批量下載,附帶源碼,超詳細
2、爬蟲實例源碼下載,修改目錄直接能運行
更多內容參考:
Python爬蟲學習彙總(持續更新)