2016-11-22 50 views
0

我想在網上刮我使用Python新作業使用我在以前的2個工作中使用的相同方法除外它現在不工作。這裏的代碼 -IOError:[Errno套接字錯誤] [Errno 11004] getaddrinfo失敗,當我試圖打開一個url

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

請參考下話題 - 你需要通過代理屬性 https://stackoverflow.com/questions/7334199/getaddrinfo-failed-what-does-that-mean/48788583#48788583 – Vinay

回答

0

Windows Sockets Error Codes - MSDN,錯誤11004意味着:

WSANO_DATA 11004

Valid name, no data record of requested type.

The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for. The usual example for this is a host name-to-address translation attempt (using gethostbyname or WSAAsyncGetHostByName) which uses the DNS (Domain Name Server). An MX record is returned but no A record—indicating the host itself exists, but is not directly reachable.

對人類而言,這意味着您的主機名稱(從URL中提取)是有效的格式明智的,但不能被解析爲有效的IP。

在其他問題(12345),人報告有這個問題,如果他們:

  • 在他們hosts文件映射到一個無效的IP(如0.0.0.0)名稱
  • 錯誤地格式化URL(例如忘記file:///中的第三個斜槓或輸入IP)
  • 使用無法解析的DNS名稱
  • http_proxy環境變量或註冊表proxy settings指向一個不存在的主機(如果有其他問題,代理設置或代理,他們會導致另一個錯誤,沒有這一項)

在你情況,2)(也可能是4)也是沒有問題的,所以檢查其他人:如果你可以resolve the name with nslookupif it's present in hosts

+0

我不是下面你」在這裏說。你能否提供一些代碼或程序來確定如何解決此問題? –

+0

嗨告訴你:檢查你的名稱服務器。它看起來像是在你的盒子上發生配置問題。例如。通過從cmd內運行nslookup到谷歌 – frlan

+0

@NickReardon我添加了一些howto鏈接,閱讀了解更多信息。要點是:問題在代碼的外部,很可能來自您的機器和/或企業網絡配置。您可以按照建議診斷它,找出具體的錯誤以及您可以對此做些什麼。 –

相關問題