无法使用 python 运行时从 Web URL 下载 CSV 文件

问题描述 投票:0回答:1

我需要使用 python 以编程方式从公共医疗保健网站下载 CSV 文件:link 并将其写入 X 文件夹。

这是我的示例代码:

import json
import urllib.request
import requests
url = "https://data.chhs.ca.gov/dataset/514c5381-f3dc-4c4a-a9de-a4df9405f046/resource/d652b210-ec3d-4a92-b7e0-e55c3dcbc7dc/download/medi_cal_ffs_provider_list_3_19_2024.csv"
r = requests.get(url, stream=True)
file_path="C:/Users/xxx/Downloads/medi_cal_ffs_provider_list.csv"
with open(file_path, 'wb') as f:
     f.write(r.content)

这是每周下载文件的重复任务,但下面 URL 中突出显示的字符串是运行时的。有什么想法如何解决这个问题吗?

https://data.chhs.ca.gov/dataset/**514c5381-f3dc-4c4a-a9de-a4df9405f046**/resource/**d652b210-ec3d-4a92-b7e0-e55c3dcbc7dc**/download/** medi_cal_ffs_provider_list_3_19_2024.csv**"

它适用于硬编码的 URL,但不知道如何在不知道 URL 子字符串的情况下解析 URL 运行时。

python url replace substring runtime
1个回答
0
投票

此代码将从 url 下载文件,而不显式传递文件名。因此,只要有新文件可用,您就可以运行此代码,它会自动为您下载最新的文件。您所要做的就是下载 lxml 包。我希望这能解决您的问题。

from lxml import html
import requests

downloadURL = r"https://data.chhs.ca.gov/dataset/profile-of-enrolled-medi-cal-fee-for-service-ffs-providers/resource/d652b210-ec3d-4a92-b7e0-e55c3dcbc7dc"
fileLocalPath="C:/temp/tmp/medi_cal_ffs_provider_list.csv"
fileURL = ""

page = requests.get(downloadURL)
webpage = html.fromstring(page.content)
urlList = webpage.xpath('//a/@href')

for url in urlList:
    if url.endswith('.csv'):
        fileURL = url
        break

with requests.get(fileURL, stream=True, verify=False) as r:
    with open(fileLocalPath, "wb") as f:
        for chunk in r.iter_content(chunk_size=8196):
            f.write(chunk)
© www.soinside.com 2019 - 2024. All rights reserved.