我需要使用 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 中突出显示的字符串是运行时的。有什么想法如何解决这个问题吗?
它适用于硬编码的 URL,但不知道如何在不知道 URL 子字符串的情况下解析 URL 运行时。
此代码将从 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)