lxml失败的XPath

el_*_*ic0 5 python xpath lxml

我试图用XPath查询用lxml解析的html文档.该文档是维基百科中关于塑料页面的直接html下载.然后我用lxml禁用实体替换解析它以避免'®'出错

from lxml import etree
root = etree.parse("plastic.html",etree.XMLParser(resolve_entities=False))
Run Code Online (Sandbox Code Playgroud)

然后,我检索命名空间url

htmltag = root.iter().next()
nsurl = htmltag.nsmap.values()[0]
Run Code Online (Sandbox Code Playgroud)

现在,我想在'root'或'htmltag'上使用xpath查询,但我无法这样做.我尝试了不同的方法,但以下似乎是最正确的形式,无论如何都会产生错误.

root.xpath('//ns:body',namespace={'ns',nsurl})
Run Code Online (Sandbox Code Playgroud)

这就是我得到的

XPathResultError: Unknown return type: dict
Run Code Online (Sandbox Code Playgroud)

我在IPython控制台中运行命令,但我不认为这可能是问题所在.我究竟做错了什么?

小智 16

这是一个简单的拼错法术.你应该使用namespaces而不是namespace.