#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
заголовок запроса. Используйте его в коде,