Получите данные индекса фрахта в python

#python #web-scraping #python-requests

Вопрос:

Я пытаюсь получить данные с этого веб-сайта, https://en.macromicro.me/charts/947/commodity-ccfi-scfi , для Китая и Шанхайского индекса контейнерных перевозок.

Я понимаю, что данные вызываются из API, как мне узнать, как выполняется вызов и как извлечь его с помощью python?

Я новичок в html в целом, поэтому понятия не имею, с чего начать.

Я пытался,

 import requests

url = "https://en.macromicro.me/charts/data/947/commodity-ccfi-scfi"

resp = requests.get(url)
resp = resp.json()
 

Но ответ таков <Response [404]>

Если я изменю URL-адрес на https://en.macromicro.me/charts/data/947/ ответ, это {'success': 0, 'data': [], 'msg': 'error #644'}

Ответ №1:

Попробуйте сделать следующее

 import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
    'Referer': 'https://en.macromicro.me/charts/947/commodity-ccfi-scfi',
    'X-Requested-With': 'XMLHttpRequest',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Authorization': 'Bearer 9633cefba71a598adae0fde0b56878fe',
    'Cookie': 'PHPSESSID=n74gv10hc8po7mrj491rk4sgo1; _ga=GA1.2.1231997091.1631627585; _gid=GA1.2.1656837390.1631627585; _gat=1; _hjid=c52244fd-b912-4d53-b0e3-3f11f430b51c; _hjFirstSeen=1; _hjAbsoluteSessionInProgress=0'}

r = requests.get('https://en.macromicro.me/charts/data/947', headers=headers)
print(r.json())
 

выход

 {'success': 1, 'data': {' ...}
 

Комментарии:

1. Токен на предъявителя или идентификатор сеанса php, вероятно, не будут работать последовательно

2. Я согласен — его следует получать время от времени. (хорошая мысль)

3. не работает, как я могу получить эти параметры?

4. В браузере выполните команду F12 -> Сеть ->> XHR и посмотрите значение >> Authorization заголовок запроса. Используйте его в коде,