什么是定向(聚焦)爬虫

定向爬虫,核心就是:只抓取特定目标站点、特定栏目、特定数据字段的爬虫。

它和“全网搜索式爬虫”不同,目标非常明确,通常只关心这些问题:

  • 抓哪个网站
  • 抓哪些页面
  • 提取哪些字段
  • 如何保存结果

Scrapy 非常适合这种场景,因为它天生就是为规则清晰、结构化采集设计的。


1.Scrapy是什么

Scrapy 是 Python 生态里非常经典的爬虫框架,适合做:

  • 定向数据采集
  • 批量网页抓取
  • 链接跟踪
  • 数据清洗与落库
  • 中大型爬虫工程化管理

它不是简单的 requests + BeautifulSoup 拼装,而是一个完整框架,内置了:

  • 请求调度
  • 异步下载
  • URL 去重
  • 数据管道
  • 中间件机制
  • 导出能力

所以它更像一个爬虫开发平台


2.Scrapy 的工作流

Scrapy 的基本处理流程如下:

flowchart LR
    A[Spider 发起初始请求] --> B[Engine 引擎]
    B --> C[Scheduler 调度器]
    C --> D[Downloader 下载器]
    D --> E[网页响应 Response]
    E --> B
    B --> F[Spider 解析页面]
    F --> G[提取 Item 数据]
    F --> H[继续生成新 Request]
    G --> I[Item Pipeline 清洗/存储]

各组件职责

  • Spider 定义抓取规则与解析逻辑。
  • Engine 负责组件间协调,相当于总控。
  • Scheduler 对待抓取请求排队、去重、调度。
  • Downloader 真正发 HTTP 请求并获取响应。
  • Item 定义你想提取的数据结构。
  • Pipeline 对提取出的数据做清洗、去重、保存。
  • Middleware 可对请求和响应做统一拦截处理,比如:
    • 设置代理
    • 设置请求头
    • 处理重试
    • 动态 UA