我正在尝试使用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
这是因为我在一家企业集团工作吗?有一个安全协议阻止我这样做,还是有另一种方法可以绕过它?
答案 0 :(得分:0)
根据Windows Sockets Error Codes - MSDN,错误11004表示:
WSANO_DATA 11004
有效名称,没有所请求类型的数据记录。
请求的名称有效且在数据库中找到,但它没有正确的关联数据。该 通常的例子是主机名到地址的转换尝试 (使用
gethostbyname
或WSAAsyncGetHostByName
)使用DNS (域名服务器)。返回MX记录但没有A. 记录 - 指示主机本身存在,但不是直接的 可到达的。
就人类而言,这意味着您的主机名(从网址中提取)格式有效,但无法解析为有效的IP。
在其他问题(1,2,3,4,5)中,如果有以下问题,人们会报告此问题:
0.0.0.0
文件中将名称映射到无效的IP(如hosts
)file:///
中的第三个斜杠或错误输入IP)http_proxy
环境变量或注册表proxy settings指向不存在的主机(如果代理设置或代理存在其他问题,则会导致另一个错误,而不是此错误)在你的情况下,2)(也可能是4)也是不可能的,所以检查其他人:如果你可以resolve the name with nslookup
和if it's present in hosts
。