Почему я не могу получить метод urlopen() Python для работы в Windows?
почему этот простой код Python не работает?
import urllib
file = urllib.urlopen('http://www.google.com')
print file.read()
это ошибка, которую я получаю:
Traceback (most recent call last):
File "C:workspaceGarchUpdatesrcPractice.py", line 26, in <module>
file = urllib.urlopen('http://www.google.com')
File "C:Python26liburllib.py", line 87, in urlopen
return opener.open(url)
File "C:Python26liburllib.py", line 206, in open
return getattr(self, name)(url)
File "C:Python26liburllib.py", line 345, in open_http
h.endheaders()
File "C:Python26libhttplib.py", line 892, in endheaders
self._send_output()
File "C:Python26libhttplib.py", line 764, in _send_output
self.send(msg)
File "C:Python26libhttplib.py", line 723, in send
self.connect()
File "C:Python26libhttplib.py", line 704, in connect
self.timeout)
File "C:Python26libsocket.py", line 514, in create_connection
raise error, msg
IOError: [Errno socket error] [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
Я пробовал это с несколькими разными страницами, но я никогда не могу получить urlopen
метод для правильного выполнения.
3 ответов
ваш код здесь не проблема.
У вас есть какие-либо настройки прокси-сервера в IE?
Это говорит документация python для urllib.urlopen:
"""
В среде Windows, если переменные среды прокси не заданы,
настройки прокси-сервера получены из настроек интернета реестра
раздел.
"""
попробуйте использовать urllib2, если возможно изменить некоторые строки кода. Установить параметр timeout в секундах
например:
urllib2.urlopen(http://www.abc.com/api, timeout=20)
здесь соединение сохраняется в течение более длительного времени. Поэтому, если, например, Вы читаете слишком большой XML-файл, это позволяет избежать неполного чтения.
приведенный выше код не будет работать, если сетевое соединение работает медленно или внезапно сломается.
Если у вас есть wireshark, проверьте, что отправляется, и если что-то возвращается вообще. Это поможет вам отладить проблему, если вы видите запрос GET отправки.
также я помню, что у меня была аналогичная проблема, как это однажды, то, что я сделал, было очистить мой кэш dns
(ipconfig /flushdns) и перезапущен. Это исправило мою проблему. Думаю, попробовать не повредит.