urllib2.URLError: <urlopen错误 [Errno 11004] getaddrinfo失败>
如果我运行:
urllib2.urlopen('http://google.com')
即使我换了其他网址,我还是会遇到同样的错误。
我很确定我的电脑或路由器上没有防火墙,而且用浏览器上网一切正常。
6 个回答
2
如果问题出在网络层面,这个方法可能帮不了你,但你可以通过在httplib上设置调试级别来获取一些调试信息。试试这个:
import urllib, urllib2, httplib
url = 'http://www.mozillazine.org/atom.xml'
httplib.HTTPConnection.debuglevel = 1
print "urllib"
data = urllib.urlopen(url);
print "urllib2"
request = urllib2.Request(url)
opener = urllib2.build_opener()
feeddata = opener.open(request).read()
这个代码是直接从这里复制过来的,希望没问题: http://bytes.com/topic/python/answers/517894-getting-debug-urllib2
5
这个网站的DNS记录有点奇怪,导致Python在查找DNS时出现了问题:它找到了记录,但没有找到任何关联的IP地址。(可以用nslookup来验证一下。)所以出现了错误代码11004, WSANO_DATA。
试着在网站前面加上'www.',然后再请求一次。(同样可以用nslookup来确认这次的结果是否不同。)
使用Python Requests模块时,问题基本上是一样的:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='...', port=80): 最大重试次数超过,网址:/(原因是:[Errno 11004] getaddrinfo失败)
6
我遇到的问题是,有一次安装程序在我的电脑上设置了一个环境变量http_proxy,而我其实并不需要代理。
把这个http_proxy环境变量删掉后,问题就解决了。