urllib2.URLError:<urlopen error =“”[errno =“”11004] =“”getaddrinfo =“”failed =“”> </urlopen>

时间:2011-02-16 22:30:39

标签: python urllib2

如果我跑:

urllib2.urlopen('http://google.com')

即使我使用其他网址,我也会遇到同样的错误。

我很确定我的计算机或路由器上没有运行防火墙,而且互联网(来自浏览器)运行正常。

6 个答案:

答案 0 :(得分:5)

在我的情况下,问题是,当我没有代理时,某些安装在我的机器上定义了一个环境变量 http_proxy

删除 http_proxy 环境变量修复了问题。

答案 1 :(得分:4)

网站的DNS记录是这样的,Python以一种特殊的方式使DNS查找失败:它找到了条目,但零关联的IP地址。 (使用nslookup验证。)因此,11004, WSANO_DATA

使用“www。”为网站添加前缀。并再次尝试请求。 (使用nslookup验证其结果也不同。)

这与Python Requests module

基本相同

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)

解决问题:

  1. 告诉我们运行脚本的操作系统和Python的版本
  2. 在同一台机器上的命令提示符下,执行ping google.com并观察是否有效(或者说“无法找到主机”)
  3. 如果(2)工作,请在该计算机上打开浏览器(如果在Windows上尝试 IE )并尝试在那里打开“google.com”。如果出现问题,请仔细查看“Internet选项/连接/ LAN设置”中的代理设置
  4. 让我们知道它是如何进行的。

答案 5 :(得分:0)

将s添加到http即urllib2.urlopen('https://google.com')

为我工作