如何使用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
相关产品推荐
相关产品推荐

