python - 在Python中按日期从http下载多个XLS文件
问题描述
有一个通用网址可以链接到数据库中的任何 XLS 文件。您不能通过 ftp 或直接通过目录访问它,但您可以通过将日期参数传递到 http 地址本身来下载。
http是:
https://docs.misoenergy.org/marketreports/YYYYMMDD_sr_gfm.xls
用户可以将YYYYMMDD更改为实际日期,并且该地址可用于下载 xls 文件(每天)。
我希望能够循环访问这些文件,并通过替换 YYYY 和 MM 和 DD 从给定的开始日期和结束日期下载它们,因此从 2003-01-01 开始并运行到当前时间 2018-12-06。
我将如何开始这个?
解决方案
以下应该有效:
from datetime import date, timedelta
import requests
d1 = date(2018, 8, 15) # start date
d2 = date(2018, 8, 25) # end date
delta = d2 - d1
url_pattern = 'https://docs.misoenergy.org/marketreports/%s'
file_pattern = '%s_sr_gfm.xls'
for i in range(delta.days + 1):
filename = file_pattern % str(d1 + timedelta(i)).replace('-', '')
print(filename)
response = requests.get(url_pattern % filename, stream=True)
response.raise_for_status()
with open(filename, 'wb') as handle:
for block in response.iter_content(1024):
handle.write(block)
推荐阅读
- sql - 基于复选框的唯一约束
- java - 为什么 BFS 卡在 Graph Node 表示中?
- xamarin - 为什么有权访问源代码并测试我的应用程序的开发人员需要配置文件?
- linux - 如何在自定义的 ubuntu 16.04 中创建 iso
- java - Java:将鼠标光标下当前像素的颜色打印到控制台:鼠标侦听器不起作用
- javascript - 在 React 中更改子状态内的父状态的正确模式是什么?
- azure - Azure 托管应用程序:通过自定义密钥加密磁盘
- web - 如何在 microsoft azure 中自动同步或启动同步调度程序?
- flutter - 我正在从 api 获取数据以获取电晕病毒的统计信息,并想为其绘制饼图,但饼图仅接受双值
- model-view-controller - 403 - 禁止:访问被拒绝。ASP.NET Core MVC IIS 客户端证书 SSL