李軒宇,趙穎,肖忠良,李軒
摘要:網站與搜索引擎中爬蟲屬于核心元素,網絡爬蟲可以在網絡中快速抓取海量有用信息。為了對旅游網站中信息數據展開爬取,對網站中熱門景點與熱門地區(qū)進行分析,研究一種以SCRAPY框架為基礎的網絡爬蟲,分析爬取的數據,借助第三方庫對數據信息進行可視化處理。最終試運行結果顯示,該程序可以對微博、馬蜂窩與其他數據量密集網站進行有效爬取。
關鍵詞:Python爬蟲;旅游網站;數據分析;可視化設計
中圖分類號:TP391? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)33-0058-03
當前,在線旅游已經成為人們新興生活模式,發(fā)展迅速。在線旅游主要指游客借助網絡為游客提供預訂旅游服務或是產品,同時借助線下付費、網上支付,旅游公司借助網絡營銷旅游產品。此過程,游客借助搜索引擎對旅游信息進行瀏覽、查詢。在出現(xiàn)海量數據之后,搜索引擎重要性開始顯現(xiàn)出來,為了對所需信息進行快速搜索,Python爬蟲開始引起民眾注意[1]。
1 Python爬蟲技術及語言優(yōu)勢
1.1 Python爬蟲技術
網絡爬蟲,主要是根據相應規(guī)則對旅游網站中腳本或是程序進行自動抓取,在網站設計、搜索引擎等方面具有廣泛應用。在輿情監(jiān)控、Web安全、科學研究以及數據分析等方面應用廣泛。在圖像處理、機器學習以及數據挖掘等領域,借助腳本程序編寫,在網上完成信息爬取,為研究活動提供良好數據支持。
1.2 Python語言優(yōu)勢
(1)Python語言具有較大靈活性與強大性特點,相比于Java、C++、C等語言,該語言語法簡單,無須設置復雜代碼即可以實現(xiàn)強大功能。比如,Java語言需要設置100行代碼才可以實現(xiàn)相應功能,而Python僅需要設置50行代碼即可以實現(xiàn)相應功能,充分減小學習難度。
(2)Python具有開源免費優(yōu)勢,即無須花費任何費用即能夠使用,人們直接下載即可,同時可以修改其源碼,具有良好便捷性[2]。
(3)效率高。Python第三方庫較為強大,人們下載調用庫,并以此為基礎開展開發(fā)作業(yè),即能夠實現(xiàn)復雜功能,有效節(jié)省功能開發(fā)時間,防止重復開發(fā)現(xiàn)象。
(4)Python具有較強可移植性。因為Python開源性特點,所以Python可移植性良好,可以在其他平臺移植Python,比如蘋果、安卓、Linux、window等系統(tǒng)。
2 基于Python爬蟲的旅游網站數據分析
2.1 旅游網站數據分類
(1)聚焦型爬蟲網站數據。此類數據主要是基于網絡爬蟲,添加步驟與機制,進而實現(xiàn)特定功能。借助制定規(guī)則,將不需要或是已經抓取的旅游數據過濾掉,可以快速通過網絡抓取海量有用信息,此種爬蟲數據工作量小、目標明確。
(2)Deep web爬蟲數據。涵蓋depp web與surface web兩種類型,前者主要是爬取動態(tài)網絡;后者一般針對深層網絡與表層網絡,一般爬取靜態(tài)旅游網站。
(3)增量式爬蟲數據。對于已經爬取的旅游網站開展添加與更新操作,其難度較大,但是時間成本小,在算法方面具有較高要求。
(4)通用型爬蟲數據。目標范圍廣泛,但是爬行效率低,無法保證旅游數據抓取質量。
2.2 Python爬蟲下的數據分析
在云計算和大數據技術快速發(fā)展過程中,MongoDB數據庫得到廣泛應用。MongoDB主要是面向信息儲存,其能夠把數據信息儲存成文檔,信息結構由鍵值對構成,并且字段值能夠涵蓋其他文檔數組與文檔/數組。該數據庫可以為Web提供可拓展數據庫處理方案,具有易使用、易部署、可拓展、高性能等特點。
數據可視化可以將數據信息更加直接、有效地反映出來,保證數據分析質量,借助柱狀圖對各個地區(qū)旅游熱度進行展現(xiàn)。旅游地區(qū)熱度借助該地區(qū)景點的受關注情況進行體現(xiàn),其參照點為熱度與級別。按照熱門景點實際出現(xiàn)頻率,同時根據其熱度對全國熱門地區(qū)開展統(tǒng)計分析,按照地區(qū)熱門景點出現(xiàn)頻率,開展求和計算,進而得到該地區(qū)熱度情況[3]。
3 基于Python爬蟲的旅游網站數據的可視化設計
3.1 程序描述
本文Python爬蟲代碼系統(tǒng)涵蓋3個代碼段模塊,就是操作預備、跟蹤捕獲與分析整理3個代碼段模塊。
操作預備模塊核心功能如下:跟蹤捕獲數據初期,即限制完成data類型,在計算機中網絡使用者的識別名稱進行轉變,或是對自動登錄信息進行轉變,實現(xiàn)多次訪問。
對于跟蹤捕獲模塊,核心功能如下:主體款框架,通過第一個定義的網站網絡頁面進行跟蹤捕獲,完成相應操作后進行篩選識別,通過返回數值相應范式將各個回調函數啟動。
分析整理模塊,主要承接上述操作,對data進行解構,評價data是否符合提前制定data范式要求,若是所獲data為相同類型數據,可以通過MongoDB或是Not only sql進行儲存,否則可以將其統(tǒng)一地址符向排列模塊傳輸進行排列,用于跟蹤捕獲[4]。
3.2 程序架構與開發(fā)
(1)操作預備模塊。在該代碼模塊中,需要限制data。此時研究人員可能使用IRM.PY文件,其屬于data跟蹤捕獲容器,其對跟蹤捕獲操作中數據類型規(guī)則進行了定義。對于爬蟲代碼系統(tǒng),編寫人員針對所捕獲數據根據以下方法對類型進行限制。
Class Score,對旅游網站中酒店評價數據范式進行限制。
Class Locatinon,對所捕獲酒店地址數據范式進行限制。
Class Commeent,對所捕獲酒店入住評論數據范式進行限制。
Class Facilities,對所捕獲酒店的硬件設施信息數據范式進行限制。
以下是Facilities具體定義,可以選擇Field()代碼對data進行限制, 如下所示:
[Class? ?FACILTIESItem:]
["酒店硬件"]
[_id=Field()#酒店識別號]
[Name=Field()#酒店名稱]
[Key words=Field()#關鍵詞]
[Web=Field()#網絡設施]
[Transportation=Field()#交通設施情況]
[Children’s facilities=Field()#兒童設施情況]
[Breakfast fast=Field()#早餐信息]
[Pet=Field()#寵物信息]
[Room=RField()#房間數量]
[Open=Field()#開業(yè)時間]
(2)跟蹤捕獲模塊。SPIDERS.PY文件中分布著該字段的程序表述,其是本文爬蟲代碼程序關鍵功能單元。在該功能單元中編碼人員對Tourism Spinder類進行限定。
第一、HOST與NAME代碼解釋。HOST對跟蹤捕獲范圍進行限制。NAME主要是對SPIDER稱呼規(guī)范完成。
第二、START_URLS解釋,其代表先啟動原始資源符地址的排列順序表,指引爬蟲代碼程序先跟蹤的對象。代碼程序即刻跟蹤捕獲網站信息頁請求,實現(xiàn)跟蹤捕獲?;诖朔N場景,為了保證編寫便捷性,選擇域名代表號ui資源符地址進行表示。為了保證程序可以對正規(guī)、完整的url進行體現(xiàn),可以借助限定方式對HOST限制域和域名代表號進行結合。
第三、[FINISH_ID:SET()]與[SCRAWL_ID]函數主要利用SET系統(tǒng)變量對所捕獲url與基金捕獲url進行替代,此種方式能夠防止重復操作。
在[TOURISM SPIDER]中,編寫人員對核心功能函數進行限制。包括[PARSE0()]、[START_REQUESTS()]函數。[START_REQUESTS()]主要是將網站信息頁觸發(fā);[PARSE0()、PARSE1()]等與酒店評分、酒店地址、入住評論、硬件設施等數據相對應[5]。
(3)后續(xù)信息處理。SPIDERS.PY文件能夠細致完成系統(tǒng)性、整套操作,可以將其作為信息處理系統(tǒng),如下所示:
[class Mongo DBPiplelineobject:]
[def _init_(self):]
[clinet=pymongo.Mongo client“l(fā)ocalhot”,27017]
[db=client["mafengwo"]]
[self.FACILITIES=db["COMMENT"]]
[self.LOCATION=db["LOCATION"]]
[self.SCORE=db["SCORE"]]
[defprocessitemself.item,spider:]
[if isinstanceitem,F(xiàn)ACILITIES Item:]
[try:]
[self.FACILITIES.insert(dict(item))]
[except Exception:]
[pass]
SPIDERS.PY對Mondo Dbpipeline含義進行限制,涵蓋2種方式,與MongoDB通信主要借助Pymongo字碼段實現(xiàn)。
[clinet = pymongo.Mongo Client("localhost", 27017)]
進行與data客戶端接口,在后續(xù)開啟“mafaengwo”名稱data庫,各個代碼段構建SCORE、LOCATION、FACILITIES以及COMMENT表格,主要功能就是對相關數據進行儲備。
[PROCESS_ITEM()]可以對IEM結構范式進行評價,若是評價結果屬于FACILITIES則向相應表格中插入。在此環(huán)節(jié),可以進展到末端data處理[6]。
3.3 程序調試與運行
(1)試運行軟硬件。選擇Windows7系統(tǒng),軟件選擇[Python 2.7 SCRAPY 1.0];硬件選擇[INTEL COREI7-3317u @1.70ghz 8G ram],網絡環(huán)境選擇100兆的光纖寬帶。
(2)爬蟲工作狀態(tài)。進行試運行時,選擇馬蜂窩網站中酒店信息進行跟蹤捕獲,其效率可以達到300萬/d。試運行時,需要穩(wěn)定頻率對Cookies中用戶信息進行變動,盡量預先存儲足夠用戶信息。并且Mongo DB工作狀況優(yōu)良,在數據量處理方面符合要求。
(3)信息data的獲取。啟動代碼程序,生成數據庫,名稱為Mafengwo,對四個表格進行存儲。對酒店中的硬件信息、酒店入住評論信息與酒店地址信息、評價數據信息等進行功能性實施,本文對COMMENT和FACILITIES情形進行典型性闡述。
基于直觀對比數據的考慮,導出爬取結果,建立Excale文件。按照上述爬取能夠獲得COMMENT表。見表1所示。
同理,獲得FACILITIES表。
(4)爬取數據的價值。本程序爬取旅游網站數據之后,借助這些信息對網站流量、網站中酒店數量、酒店詳細信息、用戶對于酒店的評價等進行分析。比如,彩虹云霄酒店的ID代號是14777,借助已經爬取信息,相關人員能夠獲得該酒店的關鍵詞是“海景、美觀、舒適、時尚”等,附近交通設施是“免費停車場”,網絡條件是“Wi-Fi”等,評論區(qū)中為“適合觀海,酒店與海邊的步行距離為半小時”“網速快”“隔音效果非常棒”“早餐豐富”“服務態(tài)度非常差,不及時換床單”等。通過上述信息,游客能夠了解酒店基本信息與客戶的入住體驗,另外,可以根據相應順序具體編排這些信息,能夠為到該地區(qū)游玩的游客提供酒店參考,具有良好商業(yè)價值[7]。
(5)其他結果。爬取馬蜂窩網站中酒店信息之后,爬取馬蜂窩網站中北京旅游景點數據。借助網站信息能夠瀏覽景點介紹。涵蓋景點經緯度、門票、交通、開放時間與用時參考等,如表2所示:
之后爬取微博數據,觀察微博中“周日”詞條出現(xiàn)概率, 能夠發(fā)現(xiàn),周日為2020年2月2日,具有較高的出現(xiàn)頻率,但是2月1日出現(xiàn)頻率為何減小呢?主要是由于一些人會說“明天”。
結合上述爬取數據信息,該程序可以對微博、馬蜂窩以及其他數據量密集的網站進行有效爬取。
4 總結
綜上所述,本文以Python語言等為基礎架構,建立高度拓展面、高度自定義的爬蟲程序體系。該程序系統(tǒng)可以跟蹤捕獲各個網站中酒店信息,對酒店相關信息進行捕獲。通過測試可以發(fā)現(xiàn),SCRAPY程序結構編寫爬蟲程序,可以為用戶帶來良好體驗,節(jié)省精力和時間。同時基于此種方式建立爬蟲程序系統(tǒng)在工作時具有優(yōu)秀的表現(xiàn)。
參考文獻:
[1] 劉娟,管希東.基于Python爬蟲的職位信息數據分析和可視化系統(tǒng)實現(xiàn)[J].軟件工程與應用,2020(4):317-325.
[2] 賈艷平,翟晉剛.基于Python爬蟲技術的游客評論數據可視化分析[J].安陽師范學院學報,2021(5):51-54.
[3] 方德濤.基于Python爬取POI在城市地理國情監(jiān)測中的應用[J].地理空間信息,2021,19(6):79-82,I0002.
[4] 李超,唐義杰.基于案例的大數據分析課程教學研究——以網絡數據收集和數據可視化教學內容為例[J].白城師范學院學報,2019,33(6):56-61.
[5] 曾誠.基于Python的網絡爬蟲及數據可視化和預測分析[J].信息與電腦,2020(9):167-169.
[6] 張俊威,肖瀟.基于Python爬蟲技術的網頁數據抓取與分析研究[J].信息系統(tǒng)工程,2021(2):155-156.
[7] 王子予,郝艷華,關涵文,等.基于Python網絡爬蟲技術可視化分析公眾應對暴雪凍雨氣象的反應[J].中華衛(wèi)生應急電子雜志,2021,7(6):379-381.
【通聯(lián)編輯:唐一東】