【问题标题】:Urllib2 timeot doesn't workUrllib2 超时不起作用
【发布时间】:2014-03-23 17:24:28
【问题描述】:

我通过这个过程浏览了大量的 url,我使用多个线程。但是我使用的第一个版本

myreq.fp._sock.fp._sock.shutdown(socket.SHUT_RDWR)  

关闭连接似乎不是一直下载所有数据。 另一方面,当我改为使用

#myreq.fp._sock.recv=None # hacky avoidance

有时与某些网站的连接会挂起很长时间。超过一分钟。

代码:

    useragent = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11'}
    request = urllib2.Request(url,None,useragent)
    try : 
        myreq = urllib2.urlopen(request, timeout = threadtimeout)
        html_code = myreq.read()
        myreq.fp._sock.fp._sock.shutdown(socket.SHUT_RDWR)
        #myreq.fp._sock.recv=None # hacky avoidance
        myreq.close()
    except Exception : 
        html_code = ""  

【问题讨论】:

  • " 与某些网站的连接长时间挂起" -- 什么意思?如果您在谈论TIME_WAIT 状态,那么几分钟的延迟是正常的(尽管您的代码中没有任何内容应该等待它)
  • 不,它只是没有按应有的方式响应。无论如何,它与请求库一起工作得更好。
  • “它只是没有按应有的方式响应”——它是如何响应的?它应该如何回应?如果你放弃.shutdown() 电话会发生什么?
  • 我正在尝试从页面中抓取数据。但我在 4 分钟内没有收到其中一些页面的响应,超时时间为 10 秒。当我不使用 .shutdown() 时。当我使用它时,它只会下载一定比例的页面。
  • 它似乎无法处理 pdf 文件,因为某些 url 是指向 pdf 的链接

标签: python http python-2.7 web-scraping urllib2


【解决方案1】:

您可以从Sockets and Layers 设置 urllib2 的超时时间

import socket

timeout = 10
socket.setdefaulttimeout(timeout)

myreq = urllib2.urlopen(request)
html_code = myreq.read()

【讨论】:

  • 你确定这能解决问题吗?我想我以前用过它并没有用,但我现在试试。
  • @Brana 不确定。试一试。它没有被提及,所以我应该建议它。
  • 您熟悉 myreq.fp._sock.fp._sock.shutdown(socket.SHUT_RDWR) 的工作原理吗?
  • 不,不幸的是只有urlliburllib2
【解决方案2】:

这会更好,因为请求会自动处理连接关闭:

    useragent = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11'}

    request = urllib2.Request(url,None,useragent)
    try : 
        import requests
        response = requests.get(url, headers=useragent,timeout = threadtimeout)
        html_code = response.text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2015-02-04
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    相关资源
    最近更新 更多