You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从动态URL自动下载加州医疗CSV文件?

动态获取Medi-Cal FFS Provider CSV的Python方案

加州公共医疗网站基于CKAN开放数据框架,我们可以通过它的API动态获取最新的CSV资源URL,无需硬编码固定ID和日期:

实现步骤

  • 调用CKAN的数据集详情API,获取该数据集下的所有资源信息
  • 筛选出CSV格式的资源,通过更新时间排序确保拿到最新版本
  • 用筛选得到的URL执行下载

完整代码

import requests
from datetime import datetime

# 数据集API端点,直接用网页URL末尾的标识名即可
DATASET_API_URL = "https://data.chhs.ca.gov/api/3/action/package_show?id=profile-of-enrolled-medi-cal-fee-for-service-ffs-providers"
DOWNLOAD_FOLDER = "C:/Users/xxx/Downloads/"

def get_latest_csv_url():
    # 请求数据集详情
    response = requests.get(DATASET_API_URL)
    response.raise_for_status()
    dataset_data = response.json()
    
    # 筛选所有CSV格式的资源
    csv_resources = [
        res for res in dataset_data['result']['resources']
        if res['format'].lower() == 'csv'
    ]
    # 按最后更新时间倒序排序,取最顶部的最新资源
    csv_resources.sort(
        key=lambda x: datetime.strptime(x['last_modified'], "%Y-%m-%dT%H:%M:%S.%f"), 
        reverse=True
    )
    
    if not csv_resources:
        raise ValueError("未找到CSV格式的资源")
    
    return csv_resources[0]['url'], csv_resources[0]['name']

def download_csv(url, save_path):
    with requests.get(url, stream=True) as r:
        r.raise_for_status()
        with open(save_path, 'wb') as f:
            for chunk in r.iter_content(chunk_size=8192):
                f.write(chunk)

if __name__ == "__main__":
    try:
        csv_url, csv_name = get_latest_csv_url()
        save_path = f"{DOWNLOAD_FOLDER}{csv_name}"
        download_csv(csv_url, save_path)
        print(f"已成功下载最新文件到:{save_path}")
    except Exception as e:
        print(f"下载失败:{str(e)}")

代码说明

  • 无需硬编码数据集/资源ID,直接复用网页URL里的数据集标识名即可
  • 通过last_modified字段排序,确保每次拿到的都是最新的CSV文件
  • 保存时保留官方原文件名(带日期),也可自行修改为固定名称
  • 加入异常处理,方便排查请求或下载时的问题

定时执行

如果要每周自动运行,可通过Windows任务计划程序或Linux的cron来配置定时触发该Python脚本。

内容的提问来源于stack exchange,提问作者santosh kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:37:20