比较流行的爬虫的框架有scrapy
和pyspider
scrapy
是┅个开源的高级爬虫框架,使用python
编写用于爬取网页,提取结构性数据并可将抓取得结构性数据较好的应用于数据分析和数据挖掘。scrapy
有┅些特点:
-
scrapy
基于事件的机制利用twisted
的设计实现了非阻塞的异步操作。这相比于传统的阻塞式请求极大的提高了CPU的使用率,以及爬取效率 - 配置简单,可以简单的通过设置一行代码实现复杂功能
- 可拓展,插件丰富比如分布式
scrapy + redis
、爬虫可视化等插件。 - 解析方便易用
scrapy
封装了xpath
等解析器,提供了更方便更高级的selector
构造器可有效的处理破损的HTML
代码和编码。
在学习Scrapy
之前我们需要了解Scrapy
的架构。
Scrapy官方文档的图片
下面的描述引自官方doc文档(在此引用)
引擎负责控制数据流在系统中所有组件中流动并在相应动作发生时触发事件。 详细内容查看下面的数据鋶(Data Flow)
部分
调度器从引擎接受request
并将他们入队,以便之后引擎请求他们时提供给引擎
下载器负责获取页面数据并提供给引擎,而后提供给spider
- 引擎向调度器请求下一个要爬取的URL。
- 调度器返回下一个要爬取的URL给引擎引擎将URL通过下载中间件(请求
(request)
方向)转发给下载器(Downloader)
。 - 一旦页面下载完畢下载器生成一个该页面的
Response
,并将其通过下载中间件(返回(response)
方向)发送给引擎 - 引擎从下载器中接收到
Response
并通过Spider中间件
(输入方向)发送给Spider处理。 - (從第二步)重复直到调度器中没有更多地
request
引擎关闭该网站。
- 第一个scrapy的官方文档链接: