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

如何使用Python从XML格式URL中下载file_type为DLTINS的目标文件

你已有的代码已经完成了接口请求和XML根节点解析,接下来补全节点匹配、提取下载链接、下载文件的逻辑即可,完整可运行代码如下:

import requests
import xml.etree.ElementTree as ET

# 请求文件列表接口
list_url = "https://registers.esma.europa.eu/solr/esma_registers_firds_files/select?q=*&fq=publication_date:%5B2021-01-17T00:00:00Z+TO+2021-01-19T23:59:59Z%5D&wt=xml&indent=true&start=0&rows=100"
response = requests.get(list_url, timeout=30)
response.raise_for_status() # 自动校验请求是否成功,遇到4xx/5xx直接抛出异常

root = ET.fromstring(response.text)
target_download_url = None

# 遍历所有文件记录节点,匹配第一个DLTINS类型的文件
for doc_node in root.findall(".//doc"):
    current_file_type = ""
    current_download_link = ""
    # 遍历当前记录下的所有字段
    for str_node in doc_node.findall("str"):
        field_name = str_node.attrib.get("name")
        if field_name == "file_type" and str_node.text:
            current_file_type = str_node.text.strip()
        elif field_name == "download_link" and str_node.text:
            current_download_link = str_node.text.strip()
    # 匹配到目标类型就跳出循环
    if current_file_type == "DLTINS" and current_download_link:
        target_download_url = current_download_link
        break

if not target_download_url:
    print("未找到符合要求的DLTINS类型文件")
else:
    # 下载目标文件
    print(f"匹配到目标文件,下载地址:{target_download_url}")
    file_resp = requests.get(target_download_url, timeout=120, stream=True)
    file_resp.raise_for_status()
    # 取链接末尾段作为保存文件名,也可自定义文件名
    save_name = target_download_url.split("/")[-1]
    # 分块写入避免大文件占用过多内存
    with open(save_name, "wb") as f:
        for chunk in file_resp.iter_content(chunk_size=8192):
            f.write(chunk)
    print(f"文件已保存为:{save_name}")

核心逻辑说明

  • 接口返回的XML结构中,所有文件记录都存放在<doc>节点下,每个<doc>下的<str>节点通过name属性区分字段类型,我们需要匹配file_type为DLTINS的记录,提取对应的download_link字段值
  • 下载环节启用流式传输分块写入,适配该接口返回的大体积压缩包文件,减少内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:06:04