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

?

基于Python的通用論壇正文提取研究

2018-11-26 09:33:32趙光亮令狐雨薇朱德孫趙順艷楊陶陳鳳
電腦知識(shí)與技術(shù) 2018年24期
關(guān)鍵詞:Python語(yǔ)言

趙光亮 令狐雨薇 朱德孫 趙順艷 楊陶 陳鳳

摘要:該文主要探討B(tài)BS類論壇網(wǎng)頁(yè)的文本數(shù)據(jù)的爬取與分析。首先,對(duì)該類論壇網(wǎng)頁(yè)的HTML結(jié)構(gòu)進(jìn)行研究分析。在該類在論壇類網(wǎng)頁(yè)中,文本數(shù)據(jù)主要包含鏈接頁(yè)面中的全部主貼、全部回帖。其次,結(jié)合正則表達(dá)式、網(wǎng)絡(luò)文本挖掘、Python工具、HTML等工具構(gòu)建該類型論壇網(wǎng)頁(yè)文本數(shù)據(jù)的抓取算法。為了便于用戶閱讀文本,還需要構(gòu)建整理、清洗網(wǎng)頁(yè)文本數(shù)據(jù)的算法,將抓取的網(wǎng)頁(yè)文本數(shù)據(jù)整理為主題和回帖對(duì)應(yīng)的json終極數(shù)據(jù)格局。

關(guān)鍵詞:通用網(wǎng)絡(luò)爬蟲(chóng); BBS;正則表達(dá)式;Python語(yǔ)言

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

1 背景及意義

當(dāng)今是大數(shù)據(jù)時(shí)代,大數(shù)據(jù)又包含無(wú)窮大的信息,而互聯(lián)網(wǎng)中的網(wǎng)頁(yè)數(shù)據(jù)是半結(jié)構(gòu)化存在的,對(duì)我們真正有用的消息被很多廣告、圖標(biāo)、鏈接等噪音元素遮蔽。怎么將有效的信息從網(wǎng)頁(yè)數(shù)據(jù)中爬取出來(lái)并整理為適合用戶閱讀的最終“產(chǎn)品”,是當(dāng)前整個(gè)大數(shù)據(jù)行業(yè)的重點(diǎn)問(wèn)題之一。由于網(wǎng)頁(yè)通常采取超等文本標(biāo)記語(yǔ)言(HTML)來(lái)表達(dá),所以提取網(wǎng)頁(yè)有關(guān)的信息,應(yīng)先獲取 BBS類型網(wǎng)址,利用 Python語(yǔ)言對(duì)于任意 BBS類型的網(wǎng)頁(yè),獲取其 HTML結(jié)構(gòu)內(nèi)容,再運(yùn)用正則表達(dá)式匹配,構(gòu)建一個(gè)算法用于提取該頁(yè)面全部主貼、所有回帖,并按Json格局開(kāi)始存儲(chǔ)。

2 分析方法

2.1 正則表達(dá)式

本文提及的網(wǎng)絡(luò)爬蟲(chóng)算法主要是利用正則表達(dá)式模糊匹配所需的網(wǎng)頁(yè)信息,正則表達(dá)式的主要是模糊匹配文字的最佳工具。它具有很強(qiáng)的靈活性、邏輯性和功能性,可以通過(guò)簡(jiǎn)單快捷的方式對(duì)字符串實(shí)行復(fù)雜的控制。正則表達(dá)式的應(yīng)用:本文對(duì)要提取出來(lái)的BBS網(wǎng)頁(yè)上的源代碼使用正則表達(dá)式來(lái)抓獲用戶所需要的有效網(wǎng)頁(yè)文本內(nèi)容。

2.2 Python語(yǔ)言

Python首先是一款免費(fèi)開(kāi)源軟件,其次它席卷了其他編程語(yǔ)言的解釋性、編譯性、互動(dòng)性和面向?qū)ο?。它自?urllib、urllib2、 re等爬蟲(chóng)最基本的爬蟲(chóng)庫(kù),網(wǎng)絡(luò)爬蟲(chóng)是基于 Python語(yǔ)言開(kāi)發(fā)的開(kāi)源爬蟲(chóng)軟件,用 Eclipse軟件中加載Pydev插件實(shí)現(xiàn)網(wǎng)絡(luò)平臺(tái)搭建,通過(guò)對(duì)正則表達(dá)式和 Python語(yǔ)言的學(xué)習(xí),在 eclipse中編寫(xiě)代碼實(shí)現(xiàn)任意類型 BBS類型網(wǎng)頁(yè)的信息提取。

3 挖掘過(guò)程

3.1 流程分析

論壇正文提取概括為以下幾個(gè)步驟:

結(jié)合已給樣本數(shù)據(jù)鎖定論文網(wǎng)頁(yè)的網(wǎng)址

對(duì)數(shù)據(jù)進(jìn)行預(yù)處理

結(jié)合正則表達(dá)式判斷現(xiàn)階段的網(wǎng)頁(yè)內(nèi)容是否為論壇所要提取的正文數(shù)據(jù)

基于正則表達(dá)式,對(duì)網(wǎng)頁(yè)信息需求進(jìn)行匹配

進(jìn)行匹配模型的確定

對(duì)預(yù)期結(jié)果進(jìn)行分析,給出最優(yōu)解決方案的模型

3.2 數(shù)據(jù)分析

1)HTML文檔結(jié)構(gòu)與解析

HTML是一種標(biāo)準(zhǔn)的標(biāo)記語(yǔ)言,是由WEB的發(fā)明者Berners-Lee創(chuàng)立的,主要用來(lái)創(chuàng)建Web頁(yè)面。瀏覽器可以通過(guò)讀取HTML文件然后將其渲染到瀏覽器界面中供用戶瀏覽使用。HTML文檔是純文本文檔的一種,它形象地描摹了對(duì)象文檔的各個(gè)細(xì)胞在瀏覽器中的顯示特性,比如顯示對(duì)象文檔某個(gè)細(xì)胞的位置、顏色、字體等信息。

2)BBS網(wǎng)頁(yè)結(jié)構(gòu)分析

對(duì) BBS的 URL進(jìn)行分析,發(fā)現(xiàn) BBS網(wǎng)頁(yè) URL中包含了重要的結(jié)構(gòu)信息,頁(yè)面上的不同元素如標(biāo)題、作者、發(fā)帖時(shí)間、發(fā)帖內(nèi)容、回帖內(nèi)容等出現(xiàn)特定的標(biāo)記符之間,借此實(shí)現(xiàn)了 Python語(yǔ)言爬取網(wǎng)頁(yè)信息挖掘的方向。

3)基于DOM樹(shù)的HTML文檔解析

HTML DOM 即HTML 的標(biāo)準(zhǔn)對(duì)象模型、HTML 的標(biāo)準(zhǔn)編程接口、W3C 標(biāo)準(zhǔn)。它界定了全數(shù) HTML 細(xì)胞的工具和屬性,以及會(huì)見(jiàn)它們的方式??偟膩?lái)說(shuō),HTML DOM 是獲取、修改、添加或刪除 HTML 元素的一個(gè)標(biāo)準(zhǔn)。做出有價(jià)值的信息,能幫助并指導(dǎo)企業(yè)決策、政府決策等工作。

3.3 數(shù)據(jù)預(yù)處理

BBS類網(wǎng)頁(yè)文本榨取主要從網(wǎng)頁(yè)自身的標(biāo)簽語(yǔ)言結(jié)構(gòu),以及網(wǎng)頁(yè)中的分塊視覺(jué)特征的角度出發(fā)。一般情況下,文本數(shù)據(jù)都位于標(biāo)簽的[ table]節(jié)點(diǎn)內(nèi),因此去除頁(yè)面“噪聲”,對(duì)每一個(gè)[ table]節(jié)點(diǎn)進(jìn)行處理后,就可以得到不含任何標(biāo)簽內(nèi)容的純文本字符串。

通過(guò)對(duì) BBS類網(wǎng)頁(yè)的 HTML文檔結(jié)構(gòu)進(jìn)行研究,構(gòu)建了從網(wǎng)頁(yè)源代碼中抽取所有主貼、所有回帖相關(guān)的信息的算法,最后能有效地抓獲我們的目標(biāo)信息。用正則達(dá)式的匹配功能,我們能夠快速地實(shí)現(xiàn)URL 的抽取。網(wǎng)絡(luò)爬蟲(chóng)以種子網(wǎng)頁(yè)為“源”,提取種子網(wǎng)頁(yè)中的有用鏈接并將其放入一個(gè)有序的候補(bǔ)爬行隊(duì)列中,按照用戶希望的規(guī)則從隊(duì)列中提取URL。為了避免重復(fù)訪問(wèn)同一個(gè)鏈接,我們將以訪問(wèn)過(guò)的URL備份到已訪問(wèn)URL隊(duì)列。

為了使得抓取的數(shù)據(jù)有效,將對(duì)整體數(shù)據(jù)進(jìn)行非正常剔除。(例如:Web網(wǎng)頁(yè)打不開(kāi),指定的主題不存在等。整體數(shù)據(jù)進(jìn)行非正常剔除。(例如:網(wǎng)頁(yè)打不開(kāi),指定的主題不存在或已被刪除或正在被審核,請(qǐng)返回)。

3.4 挖掘建模

聯(lián)網(wǎng)比喻為一張蜘蛛網(wǎng), Crawler就像敏捷的蜘蛛一樣在這張網(wǎng)上掃蕩,不斷地偵探互聯(lián)網(wǎng)上對(duì)用戶有用的文本信息。為了快速準(zhǔn)確獲取,聯(lián)網(wǎng)比喻為一張蜘蛛網(wǎng), Crawler就像蜘蛛一樣在這張網(wǎng)上游走,不斷地搜索互聯(lián)網(wǎng)上的有用信息。為了快速準(zhǔn)確獲取輿情信息,提出以下提取方式,方案如下:

(1)獲取任意BBS類型的URL

(2)針對(duì)任意BBS類型網(wǎng)頁(yè),正文提取需要的數(shù)據(jù)項(xiàng)主要有主貼(正文、時(shí)間及作者)、回帖(正文、時(shí)間及作者)。本文在通過(guò)網(wǎng)頁(yè)正文提取技術(shù)的基礎(chǔ)上,實(shí)現(xiàn)了對(duì)網(wǎng)頁(yè)正文更好的提取,利用html標(biāo)簽對(duì)正文、時(shí)間及作者進(jìn)行分析。

(3)如果要對(duì)BBS類論壇網(wǎng)頁(yè)進(jìn)行抓取,那么需要先對(duì)該類網(wǎng)頁(yè)進(jìn)行聚類處理。

(4)然后對(duì)用戶需要的取數(shù)據(jù)項(xiàng)信息進(jìn)行爬取,對(duì)于有發(fā)表作者、主題、發(fā)表內(nèi)容和發(fā)表時(shí)間的網(wǎng)頁(yè),本文采用正則表BBS類論壇網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)循環(huán)獲取網(wǎng)頁(yè)的原理是通過(guò)不斷地沖擊網(wǎng)頁(yè)內(nèi)文本包含的超鏈接地址來(lái)獲取更多的網(wǎng)頁(yè),算法模型如下:

獲取任意BBS類型的URL

針對(duì)任意類型BBS網(wǎng)頁(yè),利用HTML標(biāo)簽樹(shù)對(duì)正文、時(shí)間及作者進(jìn)行分析

在BBS論壇類網(wǎng)頁(yè)進(jìn)行抽取之前,需要先對(duì)爬行的網(wǎng)頁(yè)進(jìn)行聚類

用正則表達(dá)式對(duì)網(wǎng)頁(yè)的抽取數(shù)據(jù)項(xiàng)有發(fā)表作者、內(nèi)容、主題和發(fā)表時(shí)間

3.5 分析結(jié)果

針對(duì)挖掘模型,經(jīng)過(guò)數(shù)據(jù)處理后結(jié)果如下:

標(biāo)題信息

{標(biāo)題信息:"從這條新聞中你得到了什么教訓(xùn)? - 笑話大全 - 搞笑村"}

題主信息

{題主信息: "臨風(fēng)有點(diǎn)冷"}

題主發(fā)帖內(nèi)容

{“題主發(fā)帖內(nèi)容”:[{“在網(wǎng)上看個(gè)新聞,大概內(nèi)容是”:”老公買了一只藏獒幼仔,沒(méi)時(shí)間養(yǎng),一直是老婆在養(yǎng)”},{“一次老公老婆吵架,老公把老婆打了,結(jié)果藏獒沖出來(lái)果斷把老公手咬斷了!”},{“打老婆時(shí)要把狗栓好!” }]}

回帖信息

{“回帖信息”:"分?jǐn)?shù)高如果認(rèn)購(gòu)二哥讓他退給我"}

回帖作者

{“回帖作者”:"豪杰先鋒濤濤"}

回帖時(shí)間:

{“回帖時(shí)間”:"2016-9-4 09:57:16"}

3.6 算法評(píng)價(jià)

本文的算法是固定的對(duì)于某類的 BBS類類型的BBS類論壇網(wǎng)頁(yè),對(duì)于任意類型的BBS類論壇網(wǎng)頁(yè)的信息提取還沒(méi)有達(dá)到。算法使用的匹配原則不能實(shí)時(shí)更新,對(duì)于不斷更新的網(wǎng)頁(yè)源代碼,本文所使用的算法可能會(huì)不適用。

4 結(jié)語(yǔ)

針對(duì) BBS論壇網(wǎng)頁(yè)的主貼與回帖的提取,本文使用的是正則表達(dá)式來(lái)對(duì)網(wǎng)頁(yè)源代碼進(jìn)行所需信息的匹配與提取,為了更準(zhǔn)確地使用正則表達(dá)式,在之前了解了網(wǎng)頁(yè)源代碼的結(jié)構(gòu),根據(jù)所需要的內(nèi)容所在的標(biāo)簽進(jìn)行了多網(wǎng)頁(yè)的分析。使用相似度最大的一種正則表達(dá)式的表示方法對(duì)網(wǎng)頁(yè)源代碼進(jìn)行匹配標(biāo)記。本文對(duì)網(wǎng)頁(yè)文本數(shù)據(jù)的提取是具有一定的局限性,主要針對(duì) BBS論壇中的信息正則表達(dá)式,協(xié)同網(wǎng)絡(luò)爬蟲(chóng)技術(shù),使得數(shù)據(jù)分析員能夠快速?gòu)幕ヂ?lián)網(wǎng)中獲取海量的網(wǎng)頁(yè)數(shù)據(jù),對(duì)抓獲的數(shù)據(jù)進(jìn)行系統(tǒng)的整理和分析,從中提取出對(duì)互聯(lián)網(wǎng)數(shù)據(jù)用戶有價(jià)值的信息,并指導(dǎo)該用戶做出決策等。

參考文獻(xiàn):

[1] 李媛.輿情系統(tǒng)中web信息抽取子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].電子科技大學(xué),2013.

[2] 余浩.基于網(wǎng)絡(luò)信息檢索的網(wǎng)頁(yè)文本抽取和處理的研究[D].南京郵電大學(xué),2014.

[3] 劉佐達(dá),張久嶺,陳茂科,等.一種面向BBS信息檢索的主題網(wǎng)絡(luò)爬蟲(chóng)算法[J].鄭州大學(xué)學(xué)報(bào)(理學(xué)版),2010(6).

【通聯(lián)編輯:代影】

猜你喜歡
Python語(yǔ)言
工業(yè)物聯(lián)網(wǎng)智能邊緣計(jì)算應(yīng)用軟件的快捷開(kāi)發(fā)與設(shè)計(jì)
關(guān)于面向非計(jì)算機(jī)專業(yè)開(kāi)設(shè)Python語(yǔ)言的幾點(diǎn)思考
考試周刊(2018年23期)2018-02-07 00:15:42
計(jì)算思維培養(yǎng)視域下《Python程序設(shè)計(jì)》課程的教學(xué)改革實(shí)踐
在高中信息技術(shù)課中培養(yǎng)學(xué)生計(jì)算思維的有效方法探討
基于KNN算法的手寫(xiě)數(shù)字識(shí)別
Python語(yǔ)言教學(xué)中問(wèn)題解決能力和創(chuàng)新能力的培養(yǎng)實(shí)踐
Python語(yǔ)言程序設(shè)計(jì)教學(xué)體系建設(shè)
面向計(jì)算生態(tài)的Python語(yǔ)言入門(mén)課程教學(xué)方案
基于Python語(yǔ)言和支持向量機(jī)的字符驗(yàn)證碼識(shí)別
論P(yáng)ython程序設(shè)計(jì)語(yǔ)言
广东省| 蓝田县| 佛教| 泗阳县| 洪江市| 铅山县| 墨江| 千阳县| 泗洪县| 梁平县| 旅游| 壶关县| 昆明市| 靖宇县| 万年县| 红原县| 临夏县| 壶关县| 女性| 行唐县| 乌苏市| 深水埗区| 固始县| 大埔县| 凤台县| 太湖县| 区。| 青神县| 启东市| 宜君县| 乌兰察布市| 寻甸| 蕲春县| 格尔木市| 青田县| 南昌县| 子长县| 阿克陶县| 沭阳县| 濉溪县| 阳泉市|