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

Scrapy如何选择最后后代节点?优化选择器实现单行代码获取文本

解决方案

直接修改CSS选择器就能实现需求,不用写分支判断逻辑,代码可以回到简洁的单行形式。

修改后的选择器

把原来的span::text替换成:

span::text, span a::text

这个选择器会同时匹配两种情况的文本节点:

  • span标签下的直接文本内容
  • span标签内部a标签里的文本内容

简化后的代码

将原来的单行逻辑调整为用getall()获取所有匹配文本后合并,再做strip处理:

for key, selector in selectors.items():
    data[key] = ''.join(response.css(selector).getall()).strip()

原理说明

  • response.css(selector).getall()会返回所有匹配到的文本组成的列表,不管文本是在span直接节点还是内部a标签里
  • ''.join()把列表里的文本拼接成完整字符串
  • 最后strip()去除首尾空白字符

这样不管目标文本是否被a标签包裹,都能一次性获取到,代码回到了简洁的单行处理形式,不需要额外的分支判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:45:19