2012-02-28 92 views
2

我想用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的控制台中运行的命令,但我不认为这可能是问题。我究竟做错了什么?

+0

它是'root.xpath('// ns:body',namespaces = {'ns':nsurl}) ' – RanRag 2012-02-28 00:59:21

+0

也看看这里http://stackoverflow.com/questions/4210730/how-这样做,我使用的XML的命名空间与 - 发现 - 的findall功能于LXML – RanRag 2012-02-28 01:10:27

回答

11

这是一个简单的错过咒语。您应该使用namespaces而不是namespace