国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的網(wǎng)頁數(shù)據(jù)分析及可視化應(yīng)用

2021-10-21 02:15李傳科肖自乾
信息記錄材料 2021年9期
關(guān)鍵詞:爬蟲分詞示例

李傳科,肖自乾

(海南軟件職業(yè)技術(shù)學(xué)院 海南 瓊海 571400)

1 引言

隨著互聯(lián)網(wǎng)的快速發(fā)展和廣泛運(yùn)用,網(wǎng)絡(luò)數(shù)據(jù)呈現(xiàn)爆炸性增長(zhǎng),并且隨著時(shí)間的推移,網(wǎng)絡(luò)數(shù)據(jù)的沉淀和冗余,產(chǎn)生大量無效數(shù)據(jù),導(dǎo)致人們對(duì)于有效信息的獲取變成一種挑戰(zhàn),因此大數(shù)據(jù)技術(shù)成為各行各業(yè)的轉(zhuǎn)型方向[1]。而Python作為數(shù)據(jù)分析領(lǐng)域的最佳選擇語言,其跨平臺(tái)、靈活簡(jiǎn)單的特性,加上Python在數(shù)據(jù)分析方面擁有極為豐富的外部庫,為大數(shù)據(jù)分析運(yùn)用提供了重要保障。本文利用Python技術(shù)實(shí)現(xiàn)數(shù)據(jù)搜集、分析和整理,并以可視化方式將抽象數(shù)據(jù)通過圖表呈現(xiàn),使得人們更加便捷和直觀地獲取到需求數(shù)據(jù)。

2 設(shè)計(jì)思路

本文研究以網(wǎng)頁為基礎(chǔ)數(shù)據(jù),采用Python技術(shù),根據(jù)業(yè)務(wù)實(shí)現(xiàn)流程可分為3部分:數(shù)據(jù)采集、數(shù)據(jù)分析、數(shù)據(jù)可視化,具體的應(yīng)用實(shí)現(xiàn)流程見圖1。

圖1 應(yīng)用實(shí)現(xiàn)流程圖

3 網(wǎng)頁數(shù)據(jù)采集

在網(wǎng)頁數(shù)據(jù)采集技術(shù)中,網(wǎng)絡(luò)爬蟲(又稱網(wǎng)絡(luò)蜘蛛)是十分關(guān)鍵的組成部分,其通過提取互聯(lián)網(wǎng)特定頁面內(nèi)容實(shí)現(xiàn)網(wǎng)頁數(shù)據(jù)信息的收集。網(wǎng)絡(luò)爬蟲主要借助Python技術(shù)中的scrapy爬蟲框架,基本流程為:抓取數(shù)據(jù)—解析數(shù)據(jù)—存儲(chǔ)數(shù)據(jù)[2],創(chuàng)建爬蟲框架包括items.py、piplines.py、Middlewares.py、settings.py等py文件,項(xiàng)目程序結(jié)構(gòu)見圖2。

圖2 scrapy爬蟲程序結(jié)構(gòu)圖

(1)items.py文件用于實(shí)現(xiàn)封裝需要爬取的各個(gè)網(wǎng)頁字段,定義繼承scrapy.Item類,并將所有需要爬取的網(wǎng)頁中不同節(jié)點(diǎn)字段定義為nodeName = scrapy.Field()類型即可。

(2)piplines.py文件中建立ExamplePipline類并實(shí)現(xiàn)process_item(self,item,spider) 方法用于處理爬取到的每個(gè)Item,把Item存儲(chǔ)到字典中。

(3)Middlewares.py作為中間層文件,可以分為spider middleware和downloader middleware兩類,用于處理爬取網(wǎng)頁的網(wǎng)絡(luò)請(qǐng)求和響應(yīng),可以設(shè)置一些代理IP等。

(4)settings.py是配置文件,其中很多模塊默認(rèn)是注釋掉的,當(dāng)需要使用的時(shí)候,根據(jù)注釋提示,編寫自己的內(nèi)容,比如設(shè)置請(qǐng)求和響應(yīng)的中間層,指定操作數(shù)據(jù)的Pipeline類等。

基于以上項(xiàng)目結(jié)構(gòu),可以創(chuàng)建spider_name.py文件用于建立對(duì)應(yīng)的scrapy.Spider類,并生成parse(self,response)方法,在parse方法中利用Response對(duì)象進(jìn)行response.xpath()或者response.css()方法進(jìn)行頁面數(shù)據(jù)的解析提取。

最后,要存儲(chǔ)json數(shù)據(jù),需要?jiǎng)?chuàng)建.json文件,把網(wǎng)頁爬取到的數(shù)據(jù)通過json.dumps()方法處理存儲(chǔ)為json數(shù)據(jù)文件。

4 數(shù)據(jù)處理分析

數(shù)據(jù)處理分析主要目的是使用適當(dāng)?shù)慕y(tǒng)計(jì)、分析方法對(duì)網(wǎng)頁抓取的大量數(shù)據(jù)進(jìn)行過濾、匯總。Python中進(jìn)行數(shù)據(jù)分析庫很多,根據(jù)不同的數(shù)據(jù)集使用不同的處理方法。本應(yīng)用主要針對(duì)網(wǎng)頁信息使用Pandas進(jìn)行json數(shù)據(jù)處理和jieba文本分詞匯總分析。

4.1 導(dǎo)入數(shù)據(jù)集

網(wǎng)頁爬取的數(shù)據(jù)存儲(chǔ)為json格式文件,json文件每一行內(nèi)容都是以字典格式存儲(chǔ)的字符串,其中字典的鍵(key)為爬取到的網(wǎng)頁節(jié)點(diǎn)名稱,值(value)是對(duì)應(yīng)的節(jié)點(diǎn)內(nèi)容。為方便處理json數(shù)據(jù)集,可借助Python中pandas庫的read_json()方法讀取json數(shù)據(jù)集內(nèi)容,再根據(jù)字典中的鍵(key)來獲取對(duì)應(yīng)的值(value),寫入到data.txt文檔中。導(dǎo)入json數(shù)據(jù)集代碼如下。

4.2 jieba中文分詞

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

5 數(shù)據(jù)可視化

數(shù)據(jù)可視化是一種利用分析理論和可視化界面來幫助用戶解釋復(fù)雜數(shù)據(jù)的技術(shù),數(shù)據(jù)可視化是數(shù)據(jù)挖掘途徑的重要手段。這里主要應(yīng)用Python中常用的兩個(gè)數(shù)據(jù)可視化組件:Matplotlib和Pyecharts[4-5]。

5.1 Matplotlib數(shù)據(jù)可視化

Matplotlib是Python中最基礎(chǔ)的Python可視化庫,作為Python較出色和較常用的繪圖軟件,matplotlib有一套仿照MATLAB的函數(shù)形式的繪圖接口,在matplotlib的pyplot子模塊中,常用的導(dǎo)入形式為import matplotlib.pyplot as plt。繪圖之前,需要使用figure對(duì)象創(chuàng)建窗口對(duì)象,畫布通過figsize的參數(shù)來指定畫布大小。Matplotlib中常用的函數(shù)繪制圖形包括:plot()繪制折線圖、bar()繪制柱狀圖、barh()繪制直方圖、pie()繪制餅圖、scatter()繪制散點(diǎn)圖、boxplot()繪制箱線圖等。

示例使用Matplotlib繪制餅圖展示海南東部市縣人口占比見圖3,代碼如下。

圖3 示例代碼對(duì)應(yīng)的餅狀效果圖

5.2 Pyecharts數(shù)據(jù)可視化

Pyecharts是一款將python與echarts結(jié)合的強(qiáng)大第三方數(shù)據(jù)可視化工具集,echarts是百度的一個(gè)開源的數(shù)據(jù)可視化工具,能夠展示出更加美觀的圖表,而且是純Javascript圖表庫,能夠在PC端和移動(dòng)設(shè)備上流暢運(yùn)行,兼容當(dāng)前絕大部分瀏覽器,是目前商業(yè)級(jí)數(shù)據(jù)圖表展示的重要工具。

目前,v1版本以上的pyecharts通過pyecharts.charts模塊導(dǎo)入,常用的繪圖庫有:Bar柱狀圖、Pie餅圖、Boxplo箱型圖、Line折線圖、Radar雷達(dá)圖、EffectScatter動(dòng)態(tài)散點(diǎn)圖、Map動(dòng)態(tài)地圖等。圖4為示例Pyecharts實(shí)現(xiàn)海南各市縣人才招聘數(shù)據(jù)的動(dòng)態(tài)散點(diǎn)圖,代碼如下。

圖4 示例代碼對(duì)應(yīng)的動(dòng)態(tài)散點(diǎn)圖

6 結(jié)語

未來屬于大數(shù)據(jù)時(shí)代,Python技術(shù)在大數(shù)據(jù)分析運(yùn)用中的優(yōu)勢(shì)越來越明顯,大大提高了數(shù)據(jù)采集和數(shù)據(jù)分析的效率,并且數(shù)據(jù)可視化的應(yīng)用,也成為大數(shù)據(jù)分析過程中非常重要的展示手段。綜上所述,本文合理運(yùn)用Python和相關(guān)第三方庫,全面闡述和示例了基于網(wǎng)頁數(shù)據(jù)的抓取、分析及可視化的技術(shù)應(yīng)用,對(duì)于大數(shù)據(jù)分析運(yùn)用提供了較好的學(xué)習(xí)和借鑒價(jià)值。

猜你喜歡
爬蟲分詞示例
利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
分詞在英語教學(xué)中的妙用
2019年高考上海卷作文示例
常見單位符號(hào)大小寫混淆示例
結(jié)巴分詞在詞云中的應(yīng)用
結(jié)巴分詞在詞云中的應(yīng)用
常見單位符號(hào)大小寫混淆示例
“全等三角形”錯(cuò)解示例
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
广宗县| 年辖:市辖区| 高阳县| 巨鹿县| 班戈县| 常山县| 潼关县| 榆树市| 建平县| 磐石市| 宁津县| 尼勒克县| 佳木斯市| 宣汉县| 鄂伦春自治旗| 岚皋县| 石河子市| 石嘴山市| 门源| 永和县| 锡林郭勒盟| 东明县| 土默特右旗| 富阳市| 化德县| 洱源县| 西平县| 霍林郭勒市| 龙南县| 舒兰市| 凭祥市| 桦南县| 万源市| 阿克陶县| 宝应县| 济阳县| 尼玛县| 威信县| 江川县| 定日县| 商南县|