Scrapy不是什么

最后,很容易误解 Scrapy 可以为你做什么,主要是因为数据抓取这个术语与其相关术语有些模糊, 很多术语是交替使用的。我将尝试使这些方面更加清楚,以防止混淆,为你节省一些时间。

Scrapy 不是 Apache Nutch,也就是说,它不是一个通用的网络爬虫。如果 Scrapy 访问一个一无所知的网站,它将无法做出任何有意义的事情。Scrapy 是用于提取结构化信息的,需要人工介入,设置合适的 XPath 或 CSS 表达式。而 Apache Nutch 则是获取通用页面并从中提取信息,比如关键字。它可能更适合于一些应用,但对另一些应用则又更不 适合。

Scrapy 不是 Apache Solr、Elasticsearch 或 Lucene,换句话说,就是它与搜索引擎无关。Scrapy 并不打算为你提供包含 “Einstein” 或其他单词的文档的参考。你可以使用 Scrapy 抽取数据,然后将其插入到 Solr 或 Elasticsearch 当中,我们会在第 9 章的开始部分讲解这一做法,不过这仅仅是使用 Scrapy 的一个方法,而不是嵌入在 Scrapy 内的功能。

最后,Scrapy 不是类似 MySQL、MongoDB 或 Redis 的数据库。它既不存储数据,也不索引数据。它只用于抽取数据。即便如此,你可能会将 Scrapy 抽取得到的数据插入到数据库当中,而且它对很多数据库也都有所支持,能够让你的生活更加轻松。然而 Scrapy 终究不是一个数据库,其输出也可以很容易地更改为只是磁盘中的文件,甚至什么都不输出——虽然我不确定这有什么用。

本章小结

本章介绍了 Scrapy,给出了它能够帮你做什么的概述,并描述了我们认为的使用本书的正确方式。本章还提供了几种自动化数据抓取的方式,通过帮你快速开发能够与现有生态系统更好融合的高质量应用而获益。下一章将介绍 HTML 和 XPath,这是两个非常重要的 Web 语言,我们在每个 Scrapy 项目中都将用到它们。