仇明
(江蘇旅游職業(yè)學(xué)院,江蘇 揚(yáng)州 225009)
2021年全年國內(nèi)旅游總?cè)舜?2.46億,同比增長12.8%;國內(nèi)旅游收入(旅游總消費(fèi))2.92萬億元,同比增長31.0%[1]。旅游產(chǎn)業(yè)已經(jīng)成為各地方經(jīng)濟(jì)發(fā)展的重要組成部分。截至2022年7月,全國5A級旅游景區(qū)總數(shù)已達(dá)318家,4A級景區(qū)更是高達(dá)千余家[2]。各個景區(qū)之間的服務(wù)競爭也越發(fā)激烈。由于疫情,各地的旅游業(yè)都受到了不同程度的影響,各個景區(qū)都在不斷地提高自身的服務(wù)質(zhì)量,吸引更多的游客。
隨著“互聯(lián)網(wǎng)+”時代的到來,攜程、美團(tuán)、驢媽媽等在線旅游網(wǎng)站不斷發(fā)展,大幅度地提升了整個旅游行業(yè)的在線服務(wù)水平,旅游業(yè)也越來越注重消費(fèi)者個性化的體驗(yàn)。越來越多的游客通過在線旅游網(wǎng)站來安排自己的旅游行程,并且將自己在旅游過程中的感受以及對景區(qū)的意見和建議,通過景區(qū)在線評論的方式發(fā)布在這些旅游網(wǎng)站上。這些景區(qū)在線評論包含著很多極具價值的信息,潛在的旅游用戶可以從中了解景區(qū)的餐飲、住宿、交通以及景區(qū)服務(wù)質(zhì)量等信息,從而依據(jù)自身的需求來判斷是否前往旅游。對于景區(qū)的經(jīng)營者而言,可以從中發(fā)現(xiàn)消費(fèi)者的關(guān)注點(diǎn)、滿意程度,從而根據(jù)這些評論作出針對性的改進(jìn)和提高,進(jìn)而可以更好地塑造景區(qū)形象和提升旅游服務(wù)質(zhì)量。所以對于旅游網(wǎng)站中景區(qū)的在線評論數(shù)據(jù)進(jìn)行爬取和分析,對于促進(jìn)旅游市場經(jīng)濟(jì)發(fā)展和提升旅游行業(yè)服務(wù)質(zhì)量都具有重要的意義。
中山陵園風(fēng)景區(qū)位于江蘇省省會南京市,1961年成為首批全國重點(diǎn)文物保護(hù)單位,2007年被列為首批國家5A級旅游景區(qū),是江蘇省的標(biāo)志性景區(qū)。如何更好地提高中山陵園風(fēng)景區(qū)的旅游服務(wù)質(zhì)量對于南京市乃至江蘇省的旅游業(yè)發(fā)展都具有重要的意義和影響。
文章以中山陵園景區(qū)為例,使用網(wǎng)絡(luò)爬蟲技術(shù)來獲取旅游網(wǎng)站中的相關(guān)在線評論,并從這些景區(qū)在線評論中分析出頻率較高的詞語,從而幫助景區(qū)能夠更好地針對游客關(guān)注的問題做出相應(yīng)的改進(jìn)和提高。
隨著大數(shù)據(jù)時代的到來,各行業(yè)都和互聯(lián)網(wǎng)緊密結(jié)合并進(jìn)行二次發(fā)展,與此同時各行業(yè)也產(chǎn)生大量的數(shù)據(jù),數(shù)據(jù)經(jīng)濟(jì)的發(fā)展促使各行業(yè)都非常重視行業(yè)數(shù)據(jù)的獲得、使用、分析。如何快速高效地獲取網(wǎng)絡(luò)數(shù)據(jù)成為亟待解決的問題,因此網(wǎng)絡(luò)爬蟲技術(shù)應(yīng)運(yùn)而生。網(wǎng)絡(luò)爬蟲是一個遵守既定規(guī)則自動從互聯(lián)網(wǎng)抓取相關(guān)信息的計(jì)算機(jī)程序[3-4]。網(wǎng)絡(luò)爬蟲還可以自動完成網(wǎng)絡(luò)數(shù)據(jù)的爬取和分析,隨著大數(shù)據(jù)時代的到來以及Python等開發(fā)語言的發(fā)展,網(wǎng)絡(luò)爬蟲技術(shù)正在廣泛地應(yīng)用在工作和生活中。
在實(shí)際工作中,很多程序語言都可以實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲技術(shù),比如Java語言的Apache Nutch、Webmagic框架;Python語言的 Scrapy、Pyspider框架;PHP 語言的QueryList框架等,這些爬蟲實(shí)現(xiàn)技術(shù)各有特點(diǎn),都可以實(shí)現(xiàn)大型的網(wǎng)絡(luò)數(shù)據(jù)下載,但是都有一定的學(xué)習(xí)成本。Python語言作為一種解釋性語言,具有良好的擴(kuò)展性,而且其語法簡潔,大量的第三方庫資源使得學(xué)習(xí)成本較低,可以非常方便地解決各種工作和生活中的問題[5-6],使用Python語言來構(gòu)建網(wǎng)絡(luò)爬蟲上手快,開發(fā)效率高,網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)過程一般如圖1所示。
圖1 網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)過程
網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)過程如下。
(1)獲取網(wǎng)頁整體數(shù)據(jù)。通過相應(yīng)的程序訪問指定的網(wǎng)頁并獲取網(wǎng)頁的整體數(shù)據(jù),實(shí)現(xiàn)的方法有很多。本文設(shè)計(jì)的程序中通過Python的Request庫來實(shí)現(xiàn)相應(yīng)的網(wǎng)絡(luò)請求,并且獲取整個網(wǎng)頁的數(shù)據(jù)。
(2)網(wǎng)頁解析獲取指定數(shù)據(jù)。獲取了整個網(wǎng)頁數(shù)據(jù)之后,需要獲取的數(shù)據(jù)包含在整個網(wǎng)頁數(shù)據(jù)中,需要對整個網(wǎng)頁進(jìn)行解析,獲取有用的數(shù)據(jù),過濾掉無用的數(shù)據(jù)。常用的網(wǎng)頁解析方法很多,比如Python中的BS4庫、正則表達(dá)式Re庫、Lxml庫等,本程序中通過使用Python中的Lxml庫,從整體網(wǎng)頁數(shù)據(jù)中提取游客關(guān)于景區(qū)的在線評論數(shù)據(jù)。
(3)存儲指定數(shù)據(jù)。將獲取的數(shù)據(jù)進(jìn)行數(shù)據(jù)庫存儲,常用的數(shù)據(jù)庫有MySql、MongoDB、Sqlite等。有時一些少量的文本數(shù)據(jù)也會存放在Excel文件或者文本文件中。
(4)URL隊(duì)列調(diào)度。網(wǎng)站中需要爬取的網(wǎng)頁地址很多,需要對已經(jīng)爬取過的、尚未爬取的、爬取錯誤的網(wǎng)頁地址進(jìn)行相應(yīng)的區(qū)分和調(diào)度。
當(dāng)獲得游客關(guān)于景區(qū)的在線評論數(shù)據(jù)后,因?yàn)檫@些評論數(shù)據(jù)是中文句子,所以需要對中文句子進(jìn)行分詞,并統(tǒng)計(jì)出其中的高頻詞語。由于中文的各個詞語之間,不像英文各單詞間有自然的分隔,所以中文評論分析中將語句分隔為詞語較為困難。Python中的Jieba庫是目前使用較多的中文分詞開源工具。Jieba庫的分詞效果較好,其基于前綴詞典實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況[7]。分詞之后,Jieba庫可以根據(jù)詞語出現(xiàn)的頻率的高低進(jìn)行排序,從而統(tǒng)計(jì)出其中出現(xiàn)頻率較高的詞語。
數(shù)據(jù)的可視化有很多表現(xiàn)形式,比如圖像和圖表。詞云可以根據(jù)文本中的關(guān)鍵詞生成圖像,詞語出現(xiàn)的頻率越高,其字體越大,越突出顯示,使得人們在極短的時間內(nèi)就能理解評論中的關(guān)鍵和主旨,十分直觀,是近年來比較流行的可視化方法。Python語言中一般采用wordcloud庫來進(jìn)行詞云的繪制。
本文設(shè)計(jì)的程序,就是通過使用Python語言構(gòu)建網(wǎng)絡(luò)爬蟲,自動下載驢媽媽旅游網(wǎng)站中關(guān)于中山陵園風(fēng)景區(qū)的游客評論,并將所有該景區(qū)的相關(guān)評論存儲在數(shù)據(jù)庫中。然后將所有的評論進(jìn)行中文分詞,并統(tǒng)計(jì)出其中出現(xiàn)頻率較高的詞,并繪制詞云,從而方便景區(qū)管理者能夠更好地了解游客的旅游感受和相關(guān)建議,從而做出針對性的改進(jìn)和提高。程序開發(fā)主要分為2個步驟。
本文設(shè)計(jì)的程序中需要爬取的景區(qū)在線評論數(shù)據(jù)頁面如圖2所示,根據(jù)網(wǎng)頁構(gòu)建技術(shù)分析可得,其采用了動態(tài)網(wǎng)頁中的局部刷新技術(shù),可以在開發(fā)者工具中獲得實(shí)際的評論數(shù)據(jù)請求網(wǎng)址。需要構(gòu)建網(wǎng)頁請求中的headers數(shù)據(jù),然后通過Python的Requests庫來下載整個網(wǎng)頁數(shù)據(jù)。通過觀察網(wǎng)頁底部的分頁碼可以得知,一共有186頁評論數(shù)據(jù)需要下載。
圖2 網(wǎng)站中游客的景區(qū)在線評論頁面
當(dāng)整個網(wǎng)頁數(shù)據(jù)下載完成后,需要使用Lxml庫來解析和提取網(wǎng)頁中的景區(qū)評論數(shù)據(jù),過濾掉其他不要的數(shù)據(jù)。最后是景區(qū)在線評論數(shù)據(jù)的存儲,由于下載的數(shù)據(jù)量較少,所以本程序中景區(qū)評論數(shù)據(jù)的存儲直接采用Python自帶的Sqlite數(shù)據(jù)庫。Sqlite作為一個輕量的嵌入式數(shù)據(jù)庫,它不需要配置服務(wù)器端,其數(shù)據(jù)庫就是一個文件,而且體積很小,可以很方便地集成到各個程序中。
景區(qū)在線評論數(shù)據(jù)爬取后,需要對整個評論數(shù)據(jù)進(jìn)行分析和統(tǒng)計(jì)。首先,從數(shù)據(jù)庫中讀取景區(qū)評論數(shù)據(jù),并使用Jieba庫來進(jìn)行中文分詞,去除掉一些無意義的詞之后,再統(tǒng)計(jì)出現(xiàn)頻率較高的詞。最后使用wordcloud庫根據(jù)詞語出現(xiàn)頻率的高低來繪制詞云,從而實(shí)現(xiàn)數(shù)據(jù)的可視化。整個程序開發(fā)流程圖如圖3所示。
圖3 程序開發(fā)流程圖
3.3.1 新建數(shù)據(jù)庫及數(shù)據(jù)表
3.3.2 下載景區(qū)評論并存儲
從網(wǎng)站中共下載1858條關(guān)于中山陵園風(fēng)景區(qū)的在線評論存儲在數(shù)據(jù)庫中,具體如圖4所示。
圖4 下載并存儲在數(shù)據(jù)庫中的景區(qū)評論
3.3.3 統(tǒng)計(jì)高頻詞并繪制詞云
根據(jù)景區(qū)評論中的高頻詞所生成的詞云如圖5所示,可以發(fā)現(xiàn)評論中出現(xiàn)“值得”“不錯”“喜歡”“開心”“推薦”等詞,說明游客對于景區(qū)的整體旅游體驗(yàn)較好;評論中也出現(xiàn)了景區(qū)中部分景點(diǎn)的名字,說明游客游玩這些景點(diǎn)之后的印象較為深刻或者游玩的意愿較為強(qiáng)烈,景區(qū)可以在相關(guān)景點(diǎn)開發(fā)更多的配套服務(wù);當(dāng)然評論中也出現(xiàn)“觀光車”“很大”“步行”“體力”“人太多”等詞,說明景區(qū)需要在交通出行、各景點(diǎn)之間的銜接方式、游客的流量調(diào)度等方面做出相應(yīng)的改進(jìn)。
圖5 根據(jù)景區(qū)評論中高頻詞所生成的詞云
隨著數(shù)據(jù)經(jīng)濟(jì)時代的到來,各行業(yè)都十分重視自身行業(yè)數(shù)據(jù)的分析和使用。文章提出了使用網(wǎng)絡(luò)爬蟲技術(shù),高效方便地下載關(guān)于景區(qū)的在線評論數(shù)據(jù),并對評論數(shù)據(jù)進(jìn)行一定的分析和研究,從而促使景區(qū)的服務(wù)能夠做出針對性的改進(jìn)和提高。文中所述的爬蟲程序在容錯性和程序性能方面有待進(jìn)一步提高;但是在思路和方向上做出了一定的嘗試和創(chuàng)新,對各景區(qū)服務(wù)品質(zhì)的提升具有一定的指導(dǎo)和借鑒意義。