urllib2 urlopen работает очень случайно - PullRequest
3 голосов
/ 27 марта 2012

По некоторым причинам эта часть, где я выбираю данные JSON из следующего URL, будет работать только иногда. И иногда он возвращает ошибку 404 и жалуется на отсутствие атрибута заголовка. Он будет работать 100% времени, если я вставлю его в веб-браузер. Так что я уверен, что ссылка не сломана или что-то.

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

AttributeError: 'HTTPError' object has no attribute 'header'

В чем причина и можно ли это исправить? Кстати, я удалил ключ API, поскольку он является закрытым.

try:
    url = "http://api.themoviedb.org/3/search/person?api_key=API-KEY&query=natalie+portman"
    header = { 'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16' }
    req = urllib2.Request(url, None, header)
    f = urllib2.urlopen(req)
except urllib2.HTTPError, e:
    print e.code
    print e.msg
    print e.header
    print e.fp.read()

1 Ответ

6 голосов
/ 27 марта 2012

Как задокументировано здесь , вам необходимо явно принять JSON. Просто добавьте вторую строку после первой.

req = urllib2.Request(url, None, header)
req.add_header('Accept', 'application/json')
...