趙薔
(咸陽(yáng)師范學(xué)院計(jì)算機(jī)學(xué)院,陜西咸陽(yáng) 712000)
我國(guó)旅游業(yè)在國(guó)家的大力推動(dòng)下出現(xiàn)了高增速的發(fā)展?fàn)顟B(tài),旅游業(yè)已成為我國(guó)GDP 的重要組成部分,是具有顯著發(fā)展速度與競(jìng)爭(zhēng)優(yōu)勢(shì)的產(chǎn)業(yè)[1]。據(jù)旅游部發(fā)布的數(shù)據(jù)顯示,旅游業(yè)對(duì)GDP 綜合貢獻(xiàn)從2014年的6.61萬(wàn)億元上升到2018年9.94萬(wàn)億元,旅游業(yè)GDP比重占總GDP貢獻(xiàn)榜單的11.04%。2018年我國(guó)從事旅游行業(yè)和相關(guān)產(chǎn)業(yè)的就業(yè)人數(shù)達(dá)7 991 萬(wàn)人,占全國(guó)就業(yè)總?cè)丝?0.3%[2]。與此同時(shí),在線旅游服務(wù)作為新興的生活模式,在國(guó)內(nèi)發(fā)展十分迅速,已成為旅游業(yè)的中流砥柱[3]。
在線旅游是指旅游消費(fèi)者通過(guò)網(wǎng)絡(luò)向旅游服務(wù)提供商預(yù)定旅游產(chǎn)品或服務(wù),并通過(guò)網(wǎng)上支付或者線下付費(fèi),旅游主體通過(guò)網(wǎng)絡(luò)進(jìn)行旅游產(chǎn)品營(yíng)銷[4]。在此過(guò)程中,人們通過(guò)搜索引擎瀏覽和查詢相關(guān)旅游信息。而隨著海量數(shù)據(jù)的出現(xiàn),搜索引擎技術(shù)凸顯了其重要性[5]。為了快速搜索到所需信息,聚焦網(wǎng)絡(luò)爬蟲(chóng)引起人們關(guān)注。
結(jié)合旅游網(wǎng)站的特點(diǎn),創(chuàng)建基于Python 的聚焦型網(wǎng)絡(luò)爬蟲(chóng),爬取旅游網(wǎng)站的數(shù)據(jù),然后通過(guò)數(shù)據(jù)分析和可視化,給出全國(guó)熱門(mén)旅游城市和地區(qū)的分布和排名情況。
網(wǎng)絡(luò)爬蟲(chóng)(Web Crawler)是一種按照一定規(guī)則自動(dòng)抓取萬(wàn)維網(wǎng)信息的程序或者腳本[6],被廣泛應(yīng)用于搜索引擎以及相關(guān)網(wǎng)站的設(shè)計(jì)。爬蟲(chóng)技術(shù)在數(shù)據(jù)分析、科學(xué)研究、web 安全、輿情監(jiān)控等領(lǐng)域都有廣泛應(yīng)用。在數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、圖像處理等科學(xué)研究領(lǐng)域,通過(guò)編寫(xiě)爬蟲(chóng)腳本程序在網(wǎng)上爬取信息,為理論研究提供數(shù)據(jù)[7]。網(wǎng)絡(luò)爬蟲(chóng)主要分為以下幾種類型:
1)通用型網(wǎng)絡(luò)爬蟲(chóng)[8]。其針對(duì)的目標(biāo)范圍最廣,又被稱為全網(wǎng)爬蟲(chóng),缺點(diǎn)是爬行效率低而且對(duì)于網(wǎng)頁(yè)抓取數(shù)據(jù)的質(zhì)量難以保證。
2)增量式網(wǎng)絡(luò)爬蟲(chóng)。將已經(jīng)爬取過(guò)的網(wǎng)頁(yè)作更新和添加操作,其時(shí)間成本小但實(shí)現(xiàn)難度較大,算法要求高[9]。
3)Deep web爬蟲(chóng)??煞譃閟urface web和deep web,前者針對(duì)表層網(wǎng)絡(luò)和深層網(wǎng)絡(luò),主要用來(lái)對(duì)大多數(shù)靜態(tài)網(wǎng)站頁(yè)面進(jìn)行爬取,后者則是對(duì)動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行爬取[10]。
4)聚焦型網(wǎng)絡(luò)爬蟲(chóng)。也稱為主題網(wǎng)絡(luò)爬蟲(chóng),其原理是在通用網(wǎng)絡(luò)爬蟲(chóng)的基礎(chǔ)上添加機(jī)制和步驟,以實(shí)現(xiàn)特定的功能需求[11]。通過(guò)制定相關(guān)規(guī)則,過(guò)濾掉已經(jīng)抓取或不需要的數(shù)據(jù),能夠在短時(shí)間內(nèi)從網(wǎng)絡(luò)上抓取大量有用數(shù)據(jù),這種爬蟲(chóng)目標(biāo)明確且工作量較小[12],是目前應(yīng)用較多的一種網(wǎng)絡(luò)爬蟲(chóng)。
聚焦型網(wǎng)絡(luò)爬蟲(chóng)的實(shí)現(xiàn)原理如下:
①根據(jù)數(shù)據(jù)需求和功能需求,定義爬蟲(chóng)程序的爬取目標(biāo),對(duì)爬取目標(biāo)內(nèi)容進(jìn)行描述;
②獲取初始的URL,即最初的網(wǎng)址;
③根據(jù)去哪兒網(wǎng)初始的URL 爬取頁(yè)面,并獲得新的URL,每一個(gè)被爬取數(shù)據(jù)的URL 都是不同的,爬取一個(gè)數(shù)據(jù)后,把這個(gè)URL 加入到已爬取URL 列表里,接著獲取新的URL,此過(guò)程本質(zhì)是去重和判斷是否已爬取內(nèi)容;
④在新的URL 中,過(guò)濾掉與定義爬取目標(biāo)不相關(guān)的鏈接和信息數(shù)據(jù);
⑤將判斷和過(guò)濾的URL 鏈接地址加入到URL隊(duì)列里面;
⑥再次獲取URL,重復(fù)以上步驟直到滿足設(shè)置的停止條件時(shí),或無(wú)法獲取新的URL地址時(shí),停止爬取。
聚焦型網(wǎng)絡(luò)爬蟲(chóng)的原理如圖1 所示。
圖1 聚焦性網(wǎng)絡(luò)爬蟲(chóng)的流程圖
為了獲取旅游網(wǎng)站的大量旅游信息并進(jìn)行分析,研究的內(nèi)容包含四部分:聚焦型網(wǎng)絡(luò)爬蟲(chóng)、數(shù)據(jù)儲(chǔ)存、數(shù)據(jù)預(yù)處理以及數(shù)據(jù)分析與可視化。
創(chuàng)建專門(mén)針對(duì)旅游網(wǎng)站的聚焦型網(wǎng)絡(luò)爬蟲(chóng),針對(duì)旅游網(wǎng)站的目標(biāo)數(shù)據(jù)進(jìn)行爬取。以Python 語(yǔ)言和Scrapy 框架創(chuàng)建Scrapy 項(xiàng)目,在CMD 窗口中,運(yùn)行scrapy startproject 命令創(chuàng)建爬蟲(chóng)項(xiàng)目框架,其中包含項(xiàng)目配置文件、Python 模塊、item 文件、piplines 管道文件、爬蟲(chóng)目錄等。通過(guò)建立Cookie 池定時(shí)更換Cookie、偽裝user-agent、設(shè)置爬取時(shí)間間隔來(lái)應(yīng)對(duì)網(wǎng)頁(yè)的反爬。
隨著大數(shù)據(jù)與云計(jì)算的發(fā)展,MongoDB 作為一種非關(guān)系型數(shù)據(jù)庫(kù),其使用越來(lái)越廣泛。MongoDB是一個(gè)面向文檔存儲(chǔ)的數(shù)據(jù)庫(kù)[13],它將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成,字段值可以包含其他文檔/數(shù)組及文檔數(shù)組。MongoDB能夠?yàn)閣eb 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案[14],具有高性能、可擴(kuò)展、易部署、易使用、存儲(chǔ)數(shù)據(jù)非常方便等特點(diǎn)。
使用非關(guān)系型數(shù)據(jù)庫(kù)MongoDB 儲(chǔ)存從網(wǎng)絡(luò)爬取的數(shù)據(jù),在Pycharm 編輯器下進(jìn)行MongoDB 數(shù)據(jù)庫(kù)的可視化配置安裝,首先執(zhí)行啟動(dòng)操作,等待連接建立,當(dāng)連接被建立后,開(kāi)始打印日志信息,然后使用MongoDB shell 來(lái)連接MongoDB 服務(wù)器。
數(shù)據(jù)預(yù)處理模塊主要負(fù)責(zé)對(duì)數(shù)據(jù)采集模塊所獲取的原始數(shù)據(jù)做進(jìn)一步的處理與分析,消除網(wǎng)頁(yè)噪聲、去除重復(fù)網(wǎng)頁(yè)及利用網(wǎng)頁(yè)文字分詞技術(shù)進(jìn)行網(wǎng)頁(yè)內(nèi)容和特征項(xiàng)的提取。
在數(shù)據(jù)清洗環(huán)節(jié),一般從數(shù)據(jù)的合法性、完整性、唯一性和正確性對(duì)采集的數(shù)據(jù)進(jìn)行檢驗(yàn)。對(duì)去哪兒網(wǎng)上采集的旅游數(shù)據(jù)進(jìn)行清洗也是從這幾方面進(jìn)行的,并使用排序算法以及isnull 和drop 等技術(shù)對(duì)數(shù)據(jù)進(jìn)行檢驗(yàn)和清洗。清洗之后的旅游數(shù)據(jù)信息完整準(zhǔn)確,文件中包含區(qū)域、名稱、景點(diǎn)id、類型、級(jí)別、熱度、地址、特色、想要去哪里旅游、哪些城市等信息字段。
數(shù)據(jù)可視化能夠更加有效、直接地反映數(shù)據(jù),也有利數(shù)據(jù)分析,可以采用柱狀圖來(lái)展現(xiàn)全國(guó)各個(gè)城市旅游地區(qū)的熱度。旅游地區(qū)的熱門(mén)程度通過(guò)該地區(qū)內(nèi)旅游景點(diǎn)受關(guān)注程度體現(xiàn),景點(diǎn)的主要參照點(diǎn)是級(jí)別和熱度。根據(jù)熱門(mén)景點(diǎn)的出現(xiàn)次數(shù),并結(jié)合其熱度對(duì)全國(guó)旅游熱門(mén)地區(qū)進(jìn)行統(tǒng)計(jì)分析。根據(jù)地區(qū)內(nèi)熱門(mén)景點(diǎn)的出現(xiàn)次數(shù),對(duì)其求和從而得到該地區(qū)的熱門(mén)程度。
大陸所有省、市、自治區(qū)熱門(mén)旅游地區(qū)的旅游熱度餅圖如圖2 所示。
圖2 熱門(mén)地區(qū)的熱度統(tǒng)計(jì)餅圖
從圖2 可以看出,全國(guó)排名前十位的熱門(mén)旅游省份分別是安徽省、山東省、河北省、北京市、河南省、陜西省、江西省、福建省、甘肅省和新疆維吾爾自治區(qū)。其中排在前三位的省份內(nèi)景區(qū)所有采集到的信息比重已經(jīng)超過(guò)了10%,第三名的河北省已經(jīng)達(dá)到13%。
詞云(WordCloud)是目前流行的可視化方法,是文字組件的一種[15]。詞云通過(guò)字體的大小反映分詞出現(xiàn)的頻率,是由詞匯組成類似云的彩色圖形,對(duì)網(wǎng)絡(luò)文本中出現(xiàn)頻率較高的關(guān)鍵詞予以視覺(jué)上的突出顯示,形成“關(guān)鍵詞云層”或“關(guān)鍵詞渲染”,從而過(guò)濾掉大量文本信息,使瀏覽者一眼掃過(guò)文本就可以領(lǐng)略其主旨。詞云的作用是快速感知最突出的文字、快速定位按字母順序排列的文字中相對(duì)突出的部分,其本質(zhì)是點(diǎn)圖,是在相應(yīng)坐標(biāo)點(diǎn)繪制具有特定樣式的文字的結(jié)果[16]。
在Pycharm 里面完成詞云的生成。首先下載Pycharm 第三方庫(kù)中文jieba 分析詞庫(kù),通過(guò)第三方庫(kù)Pandas 和Matplotlib、wordcloud、PIL 和numpy 實(shí)現(xiàn)數(shù)據(jù)可視化,讀取數(shù)據(jù)并保存到腳本文件,通過(guò)在前面加入#encoding=gbk 防止出現(xiàn)格式錯(cuò)誤,使用jieba分詞提取所爬取數(shù)據(jù)中的高頻率分詞,繪制300×400 大小的畫(huà)布,導(dǎo)入詞云的背景圖生成詞云。
對(duì)“去哪兒網(wǎng)”上大陸所有省、市、自治區(qū)的旅游熱度進(jìn)行統(tǒng)計(jì),其詞云如圖3 所示。
圖3 大陸所有省市自治區(qū)旅游熱度詞云
對(duì)“去哪兒網(wǎng)”上大陸地區(qū)旅游熱度排名前15的省、市、自治區(qū)進(jìn)行統(tǒng)計(jì),其詞云如圖4 所示。
圖4 排名前15的旅游熱門(mén)地區(qū)熱度詞云
通過(guò)研究網(wǎng)絡(luò)爬蟲(chóng)技術(shù),提出一種專門(mén)針對(duì)旅游網(wǎng)站的聚焦型網(wǎng)絡(luò)爬蟲(chóng),使用MongoDB 存儲(chǔ)爬取的數(shù)據(jù),并進(jìn)行預(yù)處理,最后使用Pandas庫(kù)和Matplotlib庫(kù)等第三方庫(kù)進(jìn)行數(shù)據(jù)分析和可視化,統(tǒng)計(jì)熱門(mén)旅游地區(qū)排名情況。實(shí)驗(yàn)結(jié)果表明,提出的聚焦網(wǎng)絡(luò)爬蟲(chóng)能夠提高對(duì)旅游數(shù)據(jù)的檢索效率,在旅游網(wǎng)站海量數(shù)據(jù)里快速找到所需信息,能夠?yàn)槁糜螑?ài)好者以及同時(shí)為各地區(qū)、景點(diǎn)優(yōu)化服務(wù)提供參考,促進(jìn)旅游行業(yè)的發(fā)展。
由于聚焦型網(wǎng)絡(luò)爬蟲(chóng)的局限性,不能實(shí)時(shí)更新數(shù)據(jù)。后續(xù)的研究工作將對(duì)系統(tǒng)進(jìn)一步優(yōu)化,將聚焦網(wǎng)絡(luò)爬蟲(chóng)和增量網(wǎng)絡(luò)爬蟲(chóng)相結(jié)合,用于旅游網(wǎng)站的數(shù)據(jù)爬取。