常用爬虫框架介绍
使用Python语言开发的爬虫框架有很多,但是实现方式和原理大同小异,我们只需要深入掌握一种框架,对别的框架做简单了解即可。
常见的Python框架主要有以下5种:Scrapy、Crawley、Portia、Newspaper和Python-goose,接下来就分别对这些框架进行简单介绍。
1. Scrapy框架
Scrapy是用纯Python实现的一个开源爬虫框架,是为了高效地爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,可用于爬虫开发、数据挖掘、数据监测、自动化测试等领域。
Scrapy使用了Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,该网络框架可以加快我们的下载速度,并且包含了各种中间件接口,可以灵活的完成各种需求。
Scrapy的官网地址是:https://scrapy.org/
,其官网界面如图1所示。
图1 Scrapy官网界面
Scrapy功能很强大,它支持自定义Item和pipeline数据管道;支持在Spider中指定domain(网页域范围),以及相应的Rule(爬取规则);支持XPath对DOM的解析等。而且Scrapy还有自己的shell,可以在上面方便地调试爬虫项目和查看爬虫运行结果。
由于Scrapy运行速度快、操作简单、可扩展强,它已成为目前最常用的通用爬虫框架,也是我们主要介绍的框架。
2. Crawley框架
Crawley也是Python开发出的、基于非阻塞通信(NIO)的Python爬虫框架。它能高速爬取对应网站的内容,支持关系型和非关系型数据库如MongoDB、Postgre、Mysql、Oracle、Sqlite等,支持输出Json、XML 和CSV等各种格式。
Crawley框架的官网地址是:http://project.crawley-cloud.com/
,它的官网主界面如图2所示。
图2 Crawley的官网主界面
Crawley框架的功能也比较多,大家如果对Crawley感兴趣,也可以自行探索。
3. Portia框架
Portia是scrapyhub开源的一款可视化的爬虫规则编写工具,提供可视化的Web页面,用户只需要通过点击标注页面上需要抽取的数据,不需要任何编程知识即可完成规则的开发(但是动态网页需要自己编写JS解析器)。
Portia框架在GitHub上的项目地址为:https://github.com/scrapinghub/portia
,可以从该地址将Portia框架下载到本地使用。图3所示为Portia框架在GitHub上的主页。
图3 Portia框架在Github上的主页
除此之外,Portia框架还提供了网页版,用户不需要下载框架就可以直接使用,只需要注册一个账号即可。网页版Portia的地址是:https://portia.scrapinghub.com/
,它的注册界面如图4所示。
图4 网页版Portia的注册页面
Portia框架不需要任何编程基础就可以使用,大家如果感兴趣,可以前往它的在线网页自行探索该框架的使用方法。
4. Newspaper框架
Newspaper框架是专门用于提取新闻、文章和内容分析的爬虫框架。该框架的特点包括:
支持10多种语言(英语,中文,德语等);
所有内容都使用Unicode编码;
使用多线程下载文章;
能够识别新闻网站的URL;
能够从网页中提取文本和图片,并且从文本中提取关键词、摘要和作者。
Newspaper框架在GitHub上的主页地址是:https://github.com/codelucas/newspaper
,其页面如图5所示。
图5 Newspaper框架在GitHub上的主页
5. Python-goose框架
Goose本身是一个Java语言编写的用于提取文章的框架,Python-goose是用Python语言对goose框架的重新实现。Python-goose的设计目的是爬取新闻和网页文章,并从中提取以下内容:
文章的主体;
文章中的图片;
文章中包含的所有YouTube/Vimeo视频;
元描述信息;
元标签。
通过访问Python-goose框架在GitHub上的主页(地址是https://github.com/grangier/python-goose
),我们可以将Python-goose框架下载到本地。Python-goose框架在GitHub上的主界面如图6所示。
图6 Python-goose框架在GitHub上的主界面