第 8 章 Scrapy编程

到目前为止,我们编写的爬虫主要用于定义爬取数据源的方式以及如何从中抽取信息。除了爬虫外,Scrapy 还提供了能够调整其大多数方面功能的机制。比如,你可能会发现自己经常在处理如下的一些问题。

  1. 你需要从同一个项目的其他爬虫中复制、粘贴大量代码。重复的代码与数据更加相关(比如,执行字段计算),而不是数据源。

  2. 你需要编写脚本,对 Item 进行后处理,执行像删除重复条目或后置处理值的事情。

  3. 你在不同的项目中有重复的代码,用于处理基础架构。比如,你可能需要登录并向专有仓库传输文件,向数据库中添加 Item 或在爬虫执行完成时触发后置处理操作。

  4. 你发现 Scrapy 的某个方面与你希望的功能并不完全一致,你想在自己的大部分项目中使用自定义或变通的方案。

Scrapy 开发者所设计的架构,能够为我们解决这些常见的问题。我们将会在本章后续部分研究该架构。不过我们首先介绍支持 Scrapy 的引擎,该引擎叫作 Twisted