【问题标题】:HTTP Error 400 Bad request calling api with pythonHTTP 错误 400 使用 python 调用 api 的错误请求
【发布时间】:2021-08-16 04:55:54
【问题描述】:

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:"{}"&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)

我正在尝试运行此程序以获取来自 FDA 的 2321 行的数据,用于附表 3 项目。我需要一次阅读 100 篇,因为那是极限。我不确定我在这里做错了什么。另外,我是否一次读取正确的 100 个以将其保存在数据框中?它停止并给我:HTTPError:HTTP错误400:错误请求。提前致谢。

【问题讨论】:

  • 你是否被 API 提供者限制了?
  • 是这个问题吗?我不知道
  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • 你想用my_list[i:i+100]做什么?没用。
  • 可能将代码拆分为更简单的行 - 即。在单独的行中运行 pd.read_json() - 并使用 print() 来查看错误的值。

标签: python api


【解决方案1】:

基于documentation,您应该使用skip 而不是limit - 并且始终使用limit=100 - 例如limit=100&skip=0limit=100&skip=100limit=100&skip=200limit=100&skip=300 等。

最适合我的代码:

import pandas as pd

url = 'https://api.fda.gov/drug/ndc.json?search=dea_schedule:"{}"&limit={}&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)

【讨论】:

  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多