Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误时转到列表中的下一项_Python_Python 2.7 - Fatal编程技术网

Python 错误时转到列表中的下一项

Python 错误时转到列表中的下一项,python,python-2.7,Python,Python 2.7,我正在从一个列表中提取网站,并想测试它们是向上还是向下。下面的代码只要启动就可以正常工作,但一旦其中一个URL出现问题,我就会收到一条错误消息,整个脚本就会停止 我想要实现的是:错误消息==网站不工作,所以打印下来并移动到列表中的下一项 import urllib2 from urllib2 import Request, urlopen, HTTPError, URLError def checkurl(z): user_agent = 'Mozilla/20.0.1 (co

我正在从一个列表中提取网站,并想测试它们是向上还是向下。下面的代码只要启动就可以正常工作,但一旦其中一个URL出现问题,我就会收到一条错误消息,整个脚本就会停止

我想要实现的是:错误消息==网站不工作,所以打印下来并移动到列表中的下一项

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

def checkurl(z):
    user_agent = 'Mozilla/20.0.1 (compatible; MSIE 5.5; Windows NT)'
    headers = { 'User-Agent':user_agent }
    link = "http://"+z
    req = Request(link, headers = headers)
    try:
        page_open = urlopen(req)
    except HTTPError, e:
        print "down"
    else:
        print 'up'
    #print urllib2.urlopen('http://'+z).read()


Traceback (most recent call last):
  File "/home/user/Videos/python/onion/qweqweqweq.py", line 48, in <module>
    checkurl(x)
  File "/home/user/Videos/python/onion/qweqweqweq.py", line 23, in checkurl
    page_open = urlopen(req)
  File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 401, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 419, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 379, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1211, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1178, in do_open
    h.request(req.get_method(), req.get_selector(), req.data, headers)
  File "/usr/lib/python2.7/httplib.py", line 962, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 996, in _send_request
    self.endheaders(body)
  File "/usr/lib/python2.7/httplib.py", line 958, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 818, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 780, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 761, in connect
    self.timeout, self.source_address)
  File "/home/user/Videos/python/onion/qweqweqweq.py", line 5, in create_connection
    sock.connect(address)
  File "/usr/lib/python2.7/dist-packages/socks.py", line 369, in connect
    self.__negotiatesocks5(destpair[0],destpair[1])
  File "/usr/lib/python2.7/dist-packages/socks.py", line 236, in __negotiatesocks5
    raise Socks5Error(ord(resp[1]),_generalerrors[ord(resp[1])])
TypeError: __init__() takes exactly 2 arguments (3 given)
导入urllib2
来自urllib2导入请求、urlopen、HTTPError、URLError
def checkurl(z):
用户_代理='Mozilla/20.0.1(兼容;MSIE 5.5;Windows NT)'
headers={'User-Agent':User\u-Agent}
link=“http://”+z
req=请求(链接,标题=标题)
尝试:
页面_open=urlopen(请求)
除HTTPError外,e:
打印“向下”
其他:
打印
#打印urlib2.urlopen('http://'+z).read()
回溯(最近一次呼叫最后一次):
文件“/home/user/Videos/python/onion/qweq.py”,第48行,在
检查URL(x)
文件“/home/user/Videos/python/onion/qweq.py”,第23行,在checkurl中
页面_open=urlopen(请求)
文件“/usr/lib/python2.7/urllib2.py”,urlopen中的第127行
return\u opener.open(url、数据、超时)
文件“/usr/lib/python2.7/urllib2.py”,第401行,打开
响应=自身打开(请求,数据)
文件“/usr/lib/python2.7/urllib2.py”,第419行,打开
"开放",
文件“/usr/lib/python2.7/urllib2.py”,第379行,在调用链中
结果=func(*args)
文件“/usr/lib/python2.7/urllib2.py”,第1211行,在http\u open中
返回self.do_open(httplib.HTTPConnection,req)
文件“/usr/lib/python2.7/urllib2.py”,第1178行,打开
h、 请求(请求获取方法(),请求获取选择器(),请求数据,标题)
文件“/usr/lib/python2.7/httplib.py”,第962行,在请求中
self.\u发送请求(方法、url、正文、标题)
文件“/usr/lib/python2.7/httplib.py”,第996行,在发送请求中
self.endheaders(主体)
文件“/usr/lib/python2.7/httplib.py”,第958行,在endheaders中
自发送输出(消息体)
文件“/usr/lib/python2.7/httplib.py”,第818行,在发送输出中
self.send(msg)
文件“/usr/lib/python2.7/httplib.py”,第780行,在send中
self.connect()
文件“/usr/lib/python2.7/httplib.py”,第761行,在connect中
self.timeout,self.source\u地址)
文件“/home/user/Videos/python/onion/qweq.py”,第5行,在create_connection中
sock.connect(地址)
文件“/usr/lib/python2.7/dist packages/socks.py”,第369行,在connect中
self.\uu negotiatesocks5(目的地对[0],目的地对[1])
文件“/usr/lib/python2.7/dist packages/socks.py”,第236行,in_uunegotiatesocks5
raise SOCKS5错误(ord(响应[1]),_一般错误[ord(响应[1]))
TypeError:\uuuu init\uuuuu()正好接受2个参数(给定3个)

您正在捕获
HTTPError
,但抛出的是
Socks5Error

以回答“是否可以假设网站在不考虑错误的情况下已关闭”,然后这样做:

req = Request(link, headers = headers)
try:
    page_open = urlopen(req)
except:
    print "down"
else:
    print 'up'

您的
except
子句中缺少
Socks5Error
。看看回溯:

raise Socks5Error(ord(resp[1]),_generalerrors[ord(resp[1])])

请注意,如果使用而不是
urllib2
,则不会发生这种情况。界面更清晰,文档更好。

发布错误回溯会很有帮助……您确定URL正确吗(即
z
的内容)?您正在使用的
z
值之一似乎无效(导致网络模块出现故障)。您好@isedev。我是一个有点呆头呆脑的人,但是有没有可能假设不管出现什么错误,网站都已关闭,然后转到列表中的下一项?刚刚尝试了这个,它似乎起了作用!非常感谢!另外,我真的希望将来有一天能达到和你们一样的水平……为什么要投反对票?它可能并不优雅,但它是评论中实际问题的唯一答案。