urllib2.URLError: <ошибка urlopen [Errno 11004] сбой getaddrinfo> - PullRequest
15 голосов
/ 17 февраля 2011

Если я запускаю:

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

, даже если я использую другой URL, я получаю ту же ошибку.

Я почти уверен, что на моем компьютере или маршрутизаторе не работает брандмауэри интернет (из браузера) работает нормально.

Ответы [ 6 ]

5 голосов
/ 02 июля 2013

Проблема, в моем случае, заключалась в том, что некоторые установки в какой-то момент определяли переменную окружения http_proxy на моем компьютере, когда у меня не было прокси.

Удаление переменной среды http_proxy устранило проблему.

4 голосов
/ 03 июня 2013

DNS-запись сайта такова, что Python своеобразным образом завершает поиск DNS: он находит запись, но ноль ассоциированных IP-адресов. (Проверьте с помощью nslookup.) Следовательно, 11004, WSANO_DATA .

Префикс сайта с «www.» и попробуйте запрос еще раз. (Используйте nslookup, чтобы проверить, что его результат также отличается.)

Сбой по сути аналогичен модулю Python Requests :

reports.exceptions.ConnectionError: HTTPConnectionPool (host = '...', port = 80): превышено максимальное количество попыток с URL: / (вызвано: [Errno 11004] сбой getaddrinfo)

1 голос
/ 17 февраля 2011

Для устранения проблемы:

  1. сообщите нам, на какой ОС запущен скрипт и какая версия Python
  2. В командной строке на той же машине выполните ping google.com и посмотрите, работает ли это (или вы говорите: «Не удалось найти хост»)
  3. Если (2) работает, откройте браузер на этом компьютере (попробуйте в IE если в Windows) и попробуйте открыть там «google.com». Если есть проблема, внимательно изучите настройки прокси-сервера в Свойства обозревателя / Подключения / Параметры локальной сети

Дайте нам знать, как оно пойдет в ту или иную сторону.

1 голос
/ 17 февраля 2011

Это может не помочь вам, если это проблема сетевого уровня, но вы можете получить некоторую отладочную информацию, установив 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

1 голос
/ 17 февраля 2011

Вам, вероятно, нужно использовать прокси. Проверьте ваши обычные настройки браузера, чтобы узнать, какие. Взгляните на открытие веб-сайтов с использованием urllib2 из-за корпоративного брандмауэра - 11004 getaddrinfo не удалось для аналогичной проблемы с решением.,

0 голосов
/ 05 октября 2018

добавляет s к http, т.е. urllib2.urlopen ('https://google.com')

работал для меня

...