Urllib2.URLError: <ошибка urlopen [Errno 11004] getaddrinfo не удалось>
Если я запустил:
urllib2.urlopen('http://google.com')
даже если я использую другой URL-адрес, я получаю ту же ошибку.
Я уверен, что на моем компьютере или маршрутизаторе нет брандмауэра, и интернет (из браузера) отлично работает.
Ответы
Ответ 1
DNS-запись сайта такова, что Python не выполняет поиск DNS по-своему: он находит запись, но имеет нулевой IP-адрес. (Проверить с помощью nslookup.) Следовательно, 11004, WSANO_DATA.
Префикс сайта "www." и повторите попытку. (Используйте nslookup, чтобы проверить, что его результат тоже отличается.)
Это происходит не так, как с Python Requests module:
request.exceptions.ConnectionError: HTTPConnectionPool (host = '...', port = 80): Максимальное количество попыток превышено с url:/(вызвано: [Errno 11004] getaddrinfo сбой)
Ответ 2
В моем случае проблема заключалась в том, что некоторая установка в какой-то момент определяла переменную среды http_proxy на моей машине, когда у меня не было прокси.
Удаление переменной окружения http_proxy устраняет проблему.
Ответ 3
Вероятно, вам нужно использовать прокси. Проверьте свои обычные настройки браузера, чтобы узнать, какие. Взгляните на открытие веб-сайтов с использованием urllib2 из-за корпоративного брандмауэра - 11004 getaddrinfo не удалось для аналогичной проблемы с решением.
Ответ 4
Это может не помочь вам, если это проблема сетевого уровня, но вы можете получить некоторую информацию об отладке, установив debuglevel на httplib. Попробуйте следующее:
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
Ответ 5
Чтобы устранить проблему:
- сообщите нам, какая ОС работает под управлением script и какая версия Python
- В командной строке на этом же компьютере сделайте
ping google.com
и наблюдайте, работает ли это (или вы скажете "не удалось найти хост" ).
- Если (2) работал, откройте браузер на этом компьютере (попробуйте IE, если в Windows) и попробуйте открыть там "google.com". Если есть проблема, внимательно посмотрите на настройки прокси-сервера в настройках Internet/Connections/LAN Settings
Сообщите нам, как это происходит в любом случае.