按 Python 中的日期从 http 下载多个 XLS 文件

Downloading multiple XLS files from http by date in Python

有一个通用网址可以 link 到数据库中的任何 XLS 文件。您不能通过 ftp 或直接通过目录访问它,但您可以通过将日期参数传递到 http 地址本身来下载。

http 是:

https://docs.misoenergy.org/marketreports/YYYYMMDD_sr_gfm.xls

用户可以将 YYYYMMDD 更改为实际日期,该地址可用于下载 xls 文件(daily)。

我希望能够循环访问这些文件并从给定的开始日期结束日期下载它们,方法是替换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)