更多内容请见: 爬虫和逆向教程-专栏介绍和目录
一、Tornado 概述
1.1 为什么选择 Tornado 做爬虫?
Tornado是一个Python的异步网络框架和库,特别适合构建高性能的网络爬虫,主要原因包括:
- 非阻塞I/O:Tornado使用非阻塞网络I/O,可以处理数千个并发连接。这是 Tornado 的核心优势。当一个请求(如下载一个网页)发起后,Tornado 不会傻等服务器响应,而是会立即去处理其他任务(如发起其他请求)。当服务器响应返回时,Tornado 再回过头来处理这个响应。这在 I/O 密集型的爬虫任务中,可以极大地提高并发效率。
- 高性能:相比传统同步爬虫,异步爬虫能显著提高抓取效率。
-
内置HTTP客户端:提供AsyncHTTPClient用于异步HTTP请求。Tornado 提供了强大的
AsyncHTTPClient,方便地发起异步 HTTP 请求,以及@gen.coroutine或async/await语法来管理异步流程。 - 轻量级:成千上万个并发请求可以由少量线程甚至单线程处理,内存和 CPU 开销远小于多线程模型。相比Scrapy等框架,Tornado更加轻量灵活
相比于 requests + threading 的多线程爬虫,Torna