2016-11-22 1 views
0

Я пытаюсь очистить веб-страницы, используя Python у меня новое задание, используя тот же метод, который я использовал на моих предыдущих 2 заданиях, кроме теперь он не работает. Вот код-IOError: [Ошибка Errno socket] [Errno 11004] getaddrinfo не удалось, когда я пытаюсь открыть URL-адрес

import urllib 
from urllib import urlopen 
url = 'http://www.google.com' 
html = urllib.urlopen(url).read() 

И ошибка this-

Traceback (most recent call last): 
    File "<pyshell#3>", line 1, in <module> 
    html = urllib.urlopen(url).read() 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\urllib.py", line 87, in urlopen 
    return opener.open(url) 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\urllib.py", line 213, in open 
    return getattr(self, name)(url) 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\urllib.py", line 350, in open_http 
    h.endheaders(data) 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 1053, in endheaders 
    self._send_output(message_body) 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 897, in _send_output 
    self.send(msg) 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 859, in send 
    self.connect() 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\httplib.py", line 836, in connect 
    self.timeout, self.source_address) 
    File "C:\Users\NREARDO2\AppData\Local\Continuum\Anaconda2\lib\socket.py", line 557, in create_connection 
    for res in getaddrinfo(host, port, 0, SOCK_STREAM): 
IOError: [Errno socket error] [Errno 11004] getaddrinfo failed 

Является ли это потому, что я работаю в конгломерат и есть протокол безопасности мешает мне сделать это или есть другой способ обойти это?

+0

см ниже резьбы - Вам необходимо пройти атрибут прокси https://stackoverflow.com/questions/7334199/getaddrinfo-failed-what-does-that-mean/48788583#48788583 – Vinay

ответ

0

Согласно Windows Sockets Error Codes - MSDN, ошибка 11004 означает:

WSANO_DATA 11004

Valid name, no data record of requested type.

The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for. The usual example for this is a host name-to-address translation attempt (using gethostbyname or WSAAsyncGetHostByName) which uses the DNS (Domain Name Server). An MX record is returned but no A record—indicating the host itself exists, but is not directly reachable.

В человеческом плане это означает, что ваше имя хоста (извлеченные из URL) действует формат мудр, но не может быть решен к действительный IP.

В других вопросах (1, 2, 3, 4, 5), люди сообщают о наличии этой проблемы, если они:

  • имеют имя отображается на недопустимый IP (например, 0.0.0.0) в своем файле hosts
  • формат URL-адрес неправильно (например, забывая третий слэш в file:/// или опечатках в IP)
  • использовать неразрешимое имя DNS
  • имеет http_proxy переменные среды или реестр proxy settings указывающих на несуществующий хост (если есть другие проблемы с настройками прокси или прокси-сервером, то они приведут к другой ошибке, это не один)

В вашем кейс, 2) (и, вероятно, 4) тоже), не может быть и речи, поэтому проверьте остальные: если вы можете resolve the name with nslookup и if it's present in hosts.

+0

Я не после того, что вы» re упомянутый здесь. Можете ли вы предоставить мне какой-то код или процедуру, чтобы определить, как обойти это? –

+0

Привет говорит: проверьте свой сервер имен. Похоже, вы нажимаете на проблему с конфигурацией на своем поле. Например. запустив nslookup изнутри cmd в google – frlan

+0

@NickReardon Я добавил некоторые ссылки для ссылок, прочитал об этом для получения дополнительной информации. Суть в том, что проблема является внешней по отношению к вашему коду и очень хорошо получается из конфигурации вашей машины и/или корпоративной сети. Вы можете диагностировать его, как предлагается выяснить, что конкретно не так, и что вы можете с этим поделать. –