Итак, я хочу использовать отличный модуль запросов Кеннета . Столкнулся с этой проблемой при попытке использовать Freebase API .
По сути, их API выглядит так:
https://www.googleapis.com/freebase/v1/mqlread?query=...
как запрос, они ожидают объект JSON, вот тот, который вернет список вин с их страной и процентным содержанием алкоголя:
[{
"country": null,
"name": null,
"percentage_alcohol": null,
"percentage_alcohol>": 0,
"type": "/food/wine"
}]
Конечно, мы нам придется избегать этого, прежде чем передать его URL-адресу, поэтому фактический запрос будет выглядеть так:
fullurl = 'https://www.googleapis.com/freebase/v1/mqlread?query=%5B%7B%22percentage_alcohol%3E%22%3A+0%2C+%22country%22%3A+null%2C+%22type%22%3A+%22%2Ffood%2Fwine%22%2C+%22name%22%3A+null%2C+%22percentage_alcohol%22%3A+null%7D%5D'
Теперь,
r = requests.get(fullurl)
print r.status_code
>>> 400
, потому что сайт заявляет, что не может проанализировать запрос.
r2 = urllib2.urlopen(fullurl)
print r2.getcode()
>>> 200
Здесь нет проблем, я получаю надлежащий доход. Интересно,
# This is the url of our requests.get request
print urllib2.urlopen(r.url).getcode()
>>> 200
Почему? Я неправильно использую модуль? Или это ошибка в requests
?