第8章 Scrapy编程
到目前为止,我们编写的爬虫主要用于定义爬取数据源的方式以及如何从中抽取信息。除了爬虫外,Scrapy还提供了能够调整其大多数方面功能的机制。比如,你可能会发现自己经常在处理如下的一些问题。
1.你需要从同一个项目的其他爬虫中复制、粘贴大量代码。重复的代码与数据更加相关(比如,执行字段计算),而不是数据源。
2.你需要编写脚本,对Item
进行后处理,执行像删除重复条目或后置处理值的事情。
3.你在不同的项目中有重复的代码,用于处理基础架构。比如,你可能需要登录并向专有仓库传输文件,向数据库中添加Item
或在爬虫执行完成时触发后置处理操作。
4.你发现Scrapy的某个方面与你希望的功能并不完全一致,你想在自己的大部分项目中使用自定义或变通的方案。
Scrapy开发者所设计的架构,能够为我们解决这些常见的问题。我们将会在本章后续部分研究该架构。不过我们首先介绍支持Scrapy的引擎,该引擎叫作Twisted。
8.1 Scrapy是一个Twisted应用
Scrapy是一个内置使用了Python的Twisted框架的抓取应用。Twisted确实有些与众不同,因为它是事件驱动的&#x