我在文档中有一系列<p>
元素,我正在用scrapy进行搜索
一些是:
<p><span>bla bla bla</span></p>
要么
<p><span><span>bla bla bla</span><span>second bla bla</span></span></p>
我想用子项提取所有文本(假设我已经有<p
的选择器)
(第二个例子:有一个字符串bla bla bla second bla bla
)
答案 0 :(得分:8)
您可以使用//text()
从子节点中提取所有文本
例如:
.//p//text()
答案 1 :(得分:1)
这里有 2 个选项,根据情况可以有各自的好处。
html 示例
<p>Something outside the span<span> and something inside the span</span></p>
选项 01:使用 //text()
-> 返回列表
response.xpath('//p//text()').getall()
# returns
>>> ['Something outside the span', ' and something inside the span']
选项 02:使用 string()
-> 返回字符串
response.xpath('string(//p)').get()
# returns
>>> 'Something outside the span and something inside the span'