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

?

基于python語(yǔ)言的web數(shù)據(jù)挖掘與分析研究

2018-12-18 01:08吳爽
電腦知識(shí)與技術(shù) 2018年27期
關(guān)鍵詞:數(shù)據(jù)分析

吳爽

摘要:該文介紹了Web采集技術(shù),并對(duì)其實(shí)現(xiàn)原理及關(guān)鍵技術(shù)進(jìn)行研究分析,著重介紹了基于Python語(yǔ)言的爬蟲數(shù)據(jù)采集技術(shù)在Web信息采集中的應(yīng)用,提出以Python及相關(guān)庫(kù)為主要工具,并結(jié)合模塊化實(shí)現(xiàn)方法,建立基于Python技術(shù)的Web文本信息采集系統(tǒng)框架,并以百度百科為例,實(shí)現(xiàn)信息的快速搜索與相關(guān)信息的數(shù)據(jù)挖掘,并對(duì)檢索數(shù)據(jù)進(jìn)行分析和研究,得出相關(guān)結(jié)論。

關(guān)鍵詞:Python;Web;數(shù)據(jù)爬??;數(shù)據(jù)分析

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)27-0001-02

隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,Web作為廣大互聯(lián)網(wǎng)用戶共享信息而發(fā)展起來(lái)的一種internet應(yīng)用,其承載的信息量呈幾何級(jí)數(shù)增長(zhǎng),Web的應(yīng)用與發(fā)展為人們帶來(lái)了巨大的社會(huì)效益和經(jīng)濟(jì)效益,已經(jīng)成為用戶獲取信息的重要來(lái)源。Web信息急劇膨脹的同時(shí),如何有效篩選和利用信息面臨巨大的挑戰(zhàn)。同時(shí),Web內(nèi)容的多樣性與非結(jié)構(gòu)性,導(dǎo)致有效信息獲取困難。借助于Python技術(shù)實(shí)現(xiàn)Web信息的有效提取和挖掘,能夠在多個(gè)領(lǐng)域發(fā)揮重要作用,極大地提高數(shù)據(jù)搜集與分析的效率,促進(jìn)社會(huì)生產(chǎn)力的提升。

1 Web信息挖掘技術(shù)概述

1.1 web數(shù)據(jù)挖掘技術(shù)定義

Web數(shù)據(jù)挖掘是通過(guò)模擬用戶正常的瀏覽器行為,并設(shè)置一定的規(guī)則,從而獲取Web頁(yè)面指定信息。Web數(shù)據(jù)挖掘的最終目的是將非結(jié)構(gòu)化的信息從海量的信息提取并以統(tǒng)一的方式進(jìn)行存儲(chǔ)(以CSV、JSON、XML等模式存儲(chǔ))。在此過(guò)程中,將涉及網(wǎng)絡(luò)爬蟲、數(shù)據(jù)結(jié)構(gòu)化與正則表達(dá)式等多種關(guān)鍵技術(shù)。

1.2 數(shù)據(jù)挖掘技術(shù)應(yīng)用優(yōu)勢(shì)

隨著互聯(lián)網(wǎng)技術(shù)的應(yīng)用與普及,網(wǎng)絡(luò)中信息資源極為豐富,但大多數(shù)信息以無(wú)結(jié)構(gòu)的文筆形式存在,導(dǎo)致信息采集與歸類變得極為困難。在數(shù)據(jù)挖掘技術(shù)出現(xiàn)之前,用戶要將有效的信息進(jìn)行采集和歸類須采用手動(dòng)復(fù)制粘貼的方式,不僅耗時(shí)耗力,而且數(shù)據(jù)質(zhì)量較差,難以實(shí)現(xiàn)數(shù)據(jù)采集與分析的自動(dòng)化。而基于Python語(yǔ)言的網(wǎng)絡(luò)爬蟲技術(shù),具有速度快、準(zhǔn)確性高等特點(diǎn),能夠有效提升數(shù)據(jù)采集與分析效率,提高數(shù)據(jù)采集質(zhì)量。同時(shí)人工操作難免存在數(shù)據(jù)錯(cuò)誤、遺漏等問(wèn)題,在統(tǒng)計(jì)較大數(shù)據(jù)時(shí),糾錯(cuò)難度極大,而借助網(wǎng)絡(luò)爬蟲技術(shù),數(shù)據(jù)準(zhǔn)確性較高,即使存在問(wèn)題,用戶可通過(guò)規(guī)則、程序調(diào)整即可完成糾錯(cuò),具有無(wú)可比擬的應(yīng)用優(yōu)勢(shì)。

1.3 網(wǎng)絡(luò)爬蟲工作原理

網(wǎng)絡(luò)爬蟲是根據(jù)制定的規(guī)則對(duì)Web頁(yè)面進(jìn)行遍歷查詢,從而自動(dòng)抓取有效信息的腳本。網(wǎng)絡(luò)爬蟲的主要原理是通過(guò)互聯(lián)網(wǎng)指定的子集合中讀取URL,訪問(wèn)相應(yīng)的Web內(nèi)容,并遍歷Web頁(yè)面所包含的鏈接,并遍歷鏈接繼續(xù)爬取包含的子頁(yè)面內(nèi)容,從而完成數(shù)據(jù)的收集、分類和整理。

1.4 不同爬蟲算法的比較

當(dāng)前網(wǎng)絡(luò)爬蟲核心算法主要包括廣度優(yōu)先、深度優(yōu)先、Partial PageRank及Opic爬蟲算法。不同爬蟲算法各有優(yōu)劣,應(yīng)結(jié)合實(shí)際應(yīng)用場(chǎng)景進(jìn)行合理選擇。

1.4.1 廣度優(yōu)先策略

該方法是根據(jù)Web內(nèi)容目錄層級(jí),先爬取起始頁(yè)面同一層級(jí)的頁(yè)面,而后將爬取的鏈接放在隊(duì)列中,從而實(shí)現(xiàn)向外延伸,盡可能多地獲取鏈接信息,并不斷向下一層級(jí)深入。該方法能夠?qū)崿F(xiàn)爬蟲的并行處理,提高Web信息抓取速度。因此,廣度優(yōu)先策略是應(yīng)用最為廣泛的爬蟲算法。同時(shí),該算法不足之處在于挖掘深層次目錄所花費(fèi)的時(shí)間較長(zhǎng)。

1.4.2 深度優(yōu)先策略

深度優(yōu)先策略是指爬蟲依次訪問(wèn)當(dāng)前頁(yè)面直至最深目錄,并在完成一個(gè)分支后返回,繼續(xù)爬去另一個(gè)分支,當(dāng)所有的鏈接遍歷結(jié)束后,爬蟲任務(wù)才會(huì)結(jié)束。該方法能夠保證爬蟲挖掘信息的深度,但在層次較深的站點(diǎn)信息挖掘時(shí)將消耗大量的系統(tǒng)資源。

1.4.3 Partial PageRank策略

該算法是爬蟲從起始頁(yè)開始后,根據(jù)計(jì)算的Web頁(yè)面PageRank值確定該頁(yè)面的爬取價(jià)值,并優(yōu)先爬取PageRank值大的頁(yè)面,從而加快爬蟲執(zhí)行效率,能夠取得較好的遍歷效果,但可能與全部遍歷結(jié)果存在一定的偏差,進(jìn)而導(dǎo)致數(shù)據(jù)準(zhǔn)確性降低。

1.4.4 Opic策略

該算法可被視為一種改進(jìn)型的PageRank算法,開始前,各頁(yè)面都會(huì)被賦予相同的值,當(dāng)頁(yè)面被下載后,其值將平均分配給頁(yè)面中連接,并情況當(dāng)前頁(yè)面的值,爬蟲根據(jù)值的大小確定優(yōu)先級(jí),優(yōu)先下載值最大的頁(yè)面。該算法不需要迭代計(jì)算,適用于實(shí)時(shí)計(jì)算。

1.5 數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)

大部分信息以無(wú)結(jié)構(gòu)的文本形式存在,直接歸類和利用存在一定的困難,而通過(guò)結(jié)構(gòu)化存儲(chǔ)的方式進(jìn)行存儲(chǔ),即將Web頁(yè)面中的無(wú)結(jié)構(gòu)信息抽取出來(lái)并以結(jié)構(gòu)化的方式存儲(chǔ)到本地,從而實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的規(guī)范、統(tǒng)一。此過(guò)程都是自動(dòng)化執(zhí)行操作,不需要人工干預(yù),用戶可結(jié)合應(yīng)用場(chǎng)景自行選擇數(shù)據(jù)庫(kù)、XML、CSV等存儲(chǔ)方式。如選用數(shù)據(jù)庫(kù)作為存儲(chǔ)形式時(shí),Web信息則以二維表結(jié)構(gòu)的形式存儲(chǔ),法具有速度快、準(zhǔn)確性高等特點(diǎn),能夠滿足多線程數(shù)據(jù)挖掘時(shí)數(shù)據(jù)存儲(chǔ)要求。

1.6 正則表達(dá)式

Web頁(yè)面大多為Html格式存在,而Html頁(yè)面是由各種語(yǔ)義對(duì)象構(gòu)成,不同的對(duì)象均存在不同的標(biāo)記,通過(guò)對(duì)Html頁(yè)面進(jìn)行解析,并基于正則表達(dá)式進(jìn)行匹配,能夠?qū)崿F(xiàn)對(duì)特定字符串信息的查找與提取。例如,在爬取某包含“is”的Web頁(yè)面源代碼時(shí),可通過(guò)matchObj = re.match( r'(.*) is (.*?) .*', line, re.M|re.I)的方式進(jìn)行信息提取,從而對(duì)包含“is”的字符串進(jìn)行自動(dòng)匹配并輸出相關(guān)內(nèi)容。在此案例中,( r'(.*) is (.*?) .*', line, re.M|re.I)即為匹配的正則表達(dá)式,能夠?yàn)閿?shù)據(jù)提取提供方法。此外,為了適應(yīng)頁(yè)面變化、網(wǎng)站升級(jí)等,確保匹配更加穩(wěn)定,用戶還可以使用Python自帶的模塊及第三方庫(kù),對(duì)Web頁(yè)面內(nèi)容進(jìn)行解析和提取。

2 Web數(shù)據(jù)挖掘系統(tǒng)設(shè)計(jì)

在系統(tǒng)設(shè)計(jì)和編寫時(shí),應(yīng)按模塊化思想對(duì)系統(tǒng)功能進(jìn)行合理劃分,實(shí)現(xiàn)模塊功能分類,便于代碼維護(hù)和調(diào)試。

2.1 爬蟲功能設(shè)計(jì)

通過(guò)設(shè)置定時(shí)任務(wù),當(dāng)符合任務(wù)執(zhí)行條件時(shí),系統(tǒng)根據(jù)特定的起始Web頁(yè)面進(jìn)行正則匹配,并對(duì)符合正在匹配的鏈接進(jìn)行抓取,對(duì)其中包含的符合要求的數(shù)據(jù)進(jìn)行抓取。最后,將獲得的信息與數(shù)據(jù)進(jìn)行對(duì)比,如數(shù)據(jù)庫(kù)中已存在相關(guān)信息則停止,不存在則插入更新信息。例如,根據(jù)指定的鏈接,收集百度百科詞條內(nèi)容,建立鏈接并分析其頁(yè)面特征。首先,利用urllib2建立與服務(wù)器鏈接,當(dāng)服務(wù)器收到請(qǐng)求后,返回對(duì)應(yīng)的HTTP應(yīng)答,腳本內(nèi)容如下:

fromurllib.request import urlopen

from bs4 import BeautifulSoup

html = urlopen(' https://baike.baidu.com/')

bsObj = BeautifulSoup(html, 'html.parser')

t1 = bsObj.find_all('a')

for t2 in t1:

t3 = t2.get('href')

print(t3)

通過(guò)該方法能夠獲取百度百科頁(yè)面包含的所有超鏈接。其次,設(shè)置正則表達(dá)式,對(duì)獲取的URL進(jìn)行篩選和匹配。在此過(guò)程中,可使用BeautifulSoup模塊獲取URL標(biāo)簽,并使用re模塊構(gòu)建正則表達(dá)式,以便于篩選符合條件的url。如下所示。

import re

from bs4 import BeautifulSoup

print bsObj。prettify

urls=soup.findAll(”a”,hrel=True)

defgetLink(countryUrl);

html = urlopen(' https://baike.baidu.com/'+ itemUrl)

bsObj = BeautifulSoup(html, 'html.parser')

returnbsObj.finall(“a”,href=re.compie(“”(/item/)((??。海?)* basicInfo-item value”))

links=getLinks(“https://baike.baidu.com/item/%E5%9B%BD%E5%AE%B6/17205”)

whilelen(links)>0

links=getLinks(newCountry)

for link in bsObj.findALL(“a”)

if “href” in link.attrs;

print(links.attrs[‘href]

通過(guò)上述方式,對(duì)百度百科數(shù)據(jù)進(jìn)行篩選與提取,從而下載并獲得相應(yīng)的數(shù)據(jù)信息。

2.2 爬蟲功能設(shè)計(jì)

根據(jù)已下載的Web數(shù)據(jù),可借助于Python語(yǔ)言進(jìn)行相應(yīng)的處理和分析。例如,我們可以借助numpy數(shù)值計(jì)算擴(kuò)展進(jìn)行數(shù)據(jù)分析,實(shí)現(xiàn)對(duì)其中的字詞出現(xiàn)頻次進(jìn)行分析,實(shí)例如下:

importnumpy

segStat=segmentDataFrame.groupby(

by='segment'

)['segment'].agg({'計(jì)數(shù)':numpy.size}).reset_index().sort(

columns=['計(jì)數(shù)'],

ascending=False)

在此基礎(chǔ)上,借助第三方庫(kù)WordCloud生成大數(shù)據(jù)詞云圖,

fromwordcloud import WordCloud

importmatplotlib.pyplot as plt

wordcloud=WordCloud(

font_path='字體路徑\simhei.ttf',

background_color='black')

words=fSegStat.set_index('segment').to_dict()

wordcloud.fit_words(words['計(jì)數(shù)'])

plt.imshow(wordcloud)

plt.close()

從而得出相關(guān)頁(yè)面的詞頻詞云圖。由此可見(jiàn),中國(guó)、人民、黨和發(fā)展等詞匯出現(xiàn)次數(shù)較多。

3 結(jié)束語(yǔ)

本文著重介紹了利用Python語(yǔ)言進(jìn)行Web數(shù)據(jù)進(jìn)行挖掘和分析的原理及方法,重點(diǎn)分析了網(wǎng)絡(luò)爬蟲的算法優(yōu)勢(shì)及應(yīng)用環(huán)境,并就正則表達(dá)式、數(shù)據(jù)存儲(chǔ)方式、數(shù)據(jù)抓取過(guò)程及分析方法進(jìn)行了闡述,可見(jiàn)基于Python語(yǔ)言的網(wǎng)絡(luò)爬蟲在數(shù)據(jù)抓取與應(yīng)用中具有顯著的優(yōu)勢(shì),能夠?qū)崿F(xiàn)數(shù)據(jù)提取的自動(dòng)化、個(gè)性化,極大提升了數(shù)據(jù)搜索與分析的效率與質(zhì)量。在數(shù)據(jù)爬取過(guò)程中,用戶應(yīng)考慮數(shù)據(jù)爬蟲算法優(yōu)化和調(diào)整,結(jié)合Python多線程技術(shù),實(shí)現(xiàn)下載緩存優(yōu)化,提高數(shù)據(jù)挖掘的性能。

參考文獻(xiàn):

[1] 熊暢.基于Python爬蟲技術(shù)的網(wǎng)頁(yè)數(shù)據(jù)抓取與分析研究[J].數(shù)字技術(shù)與應(yīng)用,2017(9):35-36.

[2] 陳琳,李容.基于動(dòng)態(tài)Web的Python多線程空氣質(zhì)量數(shù)據(jù)程序設(shè)計(jì)[J].成都信息工程大學(xué)學(xué)報(bào),2016,31(2):180-184.

[3] 齊鵬,李隱峰,宋玉偉.基于Python的Web數(shù)據(jù)采集技術(shù)[J].電子科技,2012,25(11):118-120. [通聯(lián)編輯:王力]

猜你喜歡
數(shù)據(jù)分析
淺析大數(shù)據(jù)時(shí)代對(duì)企業(yè)營(yíng)銷模式的影響
神农架林区| 栾城县| 武功县| 碌曲县| 黔江区| 吉安县| 西乌珠穆沁旗| 巴彦淖尔市| 阿拉尔市| 综艺| 凤阳县| 云南省| 黑龙江省| 喜德县| 瑞丽市| 霍州市| 神池县| 灌南县| 金乡县| 宜宾市| 岑巩县| 东源县| 安阳县| 偃师市| 桦川县| 张北县| 怀集县| 华安县| 赞皇县| 奉节县| 牙克石市| 乌恰县| 永修县| 安康市| 福安市| 巴青县| 竹北市| 柳林县| 博客| 龙江县| 扎鲁特旗|