Agent Skills
返回列表
📊

Scrapy 管道数据提取器

数据分析 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/scrapy-pipeline-data-extractor。

技能介绍

它解决什么问题

爬虫能跑起来,不等于数据能用。默认的 Scrapy 爬虫把抓到的字段原样塞进 Item,很快会遇到三类问题:同名字段格式不统一(日期可能是 2024/01/02,也可能是 Jan 2, 2024;价格可能带 ¥、$ 和千分位逗号)、重复行直接落库、爬虫顺着无关链接跑偏到整站。事后在 pandas 里补救要重跑整条链路,而且只在列表页出现的脏数据很容易漏掉。

技能如何组织爬虫

这个技能把处理逻辑放进 Scrapy 的抓取流程,而不是事后清洗:

  • 爬取范围:用 scrapy.linkextractors.LinkExtractor 声明哪些链接值得跟进,边界写在爬虫配置里,避免整站无差别抓取。
  • 字段规范化:用 ItemLoader 配合 MapCompose 处理器,在字段进入 Item 之前逐项做 trim、大小写、日期和数值转换。处理器在加载阶段逐字段执行,管道可以假定收到的数据已经统一。
  • 清洗与落库:自定义 Item Pipeline 接在 loader 之后,负责去重、校验、补全和写入存储,清洗规则与抓取规则分开维护。
  • 三层职责边界清楚:改字段格式不影响抓取范围,换存储不影响字段解析。

适用边界与注意点

  • 依赖 Scrapy 本身,需要 Python 3.10 以上,跨平台可用。
  • 框架由 Zyte 维护,行为以 Scrapy 官方文档为准:https://docs.scrapy.org/en/latest/。
  • MapCompose 是逐字段执行的,写在字段上比写在管道里更早介入,但要小心在处理器里做需要全局状态(比如跨行统计)的操作。
  • 生成的爬虫面向生产使用,存储位置和去重策略需要按自己的数据规模先想清楚,技能不会替你决定这些。

使用场景

  • 在写生产级爬虫时,页面里有筛选和分页链接,需要用 LinkExtractor 限定跟进范围,防止爬到全站。
  • 列表页返回的日期、价格、编码格式混乱,需要用 ItemLoader 和 MapCompose 在入库前统一字段。
  • 清洗逻辑写在管道里后,需要继续加去重、校验和写库,且不想改动字段解析代码。
  • 多来源字段命名不一致,需要在统一 Item 结构中映射并补全缺失字段后再落库。

适合人员

  • 爬虫工程师:需要把页面解析、字段清洗和落库拆成 Scrapy 里清晰可维护的三层。
  • 数据工程师:需要对多个来源做统一 schema 映射和规范化后再入库。
  • 数据采集负责人:需要在扩大抓取范围前控制 LinkExtractor 边界和去重策略。
  • 后端工程师:需要把去重、校验和存储逻辑放进 Scrapy pipeline 而不是抓取回调。