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

Python urllib2.urlopen(z).read()-尝试x秒,然后移动到下一项,python,python-2.7,urllib2,Python,Python 2.7,Urllib2,我有一个x个网站的列表,我想从中获取数据。 代码: 到目前为止,只要一个网站被创建,整个过程就会停止 不可用的我该怎么做才能让urllib2尝试x次,给出一个错误,例如“网站不可用”,然后转到列表中的下一项 也许应该提到这是给洋葱的 import socks import socket def create_connection(address, timeout=None, source_address=None): sock = socks.socksocket() sock.

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

到目前为止,只要一个网站被创建,整个过程就会停止 不可用的我该怎么做才能让urllib2尝试x次,给出一个错误,例如“网站不可用”,然后转到列表中的下一项

也许应该提到这是给洋葱的

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()
您可以使用timeout参数

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

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

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