python - 如何使用 scrapy Selector 获取节点的 innerHTML?

标签 python html xpath css-selectors scrapy

假设有一些 html 片段,例如:

<a>
   text in a
   <b>text in b</b>
   <c>text in c</c>
</a>
<a>
   <b>text in b</b>
   text in a
   <c>text in c</c>
</a>

我想在其中提取标签内的文本,但在保留其文本的同时排除这些标签,例如,我想在上面提取的内容就像“文本中的文本在 b 中的文本在 c 中”和“文本在 b 中文本公司中的文本”。现在我可以使用 scrapy Selector css() 函数获取节点,那么我该如何处理这些节点以获得我想要的呢?任何想法将不胜感激,谢谢!

最佳答案

这是我设法做到的:

from scrapy.selector import Selector

sel = Selector(text = html_string)

for node in sel.css('a *::text'):
    print node.extract()

假设 html_string 是一个保存问题中 html 的变量,此代码会产生以下输出:

   text in a

text in b


text in c




text in b

   text in a

text in c

选择器 a *::text() 匹配所有 a 节点的后代文本节点。

关于python - 如何使用 scrapy Selector 获取节点的 innerHTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28658047/

相关文章:

javascript - TinyMCE:检测 onLeave()

xpath - Saxon Xpath 命名空间

java - 无法实现内部 "for"循环

python - GAE devappserver2 类型错误 : unsupported operand type(s) for -: 'datetime.datetime' and 'NoneType'

javascript - 我如何在不均匀的背景图像周围错开文本?

python - 简化python中的selenium输出

java - Xpaths查询问题

python - 使用 ffmpeg 连接视频写入空音频流

Python - 调整图像大小

html - (Bootstrap) 在bootstrap card后添加margin