You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Scrapy提取含嵌套span的p标签中的指定文本内容?

Scrapy提取p标签内span之后的文本内容

给你几个更优雅的解决方法,不用手动去删标签:

方法1:XPath直接定位目标文本节点

XPath在处理文本节点位置时更灵活,直接定位p标签下的最后一个文本节点(也就是span闭合后的内容):

response.xpath('//div[@class="price"]/p/text()[last()]').get().strip()

解释:text()[last()]会选中p标签下所有直接子文本节点里的最后一个,刚好就是你要的"Price value",最后用strip()去掉前后的空白换行。

方法2:CSS结合XPath筛选

如果你习惯用CSS选择器定位父节点,再用XPath筛选文本:

response.css('.price p').xpath('./text()[last()]').get().strip()

和上面原理一致,先通过CSS找到目标p标签,再用XPath选它的最后一个直接文本节点。

方法3:过滤所有文本节点

先获取p标签下的所有文本内容,再过滤掉空白和不需要的部分:

texts = [t.strip() for t in response.css('.price p ::text').getall() if t.strip()]
target_text = texts[-1]

getall()会返回p标签下所有层级的文本节点(包括span里的),过滤掉空白后剩下的列表里最后一个就是目标内容。

对比你之前用字符串处理的方法,这些方法更贴合Scrapy的选择器特性,维护起来也更方便。

内容的提问来源于stack exchange,提问作者user23371809

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:04:51