python - 希望通过使用 for 循环的 API 调用添加一系列日期
问题描述
问题:当我运行下面的代码片段时,我收到以下错误:“URLError: <urlopen error [Errno 54] Connection reset by peer>。”
当我使用日期范围而不是变量运行相同的代码段时,它可以工作。
我有一个需要通过 API 调用的日期列表。
这是复制的过程
- 为我需要的日期范围创建数据框示例
- 然后运行循环以获取第一个数据框示例中所有日期范围的调用
蟒蛇片段
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)
解决方案
这可能有多种原因。最常见的是 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 中。
推荐阅读
- java - 无法将源从目标复制到包的目标
- c# - 剃刀生成器在剃刀视图中添加空注释行
- wpf - scichart3d几何对象选择是不可能的吗?
- arrays - 我不能在 VBA 类中声明公共数组是否有技术原因?
- solr - SOLR: More Like This 为相同的查询提供了不确定的结果
- swift - TableView中如何使用swiftyJson获取arrayvalue?
- android - 我可以将使用 android 支持的库与 Androidx 项目一起使用吗?
- kotlin - 如何在 Kotlin 中解析下面的 Json 数据?
- groovy - 如何在groovy中转换描述表输出列表或映射
- c# - 使用 xamarin Android 和 C# 从 SQLite 检索数据?