IOError:[Errno套接字错误] [Errno 11004] getaddrinfo在我尝试打开网址时失败

时间:2016-11-22 13:32:16

标签: python urllib

我正在尝试使用Python在我的新工作中使用我在之前的2个工作中使用的相同方法进行网络搜索,除非它现在不起作用。这是代码 -

import urllib
from urllib import urlopen
url = 'http://www.google.com'
html = urllib.urlopen(url).read()

错误就是这个 -

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    html = urllib.urlopen(url).read()
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\urllib.py", line 87, in urlopen
    return opener.open(url)
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\urllib.py", line 213, in open
    return getattr(self, name)(url)
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\urllib.py", line 350, in open_http
    h.endheaders(data)
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 1053, in endheaders
    self._send_output(message_body)
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 897, in _send_output
    self.send(msg)
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 859, in send
    self.connect()
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 836, in connect
    self.timeout, self.source_address)
  File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\socket.py", line 557, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
IOError: [Errno socket error] [Errno 11004] getaddrinfo failed

这是因为我在一家企业集团工作吗?有一个安全协议阻止我这样做,还是有另一种方法可以绕过它?

1 个答案:

答案 0 :(得分:0)

根据Windows Sockets Error Codes - MSDN,错误11004表示:

  

WSANO_DATA 11004

     

有效名称,没有所请求类型的数据记录。

     

请求的名称有效且在数据库中找到,但它没有正确的关联数据。该   通常的例子是主机名到地址的转换尝试   (使用gethostbynameWSAAsyncGetHostByName)使用DNS   (域名服务器)。返回MX记录但没有A.   记录 - 指示主机本身存在,但不是直接的   可到达的。

就人类而言,这意味着您的主机名(从网址中提取)格式有效,但无法解析为有效的IP。

在其他问题(12345)中,如果有以下问题,人们会报告此问题:

  • 0.0.0.0文件中将名称映射到无效的IP(如hosts
  • 格式化网址错误(例如忘记file:///中的第三个斜杠或错误输入IP)
  • 使用无法解析的DNS名称
  • http_proxy环境变量或注册表proxy settings指向不存在的主机(如果代理设置或代理存在其他问题,则会导致另一个错误,而不是此错误)

在你的情况下,2)(也可能是4)也是不可能的,所以检查其他人:如果你可以resolve the name with nslookupif it's present in hosts