与lxml失败的XPath
问题描述:
我想用XPath查询用lxml解析的html文档。该文件是关于Plastic in Wikipedia的页面的纯HTML下载。然后,我LXML停用实体替代解析它,以避免与“& REG”与lxml失败的XPath
from lxml import etree
root = etree.parse("plastic.html",etree.XMLParser(resolve_entities=False))
然后一个错误,我找回了命名空间URL现在
htmltag = root.iter().next()
nsurl = htmltag.nsmap.values()[0]
,我想用XPath查询在任'root'或'htmltag',但我无法这样做。我尝试了不同的方式,但以下似乎是最正确的形式,无论如何都会产生错误。
root.xpath('//ns:body',namespace={'ns',nsurl})
而这就是我得到
XPathResultError: Unknown return type: dict
我在IPython的控制台中运行的命令,但我不认为这可能是问题。我究竟做错了什么?
答
这是一个简单的错过咒语。您应该使用namespaces
而不是namespace
。
它是'root.xpath('// ns:body',namespaces = {'ns':nsurl}) ' – RanRag 2012-02-28 00:59:21
也看看这里http://stackoverflow.com/questions/4210730/how-这样做,我使用的XML的命名空间与 - 发现 - 的findall功能于LXML – RanRag 2012-02-28 01:10:27