首页 > 解决方案 > 希望通过使用 for 循环的 API 调用添加一系列日期

问题描述

问题:当我运行下面的代码片段时,我收到以下错误:“URLError: <urlopen error [Errno 54] Connection reset by peer>。”

当我使用日期范围而不是变量运行相同的代码段时,它可以工作。

我有一个需要通过 API 调用的日期列表。

这是复制的过程

  1. 为我需要的日期范围创建数据框示例
  2. 然后运行循环以获取第一个数据框示例中所有日期范围的调用

蟒蛇片段

earnings_info = []
for earnings_api in all_earnings['earnings_api']:
    web_add = earnings_api
    ticker_hist_earnings = pd.read_json(web_add)
    earnings_info.append(ticker_hist_earnings)
    sleep(10)

标签: pythonhtmlpandasapifor-loop

解决方案


这可能有多种原因。最常见的是 API 将您的呼叫识别为机器人呼叫并阻止您的连接。如果您使用 pandas inbuild URL 调用,则必须重新编写它以从请求库中获取并包含浏览器标头。

import requests
response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'})

在获取所有数据后,您可以将这些数据附加到 pandas df 中。


推荐阅读