学科分类
目录
网络爬虫

常用爬虫框架介绍

使用Python语言开发的爬虫框架有很多,但是实现方式和原理大同小异,我们只需要深入掌握一种框架,对别的框架做简单了解即可。

常见的Python框架主要有以下5种:Scrapy、Crawley、Portia、Newspaper和Python-goose,接下来就分别对这些框架进行简单介绍。

1. Scrapy框架

Scrapy是用纯Python实现的一个开源爬虫框架,是为了高效地爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,可用于爬虫开发、数据挖掘、数据监测、自动化测试等领域。

Scrapy使用了Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,该网络框架可以加快我们的下载速度,并且包含了各种中间件接口,可以灵活的完成各种需求。

Scrapy的官网地址是:https://scrapy.org/,其官网界面如图1所示。

img

图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所示。

img

图2 Crawley的官网主界面

Crawley框架的功能也比较多,大家如果对Crawley感兴趣,也可以自行探索。

3. Portia框架

Portia是scrapyhub开源的一款可视化的爬虫规则编写工具,提供可视化的Web页面,用户只需要通过点击标注页面上需要抽取的数据,不需要任何编程知识即可完成规则的开发(但是动态网页需要自己编写JS解析器)。

Portia框架在GitHub上的项目地址为:https://github.com/scrapinghub/portia,可以从该地址将Portia框架下载到本地使用。图3所示为Portia框架在GitHub上的主页。

img

图3 Portia框架在Github上的主页

除此之外,Portia框架还提供了网页版,用户不需要下载框架就可以直接使用,只需要注册一个账号即可。网页版Portia的地址是:https://portia.scrapinghub.com/,它的注册界面如图4所示。

img

图4 网页版Portia的注册页面

Portia框架不需要任何编程基础就可以使用,大家如果感兴趣,可以前往它的在线网页自行探索该框架的使用方法。

4. Newspaper框架

Newspaper框架是专门用于提取新闻、文章和内容分析的爬虫框架。该框架的特点包括:

  • 支持10多种语言(英语,中文,德语等);

  • 所有内容都使用Unicode编码;

  • 使用多线程下载文章;

  • 能够识别新闻网站的URL;

  • 能够从网页中提取文本和图片,并且从文本中提取关键词、摘要和作者。

Newspaper框架在GitHub上的主页地址是:https://github.com/codelucas/newspaper,其页面如图5所示。

img

图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所示。

img

图6 Python-goose框架在GitHub上的主界面

点击此处
隐藏目录