?

基于PyECharts的爬蟲數據可視化研究

2023-08-21 02:03李晨昊王劍雄李宗陽
河北建筑工程學院學報 2023年2期
關鍵詞:爬蟲網頁代碼

李晨昊 王劍雄 黨 然 李宗陽 施 陶

(1.河北建筑工程學院,河北 張家口 075000;2.衡水第三中學,河北 衡水 053099)

0 引 言

處于信息時代,每天都會有各種各樣的信息出現,此時快速有效地獲取信息對相應工作研究起到了關鍵的作用.計算機技術的快速發展,人類社會全面受益,小到日常娛樂與生活,大到生存模式與環境得到根本性的改善.對于互聯網上眾多繁雜的信息,使用網絡爬蟲可以快速有效地獲取這些信息,爬蟲最常使用到的語言就是Python語言,Python語言以其簡潔的代碼和強大的庫函數,使得編寫爬蟲腳本時效率有了很大的提高.本文介紹了一種從相關網站進行爬取疫情信息的方法,并對數據進行可視化的處理與展示,使獲取的數據更加直觀.

1 相關技術簡介

Python語言簡介:Python是跨平臺、解釋型的動態語言,由于它的語法清晰簡便并且包含了豐富的標準庫以及第三方庫,經常被運用到網絡爬蟲、數據分析、人工智能、Web開發等領域.本文運用了該語言進行網頁數據爬取和轉化成可視化界面.該語言代碼簡潔方便閱讀,具有很高的代碼開發效率.國內外眾多企業都用到了Python作為開發語言,如Google公司、國內的知乎、豆瓣等公司都運用了Python技術.

網絡爬蟲簡介:基于Python的網絡爬蟲技術,首先模擬真實用戶向服務器請求頁面信息,服務器進行響應,返回請求后的信息結果,獲取到服務器響應的頁面結果,對該頁面進行解析,獲取標簽信息,根據所需信息對該標簽進行篩選操作,然后返回標簽體中的內容信息.或者是請求域名解析,返回域名的IP,向IP庫API發送請求,返回運營商歸屬,重復進行以上步驟,進行反復循環的爬取,這樣實現自動化的Web爬蟲抓取數據,最后對獲取到的數據信息進行存儲,以供接下來的一個研究和探討.

PyECharts簡介:ECharts(Enterprise Charts)是百度的一個開源數據可視化工具,它是一個使用JavaScript實現的開源可視化庫.而PyECharts是一款將Python和ECharts進行結合的一款工具,使用Python調用其API接口就可以生成可視化的圖形,成為Python語言編寫的程序可以進一步可視化的一個強大工具.

2 網頁的基本結構以及網頁源代碼分析

使用爬蟲技術爬取網站的信息,首先要了解被爬取網頁的結構,網頁的結構簡單的分為HTML(超文本標記語言)、CSS、JavaScript.CSS負責頁面的結構樣式,JS負責頁面的交互功能.本文主要針對靜態內容進行抓取,即抓取HTML中相應標簽中的內容.

本文采用的是谷歌瀏覽器(Chrome)工具對網站的源代碼進行分析,進入到相應的網頁,在網頁的空白處點擊鼠標右鍵選擇檢查進行查看,通過對代碼進行分析,編寫相應的程序,以及相應的URL地址.

3 Python下爬取網站的設計

本文是對騰訊新聞網站疫情實時追蹤板塊的數據進行爬取.主要使用到了requests、json、pyecharts等庫.使用requests庫模擬真實用戶向服務器發送請求,并且獲取到相應的返回信息,json對網頁進行解碼操作,將網頁的json格式解碼成為Python格式的data對返回信息進行相應抽取.將抽取到的數據傳入到pyecharts庫相應的對象中,進行可視化的操作.

被爬取網站的地址為:url='https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5',headers,編寫user-agent屬性,模擬真實電腦訪問url='Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/87.0.4280.88 Safari/537.36’.該屬性可以以通過谷歌瀏覽器F12進行查看本機.通過定義訪問網頁函數get_url(url,headers),對網頁進行訪問.隨后把得到的數據用Json打開,json.loads()函數解析該數據,并且得到Json里面的“data”數據.具體實現代碼如圖1所示.

圖1 獲取“data”數據

循環遍歷“data”獲取相應的數據,將地址“name”以及相匹配的屬性,循環存儲的相應的列表中.具體部分實現代碼如圖2所示.

圖2 列表存儲數據信息

本文使用Chrome瀏覽器抓包分析了獲取得病人數及相關地區的數據,通過查看網站https://news.qq.com/zt2020/page/feiyan.htm#/的源代碼,找到需要爬取數據的相對應的url地址.谷歌瀏覽器在疫情網頁F12進入到檢查界面,選擇到Network,此時F5刷新網頁,即可獲得網頁服務器反饋的信息.可以看到開發者工具中出現了各種各樣的包,本文所需要的數據只需要獲取到JS數據包即可,所以需要進行過濾,經過篩選在左側的信息中找到相應的“Name”,打開此包Headers中的Request URL,即可得到數據的url地址.如圖3所示,這是所需信息數據相對應的url地址.

圖3 相應的url地址

通過Console查找到此文件對應的路徑,可看到相對應的信息,這里面正是我們需要爬取的信息,和上面所獲取的url地址對應的信息相對應.詳細信息如圖4所示.

圖4 網頁Console信息

打開這個url地址,顯示出相對應的數據的信息界面,如圖5所示,這就是需要獲取的病例人數及地區的數據,通過JSON數據呈現,并且當前主流的網站都采用這樣的模式進行開發.頁面的結構信息如圖6所示.接下來就分析包中數據的參數,“name”表示的是地區以及“確診”、“疑似”、“死亡”的信息,“grade”表示的是風險等級,那么只要獲取到相應的數據即可.

圖5 網頁請求情況

圖6 url網頁結構

4 爬取到數據的展示

通過調用可視化工具PyECharts相應的API接口,創建Geo( )對象,設置圖像的高、寬的像素大小,分別對四種信息,以及相應省份信息的數據進行傳入,最后生成網頁,geo.set_global_opts()函數設置html網頁的展示效果、背景顏色、網頁中的文字信息等展示內容.c.render(path=r'ncov-2019.html')生成html文件.將上述數據可視化的進行展示,部分詳細代碼如圖7所示.

圖7 可視化工具生成界面

可視化界面如圖8所示.界面可展現出“確診人數”、“疑似人數”、“死亡人數”、“治愈人數”通過不同的顏色相應的在中國版圖上進行展示,會根據人數的數量呈現出一個顏色的漸變.左上角展示出該信息更新的時間,供使用者得知該數據的一個時效性.

圖8 可視化地圖展示界面

5 結 論

通過對本文的算法進行研究與分析,實現了騰訊新聞網疫情數據的爬取與采集設計,使用Chrome進行了抓包分析,對動態頁面關鍵數據進行抓取,借助了PyCharm工具進行了源代碼的編寫,通過使用PyECharts,以地圖的形式直觀地展示了當前的數據.通過本文的研究與設計,對時下萬眾關注的疫情信息,能夠及時抽取各種碎片化的數據,并進行整理與直觀的圖形化顯示,對整個疫情狀態進行了很好的展示,為后續抗疫的規劃與分析奠定了基礎.本研究設計的優點是開發周期短、代碼簡潔、易于后期維護.在后續的研究中,可以進一步凝練爬蟲算法的性能,以便提高數據爬蟲的準確性與縮短爬蟲的時間,同時增加更多的功能模塊,如各種需求的可視化展示.針對當前疫情肆虐的形勢,本文所研究的內容有較高的實用性和時效性.

猜你喜歡
爬蟲網頁代碼
利用網絡爬蟲技術驗證房地產灰犀牛之說
基于Python的網絡爬蟲和反爬蟲技術研究
創世代碼
創世代碼
創世代碼
創世代碼
基于CSS的網頁導航欄的設計
利用爬蟲技術的Geo-Gnutel la VANET流量采集
基于URL和網頁類型的網頁信息采集研究
大數據環境下基于python的網絡爬蟲技術
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合