張 樂,孫怡芳
(運城學院數(shù)學與信息技術(shù)學院,山西 運城 044000)
運城地區(qū),自古就有“河東”的稱號,位于黃河的中游,與陜西省渭南市、河南省三門峽市隔黃河相望。運城地區(qū)的名勝古跡不勝枚舉,文物旅游景點高達1600余處,其中市級以上重點文物保護單位170余處,全國重點文物保護單位90處,是全國重點文物保護單位數(shù)量最多的地級市。但網(wǎng)絡上有關運城旅游的數(shù)據(jù)復雜繁瑣,如何快速的通過網(wǎng)絡數(shù)據(jù)來了解運城的旅游的發(fā)展狀況,是本文的主要研究意義。
本文主要使用Python 語言實現(xiàn),主要包括數(shù)據(jù)的爬取和可視化兩部分。首先通過網(wǎng)絡爬蟲采集數(shù)據(jù),使用requests提取網(wǎng)頁源碼,利用xpath、re和Beautiul-Soup提取源碼中目標數(shù)據(jù),以csv文件進行存儲;其次對爬取的數(shù)據(jù)進行清洗處理并進行可視化分析,使用Matplotlib 庫將數(shù)據(jù)呈現(xiàn)為柱狀圖、餅圖和詞云等,使用wordcloud庫進行詞云的制作。
網(wǎng)絡爬蟲,是按照一定的規(guī)則和策略自動爬取網(wǎng)站某些數(shù)據(jù)信息的程序。網(wǎng)絡爬蟲是模擬瀏覽器的過程,通過模擬瀏覽器進行網(wǎng)站的訪問,訪問到瀏覽器后將網(wǎng)頁進行下載爬取,從下載的網(wǎng)頁中提取目標數(shù)據(jù),然后進行解析,從而達到自動爬取的目的。Python語言是網(wǎng)絡爬蟲中使用最為廣泛的語言。
可視化技術(shù)是數(shù)據(jù)分析的一種,是將復雜且繁瑣的大量數(shù)據(jù)經(jīng)過可視化處理,形成直觀、高效、容易理解的圖表,分析得出數(shù)據(jù)中有價值的信息,然后更深層次的理解數(shù)據(jù)。
Matplotlib屬于Python中的一個可視化繪圖庫,其功能強大且具有豐富的擴展,夠?qū)崿F(xiàn)柱狀圖、餅圖、散點圖、折線圖等的繪制,從而實現(xiàn)快捷的可視化。
詞云通過Python 中的第三方庫使用wordcloud 庫實現(xiàn),是對文本中高頻關鍵詞進行可視化的展現(xiàn),將多數(shù)低頻、質(zhì)量低、與主題無關的詞語過濾,將質(zhì)量高且頻次高的篩選出進行展示,方便使用者對長文本的主旨快速掌握。
運城旅游數(shù)據(jù)可視化分析的數(shù)據(jù)采集模塊主要是對旅游網(wǎng)站中有關運城的旅游數(shù)據(jù)進行爬取、解析和數(shù)據(jù)的存儲功能。數(shù)據(jù)的采集分網(wǎng)頁分析和數(shù)據(jù)爬取兩部分,流程圖如圖1所示。
圖1 數(shù)據(jù)的采取流程圖
國內(nèi)各大旅游網(wǎng)站中,其中途牛、驢媽媽、同程旅游網(wǎng)站在有關行程路線、游記、點評等有不同程度的缺失,有關運城的旅游信息較少。相對而言,“馬蜂窩”和“去哪兒”旅游網(wǎng)站各方面信息比較完整,有關運城市的旅游數(shù)據(jù)很豐富,保證了數(shù)據(jù)的相對完整性、真實性。
首先查看網(wǎng)頁源代碼,以“去哪兒旅游”網(wǎng)為例,使用Edge 瀏覽器打開“去哪兒旅游”網(wǎng)站運城地區(qū)的主頁,然后按F12鍵或者鼠標右鍵點擊選擇“檢查”,可打開調(diào)試窗口查看到網(wǎng)頁源代碼。
在后續(xù)爬蟲過程中要進行反爬蟲機制,要進行請求頭的模擬,通過調(diào)試窗口查找瀏覽器的請求頭,如圖2所示。
圖2 請求頭頁面
網(wǎng)頁爬取,是利用requests 對網(wǎng)頁的源代碼進行爬取下載。
礦物成分簡單,礦石礦物主要有閃鋅礦,次為方鉛礦、黃鐵礦;脈石礦物主要有方解石,見白云石、重晶石等。閃鋅礦自形—半自形粒狀,結(jié)晶較粗,一般粒徑為0.25~2 mm,約占80~90%,多為淡黃色~米黃色,肉眼清晰易辨,少量高角度細脈中閃鋅礦為棕褐色—黑褐色;方鉛礦以自形晶為主,粒徑一般1~4 mm;黃鐵礦自形—半自形晶粒狀產(chǎn)出,以粒徑0.2~0. 5 mm為主。方解石很普遍,存在于各種礦石類型,白云石、重晶石主要分布于細脈中。
首先確定網(wǎng)頁的初始鏈接,使用requests 庫中的get 方法進行HTTP 請求,但如果以此方法直接對網(wǎng)站進行訪問,會有錯誤產(chǎn)生,因為網(wǎng)站服務器檢測到并非瀏覽器訪問,拒絕訪問。所以要制定相應的反爬蟲策略,反爬蟲的方法主要是爬蟲時進行偽裝,來模擬瀏覽器的訪問。通過創(chuàng)建請求頭來進行模擬,在URL鏈接插入的同時將已經(jīng)準備好的瀏覽器請求頭填入,來避免爬蟲被攔截。
在使用requests 獲取到網(wǎng)站源代碼后,得到的HTML 文檔,其含有關于網(wǎng)站所的HTML 標簽,目標數(shù)據(jù)包含在這些標簽中,因此要對這些標簽進行解析來獲取想要的信息。在對HTML 文檔進行解析時,主要使用BeautifulSoup 庫來進行解析,同時也可以使用re正則或者Xpath對進行解析提取目標信息。
在對網(wǎng)頁進行分析后發(fā)現(xiàn),每頁中各個景點的信息都在<ulclass=”list_itemclrfix”></ul>模塊下,如圖3所示。然后調(diào)用BeaytifulSoup 中的方法find_all,傳入?yún)?shù)name 得到列表,通過遍歷列表,獲取每個li 標簽中的值,得到每個景點的相應信息。
圖3 景點的信息所在模塊
將爬取到的數(shù)據(jù)存儲到一個csv 文件中,包括用戶的ID、景點的po(i景點的編號)、用戶的評論分數(shù)、評論時間以及評論等內(nèi)容。
數(shù)據(jù)分析過程主要是對運城旅游數(shù)據(jù)中的用戶評論進行處理,這部分主要處理非結(jié)構(gòu)化數(shù)據(jù),對于用戶評論這些非結(jié)構(gòu)化數(shù)據(jù),需要用Jieba庫進行分詞以及去掉停用詞處理。
在使用Jieba 分詞時,首先進行初始化字典,然后切分短語,利用正則將文本切分成一個個語句,通過字符串匹配,構(gòu)建所有可能分詞情況的又向無環(huán)圖(DAG)。然后構(gòu)建節(jié)點最大路徑概率,以及結(jié)束位置。計算每個漢字節(jié)點到語句結(jié)尾的所有路徑的最大概率,并記下最大概率時再DAG中對應的該字詞的結(jié)束位置。根據(jù)節(jié)點的路徑進行字詞切割分組的結(jié)果就是分詞結(jié)果,Jieba 通過yield 將分好的詞存儲在列表中逐個返回。
分詞結(jié)束后,會發(fā)現(xiàn)很多對于分析結(jié)果無意義的詞,將這些詞稱為停用詞。例如“的”,“就”,“有”,“可以”,“也”,“都”,“很”等字詞。所以需要將這些詞過濾掉從而減少數(shù)據(jù)噪聲,提高分析效率。過濾詞使用ordcloud 中的方法stopwords,直接將停用的詞編輯到stopwords即可。
數(shù)據(jù)可視化主要包括Matplotlib 圖表的生成和wordcloud詞云制作。
⑴評論量分析
通過Pandas 從csv 文件中將需要的數(shù)據(jù)進行提取切片然后傳入Matplotlib 中進行圖表繪制,將2017 年之后的每年的評論量繪制成條形圖,如圖4所示。
圖4 每年的評論量
由圖4可看出,近些年來,運城的旅游人數(shù)在逐年增加,2020 年和2021 年上半年因受國內(nèi)外疫情影響,旅游人數(shù)減少,但是也有較多的旅游人次,可見運城的旅游發(fā)展逐年受到關注,知名度越來越高。
⑵評分結(jié)果分析
通過matplotlib 庫對網(wǎng)頁中有關運城旅游評分結(jié)果進行分析,并繪制為餅狀圖,如圖5所示。
圖5 評分結(jié)果
由圖5可看出,游客對運城景區(qū)的評價分數(shù),超過一半的游客對運城的景區(qū)給予滿分評價,百分之九十的游客給予比較滿意的評價,百分之十五左右的游客不太滿意,可見游客對運城旅游大部分評價很高。
⑶景點數(shù)量分析
通過對運城各個縣區(qū)的景點數(shù)量進行爬取分析,繪制出條形圖,如圖6所示。
由圖6可看出,運城的旅游資源十分豐富,并且運城的旅游分布廣泛,每個縣區(qū)都有一定數(shù)量的旅游景點。其中運城鹽湖區(qū)和永濟市、芮城縣的旅游景點數(shù)量最多,聞喜、絳縣的旅游景點數(shù)量最少。
圖6 各個縣區(qū)的景點數(shù)量
⑷評論文本分析
通過Jieba 分詞將有關運城旅游的評論文本進行分詞,同時篩選出停用詞,然后傳入wordcloud 進行詞云的生成,如圖7所示。
圖7 景點評論文本
由圖7 可看出,運城的旅游景點的吸引游客之處主要在于景點的歷史、建筑風格、風景特色、壁畫以及黃河文化,運城比較受歡迎的景點有鸛雀樓、黃河大鐵牛、永樂宮、普救寺以及解州關帝廟。詞云中的“值得”一詞說明游客對運城景點反饋很好。
本文通過Python 網(wǎng)絡爬蟲技術(shù)對運城旅游數(shù)據(jù)進行可視化分析,快速了解到運城旅游發(fā)展現(xiàn)狀:①在2017年以來運城旅游人數(shù)在逐年上升,運城旅游的知名度提高;②游客對運城的評價很高,游客對運城的旅游給予肯定的態(tài)度;③運城的旅游資源十分豐富,并且分布范圍廣;④運城旅游主要受歡迎的景點有黃河大鐵牛、永樂宮、普救寺等景點。
由此可知,運城的建筑文物十分豐富,應該加強文物的修復與保護力度,重視其中的歷史文化與藝術(shù)價值,保護好運城的文物旅游資源;同時有關黃河文化的旅游也要大力發(fā)展,可以打造獨有的黃河文化旅游路線。
本文數(shù)據(jù)可視化的呈現(xiàn),對運城未來旅游業(yè)的發(fā)展可以提供一定的參考價值,但是還有很多不足之處需要改進,例如數(shù)據(jù)的獲取量并不是十分充足,還有諸多有關運城旅游的特色之處沒有體現(xiàn)出來,可以根據(jù)旅游網(wǎng)站不斷增加的數(shù)據(jù)來彌補現(xiàn)有的不足之處,從而實現(xiàn)更全面、更深入的分析。