#python #api
Вопрос:
list = [i for i in range(2321)]
for i in range(0, len(my_list), 100):
my_list[i:i 100]
query_get_data_by_dea_schedule = 'https://api.fda.gov/drug/ndc.json?search=dea_schedule:"{}"amp;limit={}'.format('CII', i)
print(query_get_data_by_dea_schedule)
data_df = pd.DataFrame(pd.read_json(path_or_buf=query_get_data_by_dea_schedule, orient='values', typ='series', convert_dates=False)['results'])
all_data_df = all_data_df.append(data_df)
Я пытаюсь запустить это, чтобы получить данные для 2321 строки, которые поступают из Управления по санитарному надзору за качеством пищевых продуктов и медикаментов для пунктов списка 3. Мне нужно читать по 100 за раз, потому что это предел. Я не уверен, что я здесь делаю не так. Кроме того, правильно ли я читаю это 100 раз за раз, чтобы сохранить его в кадре данных? Он останавливается и выдает мне : HTTPError: Ошибка HTTP 400: Неверный запрос. заранее спасибо.
Комментарии:
1. Были ли вы задушены поставщиками API?
2. в этом ли проблема ? Я не знаю
3. всегда помещайте полное сообщение об ошибке (начинающееся со слова «Обратная связь») в вопрос (не комментарий) в виде текста (не скриншот, не ссылка на внешний портал). Есть и другая полезная информация.
4. с чем вы пытаетесь это сделать
my_list[i:i 100]
? Это бесполезно.5. возможно, разделить код на более простые строки — т. Е. запустите
pd.read_json()
в отдельной строке — и используйтеprint()
, чтобы увидеть, для каких значений вы получаете ошибку.
Ответ №1:
Основываясь на документации, которую вы должны использовать skip
вместо limit
— и использовать всегда limit=100
— как limit=100amp;skip=0
, limit=100amp;skip=100
, limit=100amp;skip=200
limit=100amp;skip=300
, и т. Д.
Минимальный код, который работает для меня:
import pandas as pd
url = 'https://api.fda.gov/drug/ndc.json?search=dea_schedule:"{}"amp;limit={}amp;skip={}'
all_data_df = []
limit = 100
for skip in range(0, 2321, limit):
query = url.format('CII', limit, skip)
print('query:', query)
data = pd.read_json(query, orient='values', typ='series', convert_dates=False)
data = data['results']
all_data_df.append(data)
print(all_data_df)
Комментарии:
1. Большое спасибо