李傳科,肖自乾
(海南軟件職業技術學院 海南 瓊海 571400)
隨著互聯網的快速發展和廣泛運用,網絡數據呈現爆炸性增長,并且隨著時間的推移,網絡數據的沉淀和冗余,產生大量無效數據,導致人們對于有效信息的獲取變成一種挑戰,因此大數據技術成為各行各業的轉型方向[1]。而Python作為數據分析領域的最佳選擇語言,其跨平臺、靈活簡單的特性,加上Python在數據分析方面擁有極為豐富的外部庫,為大數據分析運用提供了重要保障。本文利用Python技術實現數據搜集、分析和整理,并以可視化方式將抽象數據通過圖表呈現,使得人們更加便捷和直觀地獲取到需求數據。
本文研究以網頁為基礎數據,采用Python技術,根據業務實現流程可分為3部分:數據采集、數據分析、數據可視化,具體的應用實現流程見圖1。

圖1 應用實現流程圖
在網頁數據采集技術中,網絡爬蟲(又稱網絡蜘蛛)是十分關鍵的組成部分,其通過提取互聯網特定頁面內容實現網頁數據信息的收集。網絡爬蟲主要借助Python技術中的scrapy爬蟲框架,基本流程為:抓取數據—解析數據—存儲數據[2],創建爬蟲框架包括items.py、piplines.py、Middlewares.py、settings.py等py文件,項目程序結構見圖2。

圖2 scrapy爬蟲程序結構圖
(1)items.py文件用于實現封裝需要爬取的各個網頁字段,定義繼承scrapy.Item類,并將所有需要爬取的網頁中不同節點字段定義為nodeName = scrapy.Field()類型即可。
(2)piplines.py文件中建立ExamplePipline類并實現process_item(self,item,spider) 方法用于處理爬取到的每個Item,把Item存儲到字典中。
(3)Middlewares.py作為中間層文件,可以分為spider middleware和downloader middleware兩類,用于處理爬取網頁的網絡請求和響應,可以設置一些代理IP等。
(4)settings.py是配置文件,其中很多模塊默認是注釋掉的,當需要使用的時候,根據注釋提示,編寫自己的內容,比如設置請求和響應的中間層,指定操作數據的Pipeline類等。
基于以上項目結構,可以創建spider_name.py文件用于建立對應的scrapy.Spider類,并生成parse(self,response)方法,在parse方法中利用Response對象進行response.xpath()或者response.css()方法進行頁面數據的解析提取。
最后,要存儲json數據,需要創建.json文件,把網頁爬取到的數據通過json.dumps()方法處理存儲為json數據文件。
數據處理分析主要目的是使用適當的統計、分析方法對網頁抓取的大量數據進行過濾、匯總。Python中進行數據分析庫很多,根據不同的數據集使用不同的處理方法。本應用主要針對網頁信息使用Pandas進行json數據處理和jieba文本分詞匯總分析。
網頁爬取的數據存儲為json格式文件,json文件每一行內容都是以字典格式存儲的字符串,其中字典的鍵(key)為爬取到的網頁節點名稱,值(value)是對應的節點內容。為方便處理json數據集,可借助Python中pandas庫的read_json()方法讀取json數據集內容,再根據字典中的鍵(key)來獲取對應的值(value),寫入到data.txt文檔中。導入json數據集代碼如下。

jieba是目前最好的 Python中文分詞組件,通過使用jieba分詞對數據提煉出的文本進行分詞,統計次數出現最多的詞語,支持3種分詞模式:精確模式、全模式、搜索引擎模式。導入的數據集使用jieba.lcut()方法針對txt文檔中的詞語進行分詞,分別統計匯總關鍵詞出現頻率數[3]。使用jieba進行高頻詞統計代碼如下。

數據可視化是一種利用分析理論和可視化界面來幫助用戶解釋復雜數據的技術,數據可視化是數據挖掘途徑的重要手段。這里主要應用Python中常用的兩個數據可視化組件:Matplotlib和Pyecharts[4-5]。
Matplotlib是Python中最基礎的Python可視化庫,作為Python較出色和較常用的繪圖軟件,matplotlib有一套仿照MATLAB的函數形式的繪圖接口,在matplotlib的pyplot子模塊中,常用的導入形式為import matplotlib.pyplot as plt。繪圖之前,需要使用figure對象創建窗口對象,畫布通過figsize的參數來指定畫布大小。Matplotlib中常用的函數繪制圖形包括:plot()繪制折線圖、bar()繪制柱狀圖、barh()繪制直方圖、pie()繪制餅圖、scatter()繪制散點圖、boxplot()繪制箱線圖等。
示例使用Matplotlib繪制餅圖展示海南東部市縣人口占比見圖3,代碼如下。

圖3 示例代碼對應的餅狀效果圖


Pyecharts是一款將python與echarts結合的強大第三方數據可視化工具集,echarts是百度的一個開源的數據可視化工具,能夠展示出更加美觀的圖表,而且是純Javascript圖表庫,能夠在PC端和移動設備上流暢運行,兼容當前絕大部分瀏覽器,是目前商業級數據圖表展示的重要工具。
目前,v1版本以上的pyecharts通過pyecharts.charts模塊導入,常用的繪圖庫有:Bar柱狀圖、Pie餅圖、Boxplo箱型圖、Line折線圖、Radar雷達圖、EffectScatter動態散點圖、Map動態地圖等。圖4為示例Pyecharts實現海南各市縣人才招聘數據的動態散點圖,代碼如下。



圖4 示例代碼對應的動態散點圖
未來屬于大數據時代,Python技術在大數據分析運用中的優勢越來越明顯,大大提高了數據采集和數據分析的效率,并且數據可視化的應用,也成為大數據分析過程中非常重要的展示手段。綜上所述,本文合理運用Python和相關第三方庫,全面闡述和示例了基于網頁數據的抓取、分析及可視化的技術應用,對于大數據分析運用提供了較好的學習和借鑒價值。