• 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]

  • 相关阅读:
    html 选择本地图片,显示选择的图片
    cocos Uniforms值的赋值
    unity:坐标变换
    Mercurial 的hook使用
    mercurial branch name use integer as a name
    nginx php-fpm 配置问题(2)
    nginx php-fpm 配置问题(1)
    用defy来潜水最终还是挂了........
    excel用vlookup,lookup时查询数据需要排序
    ubuntu1204上不能正常用emacs配合gocode进行自动补全
  • 原文地址:https://www.cnblogs.com/lpbca/p/7216716.html
Copyright © 2020-2023  润新知