赞
踩
使用Python语言开发的爬虫框架有很多,但是实现方式和原理大同小异,用户只需深入掌握一种框架,对其他框架做简单了解即可。
常见的Python框架主要有以下5种:Scrapy、Crawley、Portia、Newspaper和Python-goose,下面分别对这些框架进行简单介绍。
Scrapy是用纯Python实现的一个开源爬虫框架,是为了高效地爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,可用于爬虫开发、数据挖掘、数据监测、自动化测试等领域。
Scrapy使用了Twisted(其主要对手是Tornado)异步网络框架来处理网络通信,该网络框架可以加快下载速度,并且包含了各种中间件接口,可以灵活地完成各种需求。
Scrapy的官网地址是https://scrapy.org/,其官网界面如图1-1所示。
图1-1 Scrapy官网界面
Scrapy功能很强大,她支持自定义Item和pipeline数据管道;支持在Spider中指定domain(网页域范围)以及相应的Rule(爬取规则);支持XPath对DOM的解析等。而且Scrapy还有自己的shell,可以方便地调试爬虫项目和查看爬虫运行结果。
由于Scrapy运行速度快、操作简单、可扩展性强,它已成为目前最常用的通用爬虫框架,也是本节主要介绍的框架。
示例:在Linux(Ubuntu)系统下的安装Scrapy
如果要在Linux系统下使用Scrapy,任何进行Scrapy的安装?
以下是使用的Linux系统是Ubuntu。Ubuntu是一个基于Linux的免费开源桌面PC操作系统,支持x86、amd64(即x64)和ppc结构,由全球化的专业团队开发(Canonical Ltd)打造。
下面就介绍如何在Ubuntu系统下安装Scrapy:
Ubuntu系统需要9.10或以上版本才能安装Scarpy。并且,在安装之前,应先确定Ubuntu上已安装最新版的Python和pip。Scarpy的安装步骤如下:
(1)打开终端并更新系统:
sudo apt-get update
(2)安装Python和pip:
sudo apt-get install python3 python3-pip
(3)安装libxml2-dev和libxslt-dev:
sudo apt-get install libxml2-dev libxslt-dev
(4)安装build-essential:
sudo apt-get install build-essential
(5)安装Scrapy:
pip3 install scrapy
如果您的系统中同时安装了Python 2和Python 3,则需要使用pip3命令来安装Scrapy。
(6)验证Scrapy是否正确安装:
scrapy version
如果成功安装Scrapy,则会显示Scrapy的版本信息。
Crawley是用Python开发出的、基于非阻塞通信(NIO)的Python爬虫框架,它能高速爬取对应网站的内容,支持关系型和非关系型数据库(如MongoDB、Postgre、Mysql、Oracle、Sqlite等)支持输出Json、XML和CSV等各种格式。
Crawley框架的官方地址是https://pythonhosted.org/crawley,其官网主界面如图1-2所示。
图1-2 Crawley官网主界面
Crawley框架的功能也比较多,大家如果对Crawley感兴趣,也可以自行探索。
Portia是scrapyhub开源的一款可视化的爬虫规则编写工具,提供可视化的Web页面,用户只需要点击标注页面上需要抽取的数据,不需要任何编程知识即可完成规则的开发(但是动态网页需要自己编写JS解析器)。
Portia框架在GitHub上的项目地址为https://github,com/scrapinghub/portia,可以从该地址将Portia框架下载到本地使用。图1-3所示为Portia框架在GitHub上的主页。
图1-3 Portia框架在GitHub上的主页
除此之外,Portia框架还提供了网页版,用户只需要注册一个账号,不需要下载框架就可以使用。网页版Portia的地址是:https://app.scrapinghub.com/,它的注册界面如图1-4所示。
图1-4 网页版Portia的注册界面
Portia框架不需要任何编程基础就可以使用,用户如果感兴趣,可以通过它的在线网页自行探索该框架的使用方法。
Newspaper框架是专门用于提取新闻、文章和内容分析的爬虫框架。该框架的特点如下:
(1)支持10多种语言(英语、中文、德语等)
(2)所有内容都使用Unicode编码。
(3)使用多线程下载文章。
(4)能够识别新闻网站的URL。
(5)能够从网页中提取文本和图片,并且从文本中提取关键词、摘要和作者。
Newspaper框架在GitHub上的主页地址是https://github.com/codelucas/newspape,其页面如图1-5所示。
图1-5 Newspaper框架在GitHub上的主页
goose本身是一个用Java语言编写的用于提取文章的框架,Python-goose是用Python语言对goose框架的重新实现。Python-goose的设计目的是爬取新闻和网页文章,并从中提取以下内容:
(1)文章的主体;
(2)文章中的图片;
(3)文章中包含的所有YouTube/Vimeo视频;
(4)元描述信息;
(5)元标签。
通过访问Python-goose框架在GitHub上的主页(地址是https://github.com/grangier/python-goose),可以将Python-goose框架下载到本地。Python-goose框架在GitHub上的主界面如图1-6所示。
图1-6 PYthon-goose框架在GitHub上的主界面
总的来说,Python语言提供了多种爬虫框架供用户选择,包括Scrapy、Crawley、Portia、Newspaper和Python-goose。Scrapy是一个高效的开源爬虫框架,支持异步网络通信,功能强大且灵活,适用于各种爬虫开发和数据挖掘任务。Crawley是基于非阻塞通信的爬虫框架,具有快速爬取网站内容的能力,并支持多种数据库和数据格式。Portia是一个可视化的爬虫规则编写工具,无需编程知识,通过点击标注页面来定义规则,适合非技术背景的用户。Newspaper是专门用于提取新闻和文章内容的爬虫框架,支持多种语言和多线程下载,可以提取文本、图片、关键词等信息。Python-goose是goose框架的Python实现,用于爬取新闻和文章,并提取主体、图片、视频等元信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。