urlopen error [errno 10060]的解決思路


當用多線程爬取某個網站的數據的時候,爬取一段時間后,總出現urlopen error [errno 10060]的錯誤,結果線程無端的被掛掉,一開始的解決思路是每次連接的時候換用不同的useragent,結果還是出現這種問題,在網上查了下,看到網上別人的經驗,原來是 如果用多個線程爬去某個網站的數據,每次連接完的時候,需要sleep(1)一會,不然該網站服務端的防火牆會ban掉你的connect。so 按照這種解決方法,果然不再出現urlopen error [errno 10060]的異常了。

睡眠等待機制會減少urlopen error [errno 10060]出現的概率,但訪問次數多了還是會出現

於是看了網上說法是連接時網絡不穩定造成的,於是寫了個多次嘗試連接的函數

 

[python]  view plain  copy
 
 
  1. def getUrl_multiTry(url):  
  2.     user_agent ='"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36"'  
  3.     headers = { 'User-Agent' : user_agent }  
  4.     maxTryNum=10  
  5.     for tries in range(maxTryNum):  
  6.         try:  
  7.             req = urllib2.Request(url, headers = headers)   
  8.             html=urllib2.urlopen(req).read()  
  9.             break  
  10.         except:  
  11.             if tries <(maxTryNum-1):  
  12.                 continue  
  13.             else:  
  14.                 logging.error("Has tried %d times to access url %s, all failed!",maxTryNum,url)  
  15.                 break  
  16.               
  17.                   
  18.     return html  


經測驗,可以搞定urlopen error [errno 10060]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM