如何用Pandas读取XML文件?运行代码触发TypeError错误求助
解决TypeError: cannot parse from 'Response'问题
错误原因
objectify.parse() 不接受requests返回的Response对象作为参数,它需要类文件对象、本地文件路径或XML内容流。直接传入Response对象会触发类型错误。
修复方案
方式1:用BytesIO包装响应二进制内容
import requests from lxml import objectify from io import BytesIO url = "https://www.un.org/securitycouncil/sites/www.un.org.securitycouncil/files/consolidated.xml" response = requests.get(url) # 将响应二进制内容转为类文件对象 parsed = objectify.parse(BytesIO(response.content))
方式2:直接解析响应文本(注意编码)
import requests from lxml import objectify url = "https://www.un.org/securitycouncil/sites/www.un.org.securitycouncil/files/consolidated.xml" response = requests.get(url) # 转成字节流后解析,避免编码问题 parsed = objectify.fromstring(response.text.encode(response.encoding))
额外建议
- 请求后添加状态码校验,确保请求成功:
response = requests.get(url) response.raise_for_status() # 请求失败时直接抛出异常 - 处理大XML文件时,方式1的流式处理更节省内存。
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

