Python LXML XPath查询:硬编码URL失效但字节串可用
XML解析AttributeError问题的解决建议
确认完整XML的结构差异
你用片段能正常提取属性,说明片段里的<text>节点确实带有parsable-cite属性,但完整URL返回的XML可能存在两种情况:- 并非所有
<text>节点都包含该属性,你的代码没做判空处理,直接访问attrib就会触发报错 - 完整XML带有命名空间,当前解析逻辑未处理命名空间,导致找不到目标
<text>节点,返回None后调用attrib引发错误
- 并非所有
调整解析逻辑,增加判空与命名空间处理
参考以下代码,先处理命名空间(根据XML实际情况调整),再判空后提取属性:import xml.etree.ElementTree as ET import requests # 获取完整XML内容 resp = requests.get("https://www.congress.gov/118/bills/hr61/BILLS-118hr61ih.xml") root = ET.fromstring(resp.content) # 匹配XML实际命名空间,示例为国会文档常用命名空间 ns = {"akn": "http://docs.oasis-open.org/legaldocml/ns/akn/3.0"} # 带命名空间查找所有text节点 text_nodes = root.findall(".//akn:text", ns) for node in text_nodes: # 先判断节点非空,再尝试获取属性 if node: parsable_cite = node.attrib.get("parsable-cite") if parsable_cite: print(parsable_cite)验证XML完整性
网络请求可能因不稳定返回不完整的XML,导致解析后节点缺失。可以先将URL返回内容保存到本地文件,检查是否完整,再用本地文件测试解析代码,排除网络因素影响
内容的提问来源于stack exchange,提问作者Andre Marin
相关产品推荐
相关产品推荐

