Вернуть JSON-файл из запросов в Python - PullRequest
0 голосов
/ 01 июня 2018

В прошлом у меня был некоторый успех при использовании запросов POST на других сайтах и ​​получении данных с них, но по какой-то причине у меня возникли проблемы с сайтом метакритики.

Использование chrome и инструментов разработчика, Я вижу, что когда я начинаю печатать в строке поиска, он запускает запрос POST по следующему URL.

searchURL = 'http://www.metacritic.com/g00/3_c-6bbb.rjyfhwnynh.htr_/c-6RTWJUMJZX77x24myyux3ax2fx2fbbb.rjyfhwnynh.htrx2ffzytx78jfwhmx3fn65h.rfwpx3dcmw_$/$'

Я также знаю, что мои заголовки должны быть следующими, чтобы получитьответ

headers = {'User-Agent' : "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

Когда я запускаю это, я получаю код состояния 200, который указывает, что это сработало, но мой текст ответа не соответствует ожиданиям.Я получаю содержимое всей страницы, когда ожидаю json результатов поиска.Что мне здесь не хватает?

title = 'Grand Theft Auto'

#search request using POST
r = requests.post(searchURL, data = {'searchTerm' : title}, headers = headers)

print(r.status_code)

print(r.text)

Вы можете увидеть на изображениях ниже, что я ожидаю получить.

Заголовки

Ответ

1 Ответ

0 голосов
/ 01 июня 2018

Не уверен насчет разницы - возможно, связанной с GDPR, так как я живу в Европе, или потому что я установил DNT (Не отслеживать) в True в Chrome, но для меня запросы автозаполнения Metacritic отправляют просто на http://www.metacritic.com/autosearch спараметры search_term устанавливаются на значение поиска и search_filter устанавливаются на all:

enter image description here

На ваших снимках экрана, я думаю, URL для автозаполненияв вашем браузере создается с идентификатором вашей сессии, может быть, чтобы избежать вещей, которые вы собираетесь делать:)

Так что в вашем случае я бы попытался в следующем порядке:

  • опубликовать в/autosearch URL-адрес, и если это не сработает
  • выясните логику записи идентификатора сеанса для URL-адреса, а затем сделайте начальный запрос в коде, чтобы получить идентификатор сеанса и работать с этим
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...