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