2011-07-21 93 views
2

我以前使用xpaths对HTML和XML都有很好的效果,但这次似乎无法获得任何结果。XPath使用lxml失败

的数据是从http://www.ahrefs.com/api/,在“答案示例”,保存到一个.xml文件

我的代码:

from lxml import etree 
doc = etree.XML(open('example.xml').read()) 
print doc.xpath('//result') 

不给出任何结果。

我哪里错了?

回答

1

你需要采取文件的namespace考虑:

from lxml import etree 

doc = etree.parse('example.xml') 
print doc.xpath('//n:result', 
       namespaces={'n': "http://ahrefs.com/schemas/api/links/1"}) 

=>

[<Element {http://ahrefs.com/schemas/api/links/1}result at 0xc8d670>, 
<Element {http://ahrefs.com/schemas/api/links/1}result at 0xc8d698>] 
0

我的经验是在C#中使用XPath,但我相信XML命名空间导致您的查询失败。您需要使用local()运算符的一些变体,或者查看您的文档,以便事先定义名称空间。