簡體   English   中英

urllib2.URLError: <urlopen error [Errno 11004] getaddrinfo failed>

[英]urllib2.URLError: <urlopen error [Errno 11004] getaddrinfo failed>

如果我跑:

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

即使我使用其他網址,我也會遇到同樣的錯誤。

我很確定我的計算機或路由器上沒有運行防火牆,而且互聯網(來自瀏覽器)運行正常。

在我的情況下,問題是當我沒有代理時,某些安裝在我的機器上定義了一個環境變量http_proxy

刪除http_proxy環境變量修復了問題。

該站點的DNS記錄使Python以一種特殊的方式使DNS查找失敗:它找到了條目,但零關聯的IP地址。 (使用nslookup驗證。)因此, 11004,WSANO_DATA

使用“www。”為網站添加前綴。 並再次嘗試請求。 (使用nslookup驗證其結果也不同。)

這與Python Requests模塊的失敗方式基本相同:

requests.exceptions.ConnectionError:HTTPConnectionPool(host ='...',port = 80):使用url超出最大重試次數:/(由此引起:[Errno 11004] getaddrinfo failed)

您可能需要使用代理。 檢查您的正常瀏覽器設置以找出哪些。 看一下使用urllib2從公司防火牆后面打開網站 - 11004 getaddrinfo因解決方案的類似問題而失敗

如果這是一個網絡級問題,這可能無法幫助您,但您可以通過在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

要解決此問題:

  1. 讓我們知道運行腳本的操作系統和Python的版本
  2. 在同一台機器上的命令提示符下,執行ping google.com並觀察是否有效(或者說“無法找到主機”)
  3. 如果(2)工作,打開該機器上的瀏覽器(如果在Windows上嘗試IE )並嘗試在那里打開“google.com”。 如果出現問題,請仔細查看“Internet選項/連接/ LAN設置”中的代理設置

讓我們知道它是如何進行的。

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

為我工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM