如果我跑:
urllib2.urlopen('http://google.com')
即使我使用其他网址,我也会遇到同样的错误。
我很确定我的计算机或路由器上没有运行防火墙,而且互联网(来自浏览器)运行正常。
答案 0 :(得分:5)
在我的情况下,问题是,当我没有代理时,某些安装在我的机器上定义了一个环境变量 http_proxy 。
删除 http_proxy 环境变量修复了问题。
答案 1 :(得分:4)
网站的DNS记录是这样的,Python以一种特殊的方式使DNS查找失败:它找到了条目,但零关联的IP地址。 (使用nslookup验证。)因此,11004, WSANO_DATA。
使用“www。”为网站添加前缀。并再次尝试请求。 (使用nslookup验证其结果也不同。)
基本相同requests.exceptions.ConnectionError:HTTPConnectionPool(host ='...',port = 80):使用url超出了最大重试次数:/(由此引起:[Errno 11004] getaddrinfo失败)
答案 2 :(得分:1)
您可能需要使用代理。检查您的正常浏览器设置以找出哪些。请查看opening websites using urllib2 from behind corporate firewall - 11004 getaddrinfo failed以了解解决方案的类似问题。
答案 3 :(得分:1)
如果这是网络级问题,这可能无法帮助您,但您可以通过在httplib上设置debuglevel来获取一些调试信息。试试这个:
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
答案 4 :(得分:1)
解决问题:
ping google.com
并观察是否有效(或者说“无法找到主机”)让我们知道它是如何进行的。
答案 5 :(得分:0)
将s添加到http即urllib2.urlopen('https://google.com')
为我工作