首页 > 解决方案 > 如何从 URL 格式 YYYY-MM-DD.csv 转换成 csv

问题描述

我有一个我试图解决的问题。只是声明我不知道如何使用 python,我认为我的问题对其他人来说可能很容易。

我有一个网址链接:https ://xxxcompanyname.com/repo/YYYY-MM-DD.csv

里面有一些数据。所以,我试图找到一个解决方案,我可以在其中提取日期范围的数据。例如从 2020-09-01 到昨天。

没有特定的文件夹可以在其中找到例如 100 个 csv 文件,您可以选择所需的文件。我只能使用 url 链接,当我插入日期并按 Enter 按钮时,我会看到下载的 csv 文件。我找到了一种类似下面的脚本,但没有结果:

import requests
import shutil
from datetime import datetime, timedelta

# enter start/end dates here, convert to datetime object
start_date = datetime.strptime('2021-08-01', '%Y-%m-%d')  # the latter arg defines the format of the given string
end_date = datetime.strptime('2021-03-12', '%Y-%m-%d')

# need to know how many days we need to loop over
day_count = (end_date - start_date).days + 1

# loop over days and download file
for i in range(day_count):
    date_str = (start_date + timedelta(i)).strftime('%Y%m%d')  # convert our datetime obj into the desired string format
    r = requests.get(f'http://https//footfall.vodafoneinnovus.com/repo/YYYY-MM-DD.csv', stream=True)
    if r.status_code == 200:
        with open(f'{date_str}.csv', 'wb') as f:
            r.raw.decode_content = True
            shutil.copyfileobj(r.raw, f)

你知道如何提取数据以及我找到的脚本是否足够接近?

标签: pythoncsvimportdownload

解决方案


import datetime
import os
import requests

today = datetime.date.today()
day_count = 15
folder_name = 'downloads' #Name for new folder

try: 
    os.mkdir(f'{folder_name}')
except:
    pass

for i in range(day_count): 
    datestr = today - datetime.timedelta(days=i)
    url = f'http://https//footfall.vodafoneinnovus.com/repo/{datestr}.csv'
    r = requests.get(url) 
    csv_file = open(f'{folder_name}/{datestr}.csv', 'wb')
    csv_file.write(r.content)
    csv_file.close()

这将创建一个新文件夹并以日期为名称插入所需的 csv 文件


推荐阅读