You need to enable JavaScript to run this app. 如何用Python访问指定URL下载每日更新的最新CSV文件?
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python访问指定URL下载每日更新的最新CSV文件?

方案说明

这类公共政府开放接口会对非浏览器类的请求做基础校验,之前直接用wget、裸requests、urllib发送的请求因为没有携带合法的客户端标识,会被服务端拦截返回403错误,无法获取CSV内容。

核心实现逻辑

  • 构造和日常浏览器访问一致的请求头,模拟合法客户端请求,绕过基础校验
  • 采用流式读取的方式保存文件,避免大文件占用过多内存
  • 每次执行请求时直接拉取服务端最新生成的CSV内容,无需处理缓存逻辑

可直接运行的代码示例

import requests

# 目标接口URL
url = 'https://coronavirus.data.gov.uk/api/v1/data?filters=areaType=overview&structure=%7B%22areaType%22:%22areaType%22,%22areaName%22:%22areaName%22,%22areaCode%22:%22areaCode%22,%22date%22:%22date%22,%22newPeopleVaccinatedFirstDoseByPublishDate%22:%22newPeopleVaccinatedFirstDoseByPublishDate%22,%22cumPeopleVaccinatedFirstDoseByPublishDate%22:%22cumPeopleVaccinatedFirstDoseByPublishDate%22%7D&format=csv'

# 匹配浏览器的请求头配置
request_headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
    'Accept': 'text/csv,application/csv,*/*',
    'Accept-Language': 'en-GB,en;q=0.9',
    'Connection': 'keep-alive'
}

# 发送请求
response = requests.get(url, headers=request_headers, stream=True, timeout=30)
response.raise_for_status()  # 请求失败直接抛出异常,方便排查问题

# 保存到本地文件
save_path = 'uk_covid_vaccine_overview.csv'
with open(save_path, 'wb') as f:
    for chunk in response.iter_content(chunk_size=8192):
        f.write(chunk)

print(f"最新CSV文件已保存至: {save_path}")

注意事项

  • 不要使用requests库默认的请求头,其自带的python-requests/x.x标识会被接口直接拦截
  • 该接口无额外鉴权要求,配置上述请求头后即可正常获取每日更新的数据
  • 如果后续碰到接口限流,可在请求前添加1-3秒的随机延时,无需复杂的反爬处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 23:45:05