#python #python-3.x #web-scraping #python-requests
#python #python-3.x #веб-очистка #python-запросы
Вопрос:
Я пытаюсь получить разные названия продуктов с этой веб-страницы. Названия продуктов, как и в 0041-5053-005
, генерируются динамически. Однако я могу очистить их, используя xhr с соответствующими параметрами.
Для получения требуемых данных необходимо использовать следующие ключ и значение в заголовках.
headers = {
'client_secret': '',
'client_id': '',
'correlation_id': '0196e1f2-fb29-0modod-6125-fcbb6c2c69c1',
}
Вот как я очистил заголовки:
import requests
link = "https://es-be-ux-search.cloudhub.io/api/ux/v2/search?"
payload = {
'queryText': '*:*',
'role': 'rockwell-search',
'spellingCorrect': 'true',
'spellcheckPremium': '10',
'segments': 'Productsv4',
'startIndex': 0,
'numResults': 10,
'facets': '',
'languages': 'en',
'locales': 'en_GLOBAL,en-US',
'sort': 'cat_a',
'collections': 'Literature,Web,Sample_Code',
'site': 'RA'
}
with requests.Session() as s:
r = s.get(link,params=payload,headers=headers)
for item in r.json()['response']['docs']:
print(item['catalogNumber'])
Я заметил, что значение client_secret
и client_id
является статическим, но значение correlation_id
изменяется.
Как я могу использовать значение
correlation_id
в заголовках без жесткого кодирования?
Комментарии:
1. Я думаю, что correlation_id здесь — это то, что генерируется веб-страницей, я бы не стал слишком беспокоиться об этом, если он работает.
2. Вы, вероятно, не хотите делиться этим
client_secret
публично — это секрет по какой-то причине!
Ответ №1:
Идентификатор корреляции используется для сопоставления HTTP-запросов между клиентом и сервером. Подробнее о том, как это работает, см. В этой статье. Похоже, что этот API требует, чтобы идентификатор корреляции присутствовал в заголовках HTTP, но не изменяет ответ на основе его значения. Ответ тот же, если вы даете пустую строку:
headers = {
'client_secret': '...',
'client_id': '...',
'correlation_id': '',
}
Комментарии:
1. Спасибо за ваш ответ @joedeandev. Я мог бы понять, как
correlation ID
это работает, но все же я хотел бы знать, как я могу проанализировать значениеcorrelation ID
. К вашему сведению, я могу проанализировать значениеclient_secret
иclient_id
, хотя я жестко закодировал их здесь.2. @robots.txt Что вы имеете в виду, говоря «проанализировать значение»? Если вы хотите получить значение, отправленное сервером во время запроса, вы можете попробовать прочитать заголовки в объекте ответа: requests.readthedocs.io/en/master/api /. … Идентификатор корреляции определяется и используется исключительно сервером; Я не понимаю, для чего именно он вам нужен.