田雪麗 郭志斌 劉夢賢
摘要:基于Python的網頁數據爬取與可視化分析是Python爬蟲的應用及Python數據分析的應用實戰。該文首先介紹了有關Python網絡爬蟲的相關知識,其次運用Requests和BeautifulSoup爬取旅游景點信息,并運用Excel和Tableau對數據進行分析,將分析結果進行可視化呈現,得出有關旅游景點價格、銷量、地區分布等方面的結論,為用戶合理選擇相關景點提供了建議。
關鍵詞:Python;網絡爬蟲;可視化分析
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)06-0024-03
開放科學(資源服務)標識碼(OSID):
1 概述
隨著互聯網的快速發展,人們能夠利用網絡獲取各種各樣的信息,使得學習與生活更加便捷,但是互聯網數據爆炸性地增長,導致我們會受到若干無效信息的干擾,對有效數據的收集顯得尤為困難,網絡爬蟲技術則可以有效地獲取關鍵數據信息,實現對信息的準確挖掘,達到對龐大信息精確檢索的目的,優化用戶的網絡體驗,節約時間與精力[1]。
2 相關概念
2.1Python語言
Python語言作為一種高級程序設計語言,既面向過程又面向對象,它擁有的高級數據結構、動態類型、解釋型語言促使其成為多數平臺上編寫腳本和快速開發應用的編程語言,具有簡單易學、免費開源、可移植、可嵌入等特點[2],目前全國有多所高校都開設了Python程序設計課程。
2.2 爬蟲技術
網絡爬蟲又稱網絡蜘蛛、網絡機器人,是一種按照一定的規則,自動抓取萬維網信息的程序或者腳本[3],它可以爬取的內容包括文本、圖片、音頻等數據。其工作原理是:向客戶端發送HTTP 請求,將URL提交給服務器端,服務器端根據URL的信息進行邏輯處理,并將需要的數據返回給客戶端。爬蟲的類別包括通用型、聚焦型、增量型、Deep Web型等。
2.3 可視化分析
可視化分析是基于分析理論,利用計算機圖形學和圖像處理技術,將科學數據轉換成圖形圖像,實現用戶與數據的交互,它具有增強理解、增強審視、簡單化等優勢,我們常見的可視化表現形式有直方圖、餅圖、散點圖等。
3 數據獲取
數據獲取是指利用一種裝置,將來自各種數據源的數據自動收集到一個裝置中,本文基于去哪兒網站,通過Python的爬蟲技術獲取相應數據,數據獲取的過程為:發起請求、獲取地址、分析網頁、提取數據、存儲數據。
3.1 發起請求
數據爬取主要是通過Python爬蟲技術實現的,通過對指定的網站發起請求,獲得服務器響應的數據,解析之后存入到Excel中。此次爬取數據使用的是Requests庫,Requests庫作為Python的第三方數據庫,能自動解碼來自服務器的內容并基于HTTP頭部對相應的編碼做出有根據性的推測,它對指定的URL發起請求,獲取想要爬取的數據頁面的響應信息。爬取網頁數據最常使用的是通用爬取框架,它最大的作用就是讓用戶有效、穩定、可靠地爬取網頁上的內容[4]。
3.2 獲取地址
想要獲取去哪兒網站上的西安旅游景點數據,就需要獲取相應數據的URL鏈接,以此來發起請求。打開去哪兒網的網站,我們會發現景點數據被分為了49頁,每頁的URL都不相同,所以需要尋找到每頁URL之間的關系。通過翻頁對比發現除了第一頁以外,每頁的URL都在最后有一個page=參數發生變化,即從1開始,每頁頁碼對應著該數字,因此可以構建一個for循環,用于請求網址。
3.3 分析網頁
獲取每頁的URL后,再發起請求,獲取響應,對響應進行解析。Python中有許多解析庫,通過對網頁數據進行觀察,選擇BeautifulSoup庫來對該響應進行解析是最方便的。BeautifulSoup庫將響應轉化為一個樹結構,每一個結點都可以成為它的一個標簽對象[5],然后通過它的.text屬性提取該標簽對應的數據。查找單個標簽可以使用find()方法,查找多個標簽可以使用find_all()方法,其中最關鍵的是對標簽進行精確定位,在()中用語句來實現。
3.4 提取數據
對頁面進行解析之后,就要對解析后的響應進行數據提取。我們使用正則表達式和BeautifulSoup來對解析后的網頁進行數據的定位和提取。正則表達式是對字符串操作的一種邏輯公式,可以通過一個特定的組合,從復雜煩瑣的字符串中快速提取符合條件的字符子串。而BeautifulSoup則更加方便,它可以通過css選擇器對元素進行定位,通過樹形結構依次訪問目標數據標簽,具有方便、快捷等特性,因此它是爬蟲程序中定位標簽位置的首選。
3.5 存儲數據
本文采用Excel對數據進行存儲,Excel的功能是高度集成化的,操作比較簡單,并且Python中有一個Openpyxl庫,是專門用來操作Excel的,使得兩者可以無縫銜接,同時因為數據較少,用Excel來進行管理遠比數據庫來進行管理更加高效。爬蟲程序在爬取數據時,將爬取的數據構建成一個列表,通過append()方法,將景點名稱、地區、熱度、地址、價格、月銷量、月銷額、經緯度等數據依次加入Excel表中。
4 數據可視化
數據可視化首先對數據進行一定的處理,包括統計、去重、整理等,然后以圖形化的形式呈現,便于我們更好對其進行識別、判斷[6]。數據可視化過程包括數據處理、可視化、詞云分析、熱度分析、價格分析、月銷量與月銷額分析、地區分析。
4.1 數據處理
當景點數據獲取并存儲后,需要對這些數據進行處理,將其不滿足可視化需求的數據剔除。首先是對數據去重,Excel中自帶去重功能,所以可以通過Excel進行數據去重操作。對去重后的數據再次進行檢查,發現它符合分析需求,不需要再進行其他數據處理操作。
4.2 可視化
當數據處理完畢后,需要對這些數據進行可視化分析,通過圖表的形式將數據中隱藏的信息展現出來。數據可視化分析可以用Excel和Tableau實現。Excel中自帶圖表,圖表隨著數據的變化而變化,呈現的形式多種多樣,可以生成各種高質量的圖片。Tableau是一款可視化分析工具,能夠幫助我們快速做出可視化的圖片,同時它的操作簡單、易學,用戶體驗良好。
本文分別采用了這兩種軟件來生成不同的圖表,其中景點價格、景點地區分布圖是用Excel呈現的,詞云圖、景點熱度、月銷量與月銷額是用Tableau呈現的。
4.3 詞云分析
詞云是由詞條組成的類似云型的彩色圖案,詞條在詞云中所占區域的大小代表了它出現頻率的高低,從視覺上達到更加直觀的效果。通過對西安景點簡介進行詞云圖繪制分析,我們很容易發現西安的特色,文化、歷史、博物館等詞的提及表明西安是一座典型的文化古城,休閑、娛樂、樂園等詞的提及體現了西安旅游環境輕松且多樣,景點詞云分析如圖1所示。
4.4 熱度分析
景點熱度是指在一定時間內,以用戶的分享、廣告的宣傳等方式,使得該景點受人們關注的程度。一般而言,游客越多,該景點的熱度值越高,熱度Top10景點排名如圖2所示。
4.5 價格分析
景點消費總價格受門票、餐飲、住宿等因素的影響,人們會依據自己的消費水平選擇不同的旅游景點,從景點價格來看,去大雁塔音樂噴泉、滑翔機、直升機類的活動花銷較大,價格Top10景點排名如圖3所示。
4.6 月銷量與月銷額分析
門票的月銷量是指在一個月內售出的門票張數,月銷額是指在一個月內售出的門票張數與單價的乘積,通過分析發現在月銷量與月銷額中,秦始皇帝陵博物院(兵馬俑)居于首位,其次是華清宮和長恨歌。因此,月銷額受月銷量的影響較大,受價格的影響較小,月銷量與月銷額Top10景點排名如圖4和圖5所示。
4.7 地區分析
利用2016版的Excel進行平面地圖的繪制,明確景區所處的地理位置,有助于提前做好規劃,從圖中我們可以發現景點主要集中在蓮湖區、碑林區、雁塔區,景點地區分布如圖6所示。
5 結論
隨著大數據時代的到來,從海量的數據中獲取自己所需的數據顯得尤為重要,我們需要掌握必要的爬蟲技術,快速抓取網頁數據并對其進行可視化分析,幫助人們做出正確的選擇。
本文利用Python的爬蟲技術,以去哪兒網的陜西省西安市旅游景點信息為數據來源,利用Python爬蟲框架獲取數據,之后對數據進行處理、可視化分析,反映用戶的真實體驗。
參考文獻:
[1] 徐志,金偉.Python爬蟲技術的網頁數據抓取與分析[J].數字技術與應用,2020,38(10):30-32.
[2] 張珩.Python的計算機軟件應用技術探討[J].電腦知識與技術,2020,16(32):96-97,102.
[3] CastilloC.EffectiveWebcrawling[J].ACMSIGIRForum,2005,39(1):55-56.
[4] 簡悅,汪心瀛,楊明昕.基于Python的豆瓣網站數據爬取與分析[J].電腦知識與技術,2020,16(32):51-53.
[5] RyanMitchell.Python網絡數據采集[M].北京:人民郵電出版社,2016.
[6] 曾誠.基于Python的網絡爬蟲及數據可視化和預測分析[J].信息與電腦(理論版),2020,32(9):167-169.
【通聯編輯:王力】