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

时间:2018-12-06 23:09:29

标签: python python-3.x python-2.7 web-scraping urllib

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

http是:

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

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

我希望能够循环访问,访问这些文件,并通过替换YYYY和MM和DD从给定的开始日期结束日期下载它们,因此从2003年1月1日,直到当前时间2018年12月6日。

我将如何开始呢?

1 个答案:

答案 0 :(得分:1)

以下方法应该起作用:

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)