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]

原文地址:https://www.cnblogs.com/lpbca/p/7216716.html