urllib2.urlopen(z).read() - 尝试x秒然后移动到下一个项目

时间:2014-02-25 21:18:48

标签: python python-2.7 urllib2

我有一个x网站列表,我想从中获取数据。 代码:

import urllib2
from urllib2 import Request, urlopen, HTTPError, URLError

def checkurl(z):
    print urllib2.urlopen('http://'+z).read()

for x in t2w: #t2w is my list
    print x
    checkurl(x)
    print "\n"

截至目前,整个过程一旦网站停止,就会停止 不可用。我该怎么办才能让urllib2尝试x时间,给出错误,例如“网站不可用”,然后转到列表中的下一个项目。

也许应该提到这是针对.onion

import socks
import socket
def create_connection(address, timeout=None, source_address=None):
    sock = socks.socksocket()
    sock.connect(address)
    return sock

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9150)

socket.socket = socks.socksocket
socket.create_connection = create_connection

#####
import urllib2
from urllib2 import Request, urlopen, HTTPError, URLError

def checkurl(z):
    try:
        urllib2.urlopen("http://"+z, timeout=1).read()
    except urllib2.URLError, e:
        raise MyException("Error raised: %r" % e)
    #print urllib2.urlopen('http://'+z).read()

1 个答案:

答案 0 :(得分:0)

您可以使用timeout参数。

try:
    urllib2.urlopen("http://example.com", timeout=1)
except urllib2.URLError, e:
    raise MyException("Error raised: %r" % e)

来自docs

  

可选的timeout参数指定超时(以秒为单位)   阻塞操作,如连接尝试(如果未指定,则   将使用全局默认超时设置)。这实际上只有作用   用于HTTP,HTTPS和FTP连接。