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

如何使用Python通过指定API URL下载XML格式数据文件?

用Python下载CAISO OASIS API数据的方法

首先,你需要先安装requests库(如果还没装的话),打开终端执行:

pip install requests

方案1:处理Zip包(符合API的SingleZip参数)

因为你的API URL里用了SingleZip参数,返回的其实是一个压缩包,里面包含目标XML文件。下面的代码会自动下载并解压这个Zip包:

import requests
from zipfile import ZipFile
from io import BytesIO

# 你的API地址
api_url = 'http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_FUEL&fuel_region_id=ALL&startdatetime=20130919T07:00-0000&enddatetime=20130928T07:00-0000&version=1'

try:
    # 发送GET请求获取数据
    response = requests.get(api_url)
    response.raise_for_status()  # 如果请求返回错误状态码,直接抛出异常

    # 把响应内容转换成Zip文件对象
    with ZipFile(BytesIO(response.content)) as zip_file:
        # 先看看压缩包里有哪些文件
        print("压缩包内的文件列表:", zip_file.namelist())
        
        # 提取所有文件到当前目录
        zip_file.extractall()
        print("文件已成功解压到当前目录!")
        
        # 如果你只想提取特定的XML文件,比如知道文件名是PRC_FUEL_xxx.xml,可以这样:
        # zip_file.extract("PRC_FUEL_20130919_20130928.xml")

except Exception as e:
    print(f"下载或解压过程中出错:{e}")

方案2:直接保存为XML文件(如果浏览器直接返回XML)

如果你在浏览器里直接得到的是XML文件(可能浏览器自动帮你解压了),可以用下面的代码直接把响应内容保存为XML:

import requests

api_url = 'http://oasis.caiso.com/oasisapi/SingleZip?queryname=PRC_FUEL&fuel_region_id=ALL&startdatetime=20130919T07:00-0000&enddatetime=20130928T07:00-0000&version=1'

try:
    response = requests.get(api_url)
    response.raise_for_status()

    # 把内容写入本地XML文件
    with open('caiso_fuel_report.xml', 'wb') as xml_file:
        xml_file.write(response.content)
    
    print("XML文件已成功保存!")

    # 如果需要直接查看或解析XML内容,可以用response.text获取文本格式
    # xml_content = response.text
    # print("XML预览:", xml_content[:500])

except Exception as e:
    print(f"下载过程中出错:{e}")

小提示

  • response.raise_for_status()非常重要,它能帮你快速发现请求失败的问题(比如URL写错、权限问题等)。
  • 如果遇到HTTP请求的警告或证书问题(虽然这个API是HTTP协议,一般不会有),可以在requests.get()里加上verify=False参数,但这会降低安全性,仅在测试环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:32:42