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

如何使用Python从网站解析XML?解析URL中XML时触发FileNotFoundError的问题排查

排查Python解析XML时的FileNotFoundError问题

嘿,我一眼就瞅出你代码里的问题啦——ET.parse()这个方法是用来读取本地文件路径或者已打开的文件对象的,你直接把response.content(这是字节类型的XML内容)传进去,它会误以为这是个文件名,自然就抛出FileNotFoundError了!

给你两种简单的解决办法:

方法1:直接用ET.fromstring()解析字节内容

这个方法可以直接处理字节或字符串格式的XML内容,不用先构建Tree对象,代码改起来最快:

import xml.etree.ElementTree as ET
import requests

url = "http://cs.stir.ac.uk/~soh/BD2spring2022/assignmentdata.php"
params = {'data':'spurpyr'}
response = requests.get(url, params)
xml_content = response.content

# 直接用fromstring解析字节内容,得到根节点
root = ET.fromstring(xml_content)
print(root.tag)

方法2:把字节内容包装成文件对象

如果你一定要用ET.parse()方法,可以导入io模块,用BytesIO把字节内容包装成类文件对象,这样parse()就能正常识别了:

import xml.etree.ElementTree as ET
import requests
import io

url = "http://cs.stir.ac.uk/~soh/BD2spring2022/assignmentdata.php"
params = {'data':'spurpyr'}
response = requests.get(url, params)
xml_content = response.content

# 把字节包装成类文件对象
xml_file = io.BytesIO(xml_content)
tree = ET.parse(xml_file)
root = tree.getroot()
print(root.tag)

两种方法都能解决你的问题,选哪个看你习惯就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:02:33