Python:为什么以下xpath返回空列表?

时间:2012-08-06 10:11:03

标签: python xpath lxml

我正在尝试从instapaper.com中提取一些文字和链接。所以我使用以下代码完成工作:

>>> import lxml.html as lh
>>> doc = lh.parse("http://www.instapaper.com/u/folder/1227370/programming")
>>> text = doc.xpath(".//*[@id='bookmark_list']/*/div[3]/a/text()")
>>> len(text)
0
>>> text
[]

如您所见,它返回一个空列表,这意味着它无法找到与上述xpath匹配的任何文本。

现在当我在firebug / firepath中使用上面的xpath expr时,它可以正常工作。

enter image description here

您可以在上图中看到它显示40 matching nodes

所以,我的问题是为什么上面的xpath表达式不适用于python / lxml。

根据要求Instapaper page source

1 个答案:

答案 0 :(得分:5)

没有ID bookmark_list的元素。也许你必须登录。

修改

解析真正的 HTML工作原理:

doc = lh.parse("http://pastebin.com/raw.php?i=1WpFAfCt")
text = doc.xpath("//*[@id='bookmark_list']/*/div[3]/a/text()")
len(text) # => 40