基于Python的运城旅游数据可视化分析*

2022-10-14 06:55孙怡芳
计算机时代 2022年10期
关键词:爬虫运城分词

张 乐,孙怡芳

(运城学院数学与信息技术学院,山西 运城 044000)

0 引言

运城地区,自古就有“河东”的称号,位于黄河的中游,与陕西省渭南市、河南省三门峡市隔黄河相望。运城地区的名胜古迹不胜枚举,文物旅游景点高达1600余处,其中市级以上重点文物保护单位170余处,全国重点文物保护单位90处,是全国重点文物保护单位数量最多的地级市。但网络上有关运城旅游的数据复杂繁琐,如何快速的通过网络数据来了解运城的旅游的发展状况,是本文的主要研究意义。

本文主要使用Python 语言实现,主要包括数据的爬取和可视化两部分。首先通过网络爬虫采集数据,使用requests提取网页源码,利用xpath、re和Beautiul-Soup提取源码中目标数据,以csv文件进行存储;其次对爬取的数据进行清洗处理并进行可视化分析,使用Matplotlib 库将数据呈现为柱状图、饼图和词云等,使用wordcloud库进行词云的制作。

1 网络爬虫和数据可视化

1.1 网络爬虫技术介绍

网络爬虫,是按照一定的规则和策略自动爬取网站某些数据信息的程序。网络爬虫是模拟浏览器的过程,通过模拟浏览器进行网站的访问,访问到浏览器后将网页进行下载爬取,从下载的网页中提取目标数据,然后进行解析,从而达到自动爬取的目的。Python语言是网络爬虫中使用最为广泛的语言。

1.2 可视化技术介绍

可视化技术是数据分析的一种,是将复杂且繁琐的大量数据经过可视化处理,形成直观、高效、容易理解的图表,分析得出数据中有价值的信息,然后更深层次的理解数据。

Matplotlib属于Python中的一个可视化绘图库,其功能强大且具有丰富的扩展,够实现柱状图、饼图、散点图、折线图等的绘制,从而实现快捷的可视化。

词云通过Python 中的第三方库使用wordcloud 库实现,是对文本中高频关键词进行可视化的展现,将多数低频、质量低、与主题无关的词语过滤,将质量高且频次高的筛选出进行展示,方便使用者对长文本的主旨快速掌握。

2 数据爬取过程

运城旅游数据可视化分析的数据采集模块主要是对旅游网站中有关运城的旅游数据进行爬取、解析和数据的存储功能。数据的采集分网页分析和数据爬取两部分,流程图如图1所示。

图1 数据的采取流程图

2.1 网页分析

国内各大旅游网站中,其中途牛、驴妈妈、同程旅游网站在有关行程路线、游记、点评等有不同程度的缺失,有关运城的旅游信息较少。相对而言,“马蜂窝”和“去哪儿”旅游网站各方面信息比较完整,有关运城市的旅游数据很丰富,保证了数据的相对完整性、真实性。

首先查看网页源代码,以“去哪儿旅游”网为例,使用Edge 浏览器打开“去哪儿旅游”网站运城地区的主页,然后按F12键或者鼠标右键点击选择“检查”,可打开调试窗口查看到网页源代码。

在后续爬虫过程中要进行反爬虫机制,要进行请求头的模拟,通过调试窗口查找浏览器的请求头,如图2所示。

图2 请求头页面

2.2 数据爬取

网页爬取,是利用requests 对网页的源代码进行爬取下载。

矿物成分简单,矿石矿物主要有闪锌矿,次为方铅矿、黄铁矿;脉石矿物主要有方解石,见白云石、重晶石等。闪锌矿自形—半自形粒状,结晶较粗,一般粒径为0.25~2 mm,约占80~90%,多为淡黄色~米黄色,肉眼清晰易辨,少量高角度细脉中闪锌矿为棕褐色—黑褐色;方铅矿以自形晶为主,粒径一般1~4 mm;黄铁矿自形—半自形晶粒状产出,以粒径0.2~0. 5 mm为主。方解石很普遍,存在于各种矿石类型,白云石、重晶石主要分布于细脉中。

首先确定网页的初始链接,使用requests 库中的get 方法进行HTTP 请求,但如果以此方法直接对网站进行访问,会有错误产生,因为网站服务器检测到并非浏览器访问,拒绝访问。所以要制定相应的反爬虫策略,反爬虫的方法主要是爬虫时进行伪装,来模拟浏览器的访问。通过创建请求头来进行模拟,在URL链接插入的同时将已经准备好的浏览器请求头填入,来避免爬虫被拦截。

在使用requests 获取到网站源代码后,得到的HTML 文档,其含有关于网站所的HTML 标签,目标数据包含在这些标签中,因此要对这些标签进行解析来获取想要的信息。在对HTML 文档进行解析时,主要使用BeautifulSoup 库来进行解析,同时也可以使用re正则或者Xpath对进行解析提取目标信息。

在对网页进行分析后发现,每页中各个景点的信息都在<ulclass=”list_itemclrfix”></ul>模块下,如图3所示。然后调用BeaytifulSoup 中的方法find_all,传入参数name 得到列表,通过遍历列表,获取每个li 标签中的值,得到每个景点的相应信息。

图3 景点的信息所在模块

将爬取到的数据存储到一个csv 文件中,包括用户的ID、景点的po(i景点的编号)、用户的评论分数、评论时间以及评论等内容。

3 数据可视化分析

3.1 数据处理

数据分析过程主要是对运城旅游数据中的用户评论进行处理,这部分主要处理非结构化数据,对于用户评论这些非结构化数据,需要用Jieba库进行分词以及去掉停用词处理。

在使用Jieba 分词时,首先进行初始化字典,然后切分短语,利用正则将文本切分成一个个语句,通过字符串匹配,构建所有可能分词情况的又向无环图(DAG)。然后构建节点最大路径概率,以及结束位置。计算每个汉字节点到语句结尾的所有路径的最大概率,并记下最大概率时再DAG中对应的该字词的结束位置。根据节点的路径进行字词切割分组的结果就是分词结果,Jieba 通过yield 将分好的词存储在列表中逐个返回。

分词结束后,会发现很多对于分析结果无意义的词,将这些词称为停用词。例如“的”,“就”,“有”,“可以”,“也”,“都”,“很”等字词。所以需要将这些词过滤掉从而减少数据噪声,提高分析效率。过滤词使用ordcloud 中的方法stopwords,直接将停用的词编辑到stopwords即可。

3.2 数据可视化分析

数据可视化主要包括Matplotlib 图表的生成和wordcloud词云制作。

⑴评论量分析

通过Pandas 从csv 文件中将需要的数据进行提取切片然后传入Matplotlib 中进行图表绘制,将2017 年之后的每年的评论量绘制成条形图,如图4所示。

图4 每年的评论量

由图4可看出,近些年来,运城的旅游人数在逐年增加,2020 年和2021 年上半年因受国内外疫情影响,旅游人数减少,但是也有较多的旅游人次,可见运城的旅游发展逐年受到关注,知名度越来越高。

⑵评分结果分析

通过matplotlib 库对网页中有关运城旅游评分结果进行分析,并绘制为饼状图,如图5所示。

图5 评分结果

由图5可看出,游客对运城景区的评价分数,超过一半的游客对运城的景区给予满分评价,百分之九十的游客给予比较满意的评价,百分之十五左右的游客不太满意,可见游客对运城旅游大部分评价很高。

⑶景点数量分析

通过对运城各个县区的景点数量进行爬取分析,绘制出条形图,如图6所示。

由图6可看出,运城的旅游资源十分丰富,并且运城的旅游分布广泛,每个县区都有一定数量的旅游景点。其中运城盐湖区和永济市、芮城县的旅游景点数量最多,闻喜、绛县的旅游景点数量最少。

图6 各个县区的景点数量

⑷评论文本分析

通过Jieba 分词将有关运城旅游的评论文本进行分词,同时筛选出停用词,然后传入wordcloud 进行词云的生成,如图7所示。

图7 景点评论文本

由图7 可看出,运城的旅游景点的吸引游客之处主要在于景点的历史、建筑风格、风景特色、壁画以及黄河文化,运城比较受欢迎的景点有鹳雀楼、黄河大铁牛、永乐宫、普救寺以及解州关帝庙。词云中的“值得”一词说明游客对运城景点反馈很好。

4 结论

本文通过Python 网络爬虫技术对运城旅游数据进行可视化分析,快速了解到运城旅游发展现状:①在2017年以来运城旅游人数在逐年上升,运城旅游的知名度提高;②游客对运城的评价很高,游客对运城的旅游给予肯定的态度;③运城的旅游资源十分丰富,并且分布范围广;④运城旅游主要受欢迎的景点有黄河大铁牛、永乐宫、普救寺等景点。

由此可知,运城的建筑文物十分丰富,应该加强文物的修复与保护力度,重视其中的历史文化与艺术价值,保护好运城的文物旅游资源;同时有关黄河文化的旅游也要大力发展,可以打造独有的黄河文化旅游路线。

本文数据可视化的呈现,对运城未来旅游业的发展可以提供一定的参考价值,但是还有很多不足之处需要改进,例如数据的获取量并不是十分充足,还有诸多有关运城旅游的特色之处没有体现出来,可以根据旅游网站不断增加的数据来弥补现有的不足之处,从而实现更全面、更深入的分析。

猜你喜欢
爬虫运城分词
利用网络爬虫技术验证房地产灰犀牛之说
运城面粉、运城苹果、运城蔬菜 “三个运城农业品牌”打造运城新名片
基于Python的网络爬虫和反爬虫技术研究
点赞!李克强总理山西运城赶年集
分词在英语教学中的妙用
运城清廉地图
山西运城:冬日盐湖色彩斑斓
结巴分词在词云中的应用
结巴分词在词云中的应用
利用爬虫技术的Geo-Gnutel la VANET流量采集