仇明
(江苏旅游职业学院,江苏 扬州 225009)
2021年全年国内旅游总人次32.46亿,同比增长12.8%;国内旅游收入(旅游总消费)2.92万亿元,同比增长31.0%[1]。旅游产业已经成为各地方经济发展的重要组成部分。截至2022年7月,全国5A级旅游景区总数已达318家,4A级景区更是高达千余家[2]。各个景区之间的服务竞争也越发激烈。由于疫情,各地的旅游业都受到了不同程度的影响,各个景区都在不断地提高自身的服务质量,吸引更多的游客。
随着“互联网+”时代的到来,携程、美团、驴妈妈等在线旅游网站不断发展,大幅度地提升了整个旅游行业的在线服务水平,旅游业也越来越注重消费者个性化的体验。越来越多的游客通过在线旅游网站来安排自己的旅游行程,并且将自己在旅游过程中的感受以及对景区的意见和建议,通过景区在线评论的方式发布在这些旅游网站上。这些景区在线评论包含着很多极具价值的信息,潜在的旅游用户可以从中了解景区的餐饮、住宿、交通以及景区服务质量等信息,从而依据自身的需求来判断是否前往旅游。对于景区的经营者而言,可以从中发现消费者的关注点、满意程度,从而根据这些评论作出针对性的改进和提高,进而可以更好地塑造景区形象和提升旅游服务质量。所以对于旅游网站中景区的在线评论数据进行爬取和分析,对于促进旅游市场经济发展和提升旅游行业服务质量都具有重要的意义。
中山陵园风景区位于江苏省省会南京市,1961年成为首批全国重点文物保护单位,2007年被列为首批国家5A级旅游景区,是江苏省的标志性景区。如何更好地提高中山陵园风景区的旅游服务质量对于南京市乃至江苏省的旅游业发展都具有重要的意义和影响。
文章以中山陵园景区为例,使用网络爬虫技术来获取旅游网站中的相关在线评论,并从这些景区在线评论中分析出频率较高的词语,从而帮助景区能够更好地针对游客关注的问题做出相应的改进和提高。
随着大数据时代的到来,各行业都和互联网紧密结合并进行二次发展,与此同时各行业也产生大量的数据,数据经济的发展促使各行业都非常重视行业数据的获得、使用、分析。如何快速高效地获取网络数据成为亟待解决的问题,因此网络爬虫技术应运而生。网络爬虫是一个遵守既定规则自动从互联网抓取相关信息的计算机程序[3-4]。网络爬虫还可以自动完成网络数据的爬取和分析,随着大数据时代的到来以及Python等开发语言的发展,网络爬虫技术正在广泛地应用在工作和生活中。
在实际工作中,很多程序语言都可以实现网络爬虫技术,比如Java语言的Apache Nutch、Webmagic框架;Python语言的 Scrapy、Pyspider框架;PHP 语言的QueryList框架等,这些爬虫实现技术各有特点,都可以实现大型的网络数据下载,但是都有一定的学习成本。Python语言作为一种解释性语言,具有良好的扩展性,而且其语法简洁,大量的第三方库资源使得学习成本较低,可以非常方便地解决各种工作和生活中的问题[5-6],使用Python语言来构建网络爬虫上手快,开发效率高,网络爬虫的实现过程一般如图1所示。
图1 网络爬虫实现过程
网络爬虫实现过程如下。
(1)获取网页整体数据。通过相应的程序访问指定的网页并获取网页的整体数据,实现的方法有很多。本文设计的程序中通过Python的Request库来实现相应的网络请求,并且获取整个网页的数据。
(2)网页解析获取指定数据。获取了整个网页数据之后,需要获取的数据包含在整个网页数据中,需要对整个网页进行解析,获取有用的数据,过滤掉无用的数据。常用的网页解析方法很多,比如Python中的BS4库、正则表达式Re库、Lxml库等,本程序中通过使用Python中的Lxml库,从整体网页数据中提取游客关于景区的在线评论数据。
(3)存储指定数据。将获取的数据进行数据库存储,常用的数据库有MySql、MongoDB、Sqlite等。有时一些少量的文本数据也会存放在Excel文件或者文本文件中。
(4)URL队列调度。网站中需要爬取的网页地址很多,需要对已经爬取过的、尚未爬取的、爬取错误的网页地址进行相应的区分和调度。
当获得游客关于景区的在线评论数据后,因为这些评论数据是中文句子,所以需要对中文句子进行分词,并统计出其中的高频词语。由于中文的各个词语之间,不像英文各单词间有自然的分隔,所以中文评论分析中将语句分隔为词语较为困难。Python中的Jieba库是目前使用较多的中文分词开源工具。Jieba库的分词效果较好,其基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况[7]。分词之后,Jieba库可以根据词语出现的频率的高低进行排序,从而统计出其中出现频率较高的词语。
数据的可视化有很多表现形式,比如图像和图表。词云可以根据文本中的关键词生成图像,词语出现的频率越高,其字体越大,越突出显示,使得人们在极短的时间内就能理解评论中的关键和主旨,十分直观,是近年来比较流行的可视化方法。Python语言中一般采用wordcloud库来进行词云的绘制。
本文设计的程序,就是通过使用Python语言构建网络爬虫,自动下载驴妈妈旅游网站中关于中山陵园风景区的游客评论,并将所有该景区的相关评论存储在数据库中。然后将所有的评论进行中文分词,并统计出其中出现频率较高的词,并绘制词云,从而方便景区管理者能够更好地了解游客的旅游感受和相关建议,从而做出针对性的改进和提高。程序开发主要分为2个步骤。
本文设计的程序中需要爬取的景区在线评论数据页面如图2所示,根据网页构建技术分析可得,其采用了动态网页中的局部刷新技术,可以在开发者工具中获得实际的评论数据请求网址。需要构建网页请求中的headers数据,然后通过Python的Requests库来下载整个网页数据。通过观察网页底部的分页码可以得知,一共有186页评论数据需要下载。
图2 网站中游客的景区在线评论页面
当整个网页数据下载完成后,需要使用Lxml库来解析和提取网页中的景区评论数据,过滤掉其他不要的数据。最后是景区在线评论数据的存储,由于下载的数据量较少,所以本程序中景区评论数据的存储直接采用Python自带的Sqlite数据库。Sqlite作为一个轻量的嵌入式数据库,它不需要配置服务器端,其数据库就是一个文件,而且体积很小,可以很方便地集成到各个程序中。
景区在线评论数据爬取后,需要对整个评论数据进行分析和统计。首先,从数据库中读取景区评论数据,并使用Jieba库来进行中文分词,去除掉一些无意义的词之后,再统计出现频率较高的词。最后使用wordcloud库根据词语出现频率的高低来绘制词云,从而实现数据的可视化。整个程序开发流程图如图3所示。
图3 程序开发流程图
3.3.1 新建数据库及数据表
3.3.2 下载景区评论并存储
从网站中共下载1858条关于中山陵园风景区的在线评论存储在数据库中,具体如图4所示。
图4 下载并存储在数据库中的景区评论
3.3.3 统计高频词并绘制词云
根据景区评论中的高频词所生成的词云如图5所示,可以发现评论中出现“值得”“不错”“喜欢”“开心”“推荐”等词,说明游客对于景区的整体旅游体验较好;评论中也出现了景区中部分景点的名字,说明游客游玩这些景点之后的印象较为深刻或者游玩的意愿较为强烈,景区可以在相关景点开发更多的配套服务;当然评论中也出现“观光车”“很大”“步行”“体力”“人太多”等词,说明景区需要在交通出行、各景点之间的衔接方式、游客的流量调度等方面做出相应的改进。
图5 根据景区评论中高频词所生成的词云
随着数据经济时代的到来,各行业都十分重视自身行业数据的分析和使用。文章提出了使用网络爬虫技术,高效方便地下载关于景区的在线评论数据,并对评论数据进行一定的分析和研究,从而促使景区的服务能够做出针对性的改进和提高。文中所述的爬虫程序在容错性和程序性能方面有待进一步提高;但是在思路和方向上做出了一定的尝试和创新,对各景区服务品质的提升具有一定的指导和借鉴意义。