You need to enable JavaScript to run this app. Scrapy中使用CSS选择器如何提取span对应文本及关联键值对
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy中使用CSS选择器如何提取span对应文本及关联键值对

问题拆解

你当前遇到的核心问题是:目标值都是不带任何标签的裸文本,夹在两个span.name节点之间,直接选span标签的方式根本触碰不到这些内容。想要把键和对应值关联,只需要顺着每个键所在的span节点,抓取它后面紧邻的文本内容就行,不需要复杂的文本拆分。

具体实现代码

# 存储最终配对好的键值对
result = {}

# 遍历每个键对应的span节点(这里拿的是可操作的Selector对象,不是纯字符串)
for key_span in response.css('p span.name'):
    # 1. 提取并清洗键
    # 取span内的文本,去掉前后空白,去掉键末尾带的冒号
    key = key_span.css('::text').get().strip().rstrip(':').strip()
    
    # 2. 提取并清洗对应值
    # 抓当前span节点后面紧邻的第一个文本节点,做清洗去掉混入的冒号和无效空白
    raw_value = key_span.xpath('./following-sibling::text()[1]').get()
    value = raw_value.strip().lstrip(':').strip() if raw_value else ""
    
    # 存入字典完成关联
    result[key] = value

运行结果

执行完代码后,result 的内容完全符合预期:

{
    "type": "phone",
    "comment": "there are 103002 units"
}

容易踩的坑

  • 别直接抓p标签下的所有裸文本拼列表,那样会把键、值的文本混在一起,还要手动拆分配对,遇到格式变动很容易出错
  • 选后面的文本节点时,一定要加[1]的索引,只取紧邻当前span的第一个文本,不然会把后面其他span的内容、其他值的内容一起抓进来,导致值不对
  • 如果遇到HTML结构变动导致某个键后面没有对应文本的情况,加个空值判断,避免代码报None类型的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 05:45:04