Python urllib2 Исключение URLError?

Я установил Python 2.6.2 ранее на компьютере под управлением Windows XP и выполнил следующий код:

import urllib2 import urllib page = urllib2.Request('http://www.python.org/fish.html') urllib2.urlopen( page ) 

Я получаю следующую ошибку.

 Traceback (most recent call last):<br> File "C:\Python26\test3.py", line 6, in <module><br> urllib2.urlopen( page )<br> File "C:\Python26\lib\urllib2.py", line 124, in urlopen<br> return _opener.open(url, data, timeout)<br> File "C:\Python26\lib\urllib2.py", line 383, in open<br> response = self._open(req, data)<br> File "C:\Python26\lib\urllib2.py", line 401, in _open<br> '_open', req)<br> File "C:\Python26\lib\urllib2.py", line 361, in _call_chain<br> result = func(*args)<br> File "C:\Python26\lib\urllib2.py", line 1130, in http_open<br> return self.do_open(httplib.HTTPConnection, req)<br> File "C:\Python26\lib\urllib2.py", line 1105, in do_open<br> raise URLError(err)<br> URLError: <urlopen error [Errno 11001] getaddrinfo failed><br><br><br> 

5 Solutions collect form web for “Python urllib2 Исключение URLError?”

 import urllib2 response = urllib2.urlopen('http://www.python.org/fish.html') html = response.read() 

Ты делаешь это неправильно.

Посмотрите в источнике urllib2 в строке, указанной трассировкой:

 File "C:\Python26\lib\urllib2.py", line 1105, in do_open raise URLError(err) 

Там вы увидите следующий фрагмент:

  try: h.request(req.get_method(), req.get_selector(), req.data, headers) r = h.getresponse() except socket.error, err: # XXX what error? raise URLError(err) 

Таким образом, похоже, что источником является ошибка сокета, а не ошибка, связанная с протоколом HTTP. Возможные причины: вы не в сети, вы находитесь за ограничительным брандмауэром, ваш DNS отключен, …

Все это в стороне от того факта, что, как указал mcandre , ваш код неправильный.

Ошибка разрешения имени.

getaddrinfo используется для разрешения имени хоста ( python.org ) в вашем запросе. Если это не удается, это означает, что имя не может быть разрешено, потому что:

  1. Он не существует или записи устарели (маловероятно, python.org – хорошо зарекомендовавшее себя имя домена)
  2. Ваш DNS-сервер отключен (маловероятно: если вы можете просматривать другие сайты, вы можете получить эту страницу через Python)
  3. Брандмауэр блокирует Python или ваш скрипт от доступа к Интернету (скорее всего, брандмауэр Windows иногда не спрашивает вас, хотите ли вы разрешить приложение)
  4. Вы живете на древнем кладбище вуду. (маловероятно, если это так, вы должны выйти)

Windows Vista, python 2.6.2

Это 404 страница, не так ли?

 >>> import urllib2 >>> import urllib >>> >>> page = urllib2.Request('http://www.python.org/fish.html') >>> urllib2.urlopen( page ) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python26\lib\urllib2.py", line 124, in urlopen return _opener.open(url, data, timeout) File "C:\Python26\lib\urllib2.py", line 389, in open response = meth(req, response) File "C:\Python26\lib\urllib2.py", line 502, in http_response 'http', request, response, code, msg, hdrs) File "C:\Python26\lib\urllib2.py", line 427, in error return self._call_chain(*args) File "C:\Python26\lib\urllib2.py", line 361, in _call_chain result = func(*args) File "C:\Python26\lib\urllib2.py", line 510, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 404: Not Found >>> 

диджей

Во-первых, я не вижу причин для импорта urllib; Я только когда-либо видел, что urllib2 используется для замены urllib полностью, и я не знаю никакой функциональности, полезной для urllib и все же отсутствует в urllib2.

Затем я замечаю, что http://www.python.org/fish.html дает мне 404 ошибку. (Это не объясняет обратную трассировку / исключение, которое вы видите. Я получаю urllib2.HTTPError: HTTP Error 404: Not Found

Обычно, если вы просто хотите сделать выборку по умолчанию для веб-страниц (без добавления специальных HTTP-заголовков, выполнения каких-либо POST и т. Д.), Тогда достаточно:

 req = urllib2.urlopen('http://www.python.org/') html = req.read() # and req.close() if you want to be pedantic 
 
Interesting Posts for Van-Lav

Python: быстрый и эффективный способ записи большого текстового файла

Разница между sort_values ​​и sort_index

python, сохраняющий имена путей с прямой и обратной косой чертой

Отобразить таблицу объектов django

Есть ли простой способ сделать тайм-аут сеанса в колбе?

python click help форматирование новой строки

Как добавить новый столбец с выделенными значениями из другого столбца в Python

Как обнаружить перегрузку метода в подклассах в python?

Назначение переменной из родительской функции: «Локальная переменная, указанная перед назначением»

Как я могу перевести следующее имя файла в регулярное выражение в Python?

Почему «pip install hwrt –upgrade» обновляется до произвольной версии (иногда также понижается)?

Django QuerySet запрашивает или фильтрует значение «Нечетное» и / или «Четное» в определенном поле

Заменить одиночные кавычки двойным с исключением некоторых элементов

Передача кортежа между двумя панелями в wxPython

Python Unicode object и C API (получение char * из объектов pyunicode)

Python - лучший язык программирования в мире.