Как получить данные в виде json из запроса к API Озона?
В документации Ozonа указано, что все запросы POST, но мне нужно получить только данные об отчётах. И что бы на выходе был json.
import requests
import json
def get_data():
headers = {
"Host": "api-seller.ozon.ru",
"Client-Id": "XXXX",
"Api-Key": "XXXX",
"Content-Type": "application/json"
}
data = {
"language": "DEFAULT"
}
url = requests.post("https://api-seller.ozon.ru/v1/product/certificate/status/list", headers=headers, data=data)
print(url.text)
При выполнении этого запроса на получение Отчёта об остатках получаю следующий ответ:
{"result":{"code":"XXXX"}}
Каким образом можно получить на запрос ответ с полными данными?
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Результат - json в виде словаря словарей
Распарсить ответ можно через метод json:
data = url.json()
А код извлекайте по ключам словаря:
print(data["result"]["code"])
Автор решения: Rett_oo
→ Ссылка
Я смог решить свою проблему, следующий код делает то, что мне нужно, получает данные из отчёта:
import requests
import json
import time
def get_data_ozon():
headers = {
"Host": "api-seller.ozon.ru",
"Client-Id": "XXXX",
"Api-Key": "XXXX",
"Content-Type": "application/json"
}
get_url = "https://api-seller.ozon.ru/v1/report/stock/create"
json_data = {"language": "DEFAULT"}
# Получение кода который используется как json для второго запроса
id_code = requests.post(get_url,headers=headers, json=json_data).json()
# Поскольку сервер отвечает не моментально необходимо делать задержку перед вторым запросом
time.sleep(1)
# Получение информации об отчёте
resp_data = requests.post("https://api-seller.ozon.ru/v1/report/info", headers=headers, json=id_code["result"]).json()
# print(resp_data)
# Файл с необходимыми данными
# csv_file = requests.get(resp_data["result"]["file"]).text
get_data_ozon()