[英]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
要解決此問題:
ping google.com
並觀察是否有效(或者說“無法找到主機”) 讓我們知道它是如何進行的。
將s添加到http即urllib2.urlopen(' https://google.com ')
為我工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.