Я заметил, что для URL-адресов API некоторых веб-сайтов возврат через браузер осуществляется через сервисного работника, что вызвало проблемы с очисткой этих API.
Обратите внимание на следующее:
https://www.sephora.co.id/api/v2.3/products?filter[category]=makeup/face/bronzer&page[size]=30&page[number]=1&sort=sales&include=variants,brand
Данные отображаются при вставке URL-адреса в браузер Однако это выдает ошибку 422, когда я пытаюсь автоматизировать сбор этих данных в Python с помощью следующего кода:
import requests #API url url = 'https://www.sephora.co.id/api/v2.3/products?filter[category]=makeup/face/bronzer&page[size]=30&page[number]=1&sort=sales&include=variants,brand' #The response is always 422 response = requests.get(url)
Я заметил, что при вызове URL-адреса API в браузере возвращается ответ через службуработник.Поэтому мои вопросы, есть ли способ получить ответ 200 через библиотеку запросов Python?
Похоже, что серверу требуется заголовок Accept-Language. Код ниже теперь возвращает 200.
Accept-Language
import requests url = 'https://www.sephora.co.id/api/v2.3/products?filter[category]=makeup/face/bronzer&page[size]=30&page[number]=1&sort=sales&include=variants,brand' headers = {'Accept-Language': 'en-gb'} response = requests.get(url, headers=headers)
(Проверяется путем проверки успешного запроса через браузер, добавления всех заголовков как естьна запрос Python, а затем удаляя по одному.)