Python urllib2, как избежать ошибок - нужна помощь - PullRequest
0 голосов
/ 01 декабря 2010

Я использую python urllib2 для загрузки страниц из Интернета. Я не использую никакой user_agent и т. Д. Я получаю ниже пример ошибок. Может кто-нибудь сказать мне простой способ избежать их.

http://www.rottentomatoes.com/m/foxy_brown/
The server couldn't fulfill the request.
Error code:  403


http://www.spiritus-temporis.com/marc-platt-dancer-/
The server couldn't fulfill the request.
Error code:  503

http://www.golf-equipment-guide.com/news/Mark-Nichols-(golfer).html!!
The server couldn't fulfill the request.
Error code:  500


http://www.ehx.com/blog/mike-matthews-in-fuzz-documentary!!
We failed to reach a server.
Reason:  timed out
IncompleteRead(5621 bytes read)
Traceback (most recent call last):
    File "download.py", line 43, in <module>
    localFile.write(response.read())
    File "/usr/lib/python2.6/socket.py", line 327, in read
    data = self._sock.recv(rbufsize)
    File "/usr/lib/python2.6/httplib.py", line 517, in read
    return self._read_chunked(amt)
    File "/usr/lib/python2.6/httplib.py", line 563, in _read_chunked
    raise IncompleteRead(value)
IncompleteRead: IncompleteRead(5621 bytes read)

Спасибо
Bala

Ответы [ 2 ]

0 голосов
/ 01 декабря 2010

Для этих более сложных задач вы можете рассмотреть возможность использования механизации, твила или даже селена или ветряной мельницы, которые будут поддерживать более сложные сценарии, включая файлы cookie или поддержку JavaScript.

Для случайных веб-сайтов может быть сложно обойтись только с urllib2 (подписанные куки, кто-нибудь?).

0 голосов
/ 01 декабря 2010

Многим веб-ресурсам для доступа к файлам требуются файлы cookie или другая аутентификация, скорее всего, результатом этого являются ваши 403 кода состояния.

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

Пример 500 даже не существует ...

Ошибка тайм-аута может не требовать "!!", я могу загрузить ресурс только без него.

Я рекомендую вам прочитать коды состояния http.

...