XPath使用lxml失败

时间:2011-07-21 15:43:45

标签: python xml lxml

我之前使用过的xpath对HTML和XML都有很好的效果,但这次似乎无法获得任何结果。

数据来自http://www.ahrefs.com/api/,在“答案示例”下,保存为.xml文件

我的代码:

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

没有给出任何结果。

我哪里错了?

2 个答案:

答案 0 :(得分: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>]

答案 1 :(得分:0)

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