実行した場合:
urllib2.urlopen('http://google.com')
別のURLを使用しても同じエラーが発生します。
私のコンピューターまたはルーターでファイアウォールが実行されておらず、インターネット(ブラウザーから)は正常に動作しています。
私の場合の問題は、プロキシがない場合に、一部のインストールで、ある時点で私のマシンに環境変数http_proxyが定義されたことでした。
http_proxy環境変数を削除すると、問題が修正されました。
このサイトのDNSレコードは、Pythonが特殊な方法でDNSルックアップに失敗したものです。エントリは見つかりましたが、関連付けられたIPアドレスがゼロです。(nslookupで確認してください。)したがって、 11004、WSANO_DATA 。
サイトの先頭に「www」を付けます。リクエストを再試行してください。 (nslookupを使用して、結果が異なることも確認します。)
これは、 Python Requests module を使用した場合と基本的に同じように失敗します。
requests.exceptions.ConnectionError:HTTPConnectionPool(Host = '...'、port = 80):次のURLで最大再試行回数を超えました:/(原因:[Errno 11004] getaddrinfoが失敗しました)
おそらくプロキシを使用する必要があります。通常のブラウザ設定を確認して、どれかを確認してください。 企業ファイアウォールの背後からurllib2を使用してWebサイトを開く-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
が機能するかどうかを確認します(または「ホストが見つかりませんでした」と表示されます)。それがどのように進むかを教えてください。
httpにsを追加します。つまり、urllib2.urlopen( ' https://google.com ')
私のために働いた