我正在尝试从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
时,它可以正常工作。
您可以在上图中看到它显示40 matching nodes
。
所以,我的问题是为什么上面的xpath表达式不适用于python / lxml。
答案 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