urlopen error [errno 10060]的解决思路
Posted 周二也被占用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
- def getUrl_multiTry(url):
- user_agent ='"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/38.0.2125.122 Safari/537.36"'
- headers = 'User-Agent' : user_agent
- maxTryNum=10
- for tries in range(maxTryNum):
- try:
- req = urllib2.Request(url, headers = headers)
- html=urllib2.urlopen(req).read()
- break
- except:
- if tries <(maxTryNum-1):
- continue
- else:
- logging.error("Has tried %d times to access url %s, all failed!",maxTryNum,url)
- break
- return html
经测验,可以搞定 urlopen error [errno 10060]
以上是关于urlopen error [errno 10060]的解决思路的主要内容,如果未能解决你的问题,请参考以下文章
python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054
urllib2.URLError: <urlopen 错误 [Errno 8]
无法使用 python 连接到 *.onion 站点(<urlopen 错误 [Errno 11001] getaddrinfo failed>)
urllib2.URLError: <urlopen 错误 [Errno 32] Broken pipe - Google Leads