求教一个 lxml 抓取内容的简单问题

2014-07-11 00:47:46 +08:00
 fy
不浪费大家时间,直接上代码:


from lxml import etree

a = etree.HTML('<div class="ash1"><span class="mark">Vectors</span> \ <span class="mark">Background</span> \ 19.080 results </div>')

现在我想要拿到那边的 "19,080" 几个字,应该怎么做?
a.xpath('//div')[0].text 结果竟然是空的,真是不科学?
3401 次点击
所在节点    Python
6 条回复
imn1
2014-07-11 00:55:08 +08:00
a.xpath('//div/text()')[0] 试试
ggarlic
2014-07-11 01:22:48 +08:00
这坑我也踩过
text是空的原因是:text不是你以为的意思(一个标签的text内容)。text在文档中的定义是
Text before the first subelement. This is either a string or the value None, if there was no text.

除了楼上的方法,你也可以用itertext()方法来遍历
binux
2014-07-11 02:18:11 +08:00
a.xpath('//div')[0].text_content()
fy
2014-07-11 02:54:23 +08:00
多谢几位 搞定了
pc10201
2014-07-11 09:38:06 +08:00
我为啥总觉得正则提取比xpath好呢?
dingyaguang117
2014-07-11 10:31:56 +08:00
@pc10201 xpath 虽然会慢一点 不过写法简洁,而且准确性高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/122059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX