APP下载

基于Python的网络爬虫研究

2019-10-21李俊华

现代信息科技 2019年20期
关键词:网络爬虫可视化

摘  要:随着大数据与人工智能时代的来临,有效地获取和利用信息成为了一项挑战,从而使网络爬虫越来越受到人们的重视与青睐。Python以其简单和强大的功能在网络爬虫方向脱颖而出。本文将介绍有关Python网络爬虫的相关知识,同时实现一次爬取豆瓣影评评论,并运用可视化库生成词云,并对其进行分析。

关键词:网络爬虫;Python;可视化

中图分类号:TP393.092;TP391.3      文献标识码:A 文章编号:2096-4706(2019)20-0026-03

Abstract:With the advent of the era of big data and artificial intelligence,how to effectively acquire and utilize information has become a challenge,and online crawlers have become more and more popular and favored by people. Python stands out in the direction of web crawlers with its simple and powerful features. This article will introduce you to the Python web crawler and implement a crawling Douban review commentary and use the visual library to generate a word cloud to analyze it.

Keywords:web crawler;Python;visualization

0  引  言

网络爬虫是一种“古老”的网络技术,它伴随着互联网的发展而不断演化,随着大数据时代的来临,爬虫技术又迎来了新一波的振兴浪潮。在大数据架构中,数据的收集与存储占据着极为重要的核心位置,而爬虫技术也在这两项技术层次中占据极为重要的位置。爬虫是请求网站并提取数据的自动化程序。请求、提取与自动化变成了爬虫的关键。本文将介绍网络爬虫及其应用,以及Python的网络爬虫实现。

1  网络爬虫及其应用

网络爬虫,又称为网络机器人或者网页蜘蛛,是一种按照一定规则自动抓取万维网信息的程序或者脚本。网络爬虫大致可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫以及深层网络爬虫等类型。在实际的网络爬虫系统中,通常是结合了几种爬虫技术实现的。

通用型网络爬虫的典型的应用便是搜索引擎,例如百度、谷歌等,但是该类爬虫存在许多弊端。例如,不同的用户对于检索具有不同的需求和目的,而通用搜索引擎返回的结果包含大量无用的网页;再如,由于图片、音频、视频等多媒体数据的不断涌现,通用搜索引擎不能很好地发现和获取信息等等。为了解决以上弊端,聚焦爬虫应运而生,它根据既定的抓取目标对万维网上的相关网页与链接进行有选择的访问,并获取所需信息。增量式爬虫是指对已下载网页采取增量式更新,对于没有变化的网页并不重新下载,大大减少了下载量,也减少了时间与空间的浪费,但同时增加了算法和实现的复杂度。对于Web页面,其存在方式有表层和深层网页,深层网页不能仅仅通过静态网页链接获取,其数据隐藏在表单之后,只有通过用户提交相关必要关键词才能获取,因此需要深层网络爬虫技术的支持。

以通用网络爬虫为例,网络爬虫基本工作流程为:选取种子URL(可以由用户人为指定,也可以由用户指定的某几个初始爬取网页决定);将其放入待抓取URL队列;读取URL;解析DNS;得到主机IP;下载对应网页;存储网页;分析已抓取的URL,并从中分析出其他链接的URL,同时比较去重;将去重后的URL再次放入到待抓取URL队列,进入下一次循环。通用网络爬虫结构流程如图1所示。

2  Python实现网络爬虫

开发网络爬虫的语言有很多,常见的开发语言有Python、Java、PHP、Node.JS、C++以及Go等语言。本文主要阐述基于Python的网络爬虫,Python语言的特点是简单易学、代码简洁并且框架非常丰富,同时Python之所以强大并能够在网络爬虫中占据一席之地,与其强大的第三方库是分不开的。Python为爬虫提供了丰富的第三方库,其中较为常用的Python中爬虫三大库,即Requests库、Beautiful Soup库以及lxml库。根据实际需求可选用相应爬虫库进行实现。Python实现网络爬虫的基本流程如图2所示。

(1)發送请求:即发送一个Request;

(2)获取相应内容:即得到Response;

(3)解析内容:对于HTML数据使用re模块或第三方库等;

(4)保存数据:数据库或者文件中保存。

网络连接其需要计算机与服务器端的各一次的Request请求和Response回应。同理,爬虫也需要这个过程,即模拟计算机向服务器段发起Request请求和接收服务器端返回的Response内容并对其进行解析,从而提取所需要的信息。在网络爬虫的爬取过程中,比如聚焦网络爬虫中,爬取网页的顺序尤其重要,而爬取的顺序一般由爬取策略来决定。爬行策略有很多种,包括广度优先爬行策略、深度优先爬行策略、大站优先爬行策略(按照对应的网页所属的站点进行分类,网页数量多的站点称为大站,即网页越多的优先爬取)、反链爬行策略(反向链接的网页数越多的优先爬取)以及OPIC策略、Partial策略和PageRank策略等爬行策略。本文将以基于Python循环抓取豆瓣影评中所有观众的评论,将其存储在文本文件中,并以运用可视化库词云制作词语图为例,详细介绍基于Python的网络爬虫过程。

2.1  内容简介

(1)目标网站:本文目标为抓取豆瓣影评中所有观众的评论,将其存储在文本文件中,并运用可视化库词云制作词语图,其目标网站为https://movie.douban.com/subject/27195020/comments?start=;

(2)使用软件:本文采用Python语言来实现目标网站的网络爬取过程,Python开发的软件有很多,包括最为常用的IDE为PyCharm,以及文本编辑器Sublime Text,由于代码相对简单,本文采用的软件为Sublime Text;

(3)Python版本:目前,Python版本分为两种,Python 2版本和Python 3.x版本,目前Python 2版本的所有项目都将向Python 3.x遷移,并且Python 2版本已经停止更新和支持,故本文采用Python版本为Python 3.6;

(4)涉及Python类库:上文已经提到过,Python网络爬虫依赖于其强大的第三方库的支持,包括Requests、Beautiful Soup和lxml等,本文同时用到的第三方爬虫库有Requests和lxml。除以上爬虫相关的第三方库外,本文还用到wordcloud,该库用于制作可视化词云,Numpy库用于对爬取到数据进行数据分析,PIL库用于图像处理,以及jieba库用于自然语言的分词处理。

2.2  实现思路

抓取豆瓣影评中所有观众的评论,将其存储在文本文件中,并运用可视化库词云制作词语图,根据其目标要求以及爬虫基本流程,设计以下实现思路:

(1)安装并导入相应类库:使用pip命令安装相应第三方库,包括Requests、lxml、wordcloud、Numpy以及jieba,安装后使用import导入所有用到的类库;

(2)确定网页:根据目标网站来确定所要爬取的目标网页;

(3)获取请求头:

headers={

"User-Agent":"Mozilla/5.0(Windows NT 10.0;WOW64)"

"AppleWebKit/537.36(KHTML,like Gecko)"

"Chrome/63.0.3239.132 Safari/537.36"

}

User-Agent字段是用来告知网站站长爬虫自己的身份信息的,网站管理员可以通过爬虫告知的身份信息对爬虫的身份进行识别,此为爬虫的身份识别过程。也有些爬虫可以伪装成其他身份去进行网站爬取,并以此来获得额外的数据。虽然任意爬取在技术上可以实现,但是并不提倡,因为共同营造一个良好的网络环境,并遵守规则,才能实现爬方与服务方的共赢;

(4)解决反爬机制并循环获取所有页面;

(5)运用XPath获取短评:XPath是xml的路径语言,简而言之就是通过元素的路径来查找到这个标签元素;

(6)存入txt文档:将爬取到的所有信息保存到txt文档中;

(7)对文档短评进行分词:使用jieba库,对保存下来的短评txt文档进行分词,分词后,在单独个体之间添加空格;

(8)制作并生成词云:通过wordcloud库进行词云的制作,选好词云形状图片,设置词云字体,剔除如“真的”“什么”“但是”“而且”“那么”等无关字。设置词云背景色等,最终制作并生成词云可视化图片。

根据以上实现思路,使用Python完成代码编写,其部分实现核心代码如图3所示。

2.3  运行结果

通过对代码的不断调试与测试,最终实现了基于Python的网络爬虫运行程序,得到短评txt文档,根据文档内容生成的词云效果图如图4和图5所示。

3  结  论

随着大数据与人工智能时代的来临,以及海量数据的不断涌现,快速准确地获取用户想要的信息变得尤为迫切和重要,从而使得网络爬虫技术的应用日益增多,本文详细介绍了网络爬虫的相关分类及其应用,同时着重阐述了基于Python的网络爬虫,描述了其爬虫原理及流程,最后本文通过基于Python的豆瓣影评的爬取并进行存储,最终实现词云可视化效果,同时详细阐述了基于Python的网络爬虫技术的实现细节及过程,效果良好。

参考文献:

[1] 常逢佳,李宗花,文静,等.基于Python的招聘数据爬虫设计与实现 [J/OL].软件导刊:1-4.[2019-08-13].http://kns.cnki.net/kcms/detail/42.1671.TP.20190731.1013.042.html.

[2] 张露.网络爬虫技术在大数据审计中的应用 [J].合作经济与科技,2019(7):190-192.

[3] 李俊华.基于Python的数据分析 [J].电子技术与软件工程,2018(17):167.

作者简介:李俊华(1988-),女,汉族,黑龙江哈尔滨人,讲师,硕士研究生,研究方向:大数据、Python。

猜你喜欢

网络爬虫可视化
数据可视化设计在美妆类APP中的应用
思维可视化
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
复变函数共形映射的可视化实验教学
复变函数共形映射的可视化实验教学
炼铁厂铁量网页数据获取系统的设计与实现
基于社会网络分析的权威网页挖掘研究
主题搜索引擎中网络爬虫的实现研究
浅析如何应对网络爬虫流量