http**429表示訪問過快。
伺服器在溫柔地提示你,可以爬,但是爬慢一些。
控制訪問的速度就可以了。
有些伺服器會在返回的頭部中新增"retry-after",告訴你多久之後重試。
獲取這個值,然後sleep就可以了。
捕獲錯誤
try:
.....
except aiohttp.clientresponseerror as e: # 響應錯誤
if status== 429:
retryafter="retry-after"
headers=e.headers
sec=getheader(headers, retryafter)
if len(sec)>0:
sec=int(sec)
print(status, "請求過快,伺服器要求待",sec , url )
time.sleep(sec) # if the rate limit is renewed in a minute, put 60 seconds, and so on.
else:
print(status, "伺服器拒絕了請求,表示請求過快。取消重試,請稍後再試!", url)
def getheader(headers, key):
key_lower=key.lower()
headers_lower =
if (key_lower in headers_lower) :
return headers_lower[key_lower]
else:
return ''
大概就是這樣。 python爬蟲 爬蟲異常處理
異常處理概述 常見狀態碼和含義 urlerror與httperror 爬蟲遇到異常時就會直接崩潰停止執行,下次再次執行時,又會重新開始。所以開發乙個具有頑強生命力的爬蟲,必須進行異常處理。兩者都是異常處理的類,httperror是urlerror的子類,httperror有異常狀態碼與異常原因,ur...
Python爬蟲錯誤記錄
本文注意是用於記錄在用python寫爬蟲的過程中所經歷的一些問題及其解決方法,便於後續翻查。出錯 fp open filetest.txt w fp.write hello world n fp.close import os os.rename filetest.txt newfiletest.t...
python 爬蟲 requests 錯誤彙總
原因分析 使用的 有問題 cannot connect to proxy 這是乙個https的不安全請求警告,解決方法就是將該警告忽略掉,忽略該警告就不會再提示了 from urllib3.exceptions import insecurerequestwarning from urllib3 i...