趙光亮 令狐雨薇 朱德孫 趙順艷 楊陶 陳鳳
摘要:該文主要探討B(tài)BS類論壇網(wǎng)頁的文本數(shù)據(jù)的爬取與分析。首先,對該類論壇網(wǎng)頁的HTML結(jié)構(gòu)進行研究分析。在該類在論壇類網(wǎng)頁中,文本數(shù)據(jù)主要包含鏈接頁面中的全部主貼、全部回帖。其次,結(jié)合正則表達式、網(wǎng)絡(luò)文本挖掘、Python工具、HTML等工具構(gòu)建該類型論壇網(wǎng)頁文本數(shù)據(jù)的抓取算法。為了便于用戶閱讀文本,還需要構(gòu)建整理、清洗網(wǎng)頁文本數(shù)據(jù)的算法,將抓取的網(wǎng)頁文本數(shù)據(jù)整理為主題和回帖對應(yīng)的json終極數(shù)據(jù)格局。
關(guān)鍵詞:通用網(wǎng)絡(luò)爬蟲; BBS;正則表達式;Python語言
中圖分類號:TP3 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)24-0259-02
1 背景及意義
當(dāng)今是大數(shù)據(jù)時代,大數(shù)據(jù)又包含無窮大的信息,而互聯(lián)網(wǎng)中的網(wǎng)頁數(shù)據(jù)是半結(jié)構(gòu)化存在的,對我們真正有用的消息被很多廣告、圖標(biāo)、鏈接等噪音元素遮蔽。怎么將有效的信息從網(wǎng)頁數(shù)據(jù)中爬取出來并整理為適合用戶閱讀的最終“產(chǎn)品”,是當(dāng)前整個大數(shù)據(jù)行業(yè)的重點問題之一。由于網(wǎng)頁通常采取超等文本標(biāo)記語言(HTML)來表達,所以提取網(wǎng)頁有關(guān)的信息,應(yīng)先獲取 BBS類型網(wǎng)址,利用 Python語言對于任意 BBS類型的網(wǎng)頁,獲取其 HTML結(jié)構(gòu)內(nèi)容,再運用正則表達式匹配,構(gòu)建一個算法用于提取該頁面全部主貼、所有回帖,并按Json格局開始存儲。
2 分析方法
2.1 正則表達式
本文提及的網(wǎng)絡(luò)爬蟲算法主要是利用正則表達式模糊匹配所需的網(wǎng)頁信息,正則表達式的主要是模糊匹配文字的最佳工具。它具有很強的靈活性、邏輯性和功能性,可以通過簡單快捷的方式對字符串實行復(fù)雜的控制。正則表達式的應(yīng)用:本文對要提取出來的BBS網(wǎng)頁上的源代碼使用正則表達式來抓獲用戶所需要的有效網(wǎng)頁文本內(nèi)容。
2.2 Python語言
Python首先是一款免費開源軟件,其次它席卷了其他編程語言的解釋性、編譯性、互動性和面向?qū)ο?。它自?urllib、urllib2、 re等爬蟲最基本的爬蟲庫,網(wǎng)絡(luò)爬蟲是基于 Python語言開發(fā)的開源爬蟲軟件,用 Eclipse軟件中加載Pydev插件實現(xiàn)網(wǎng)絡(luò)平臺搭建,通過對正則表達式和 Python語言的學(xué)習(xí),在 eclipse中編寫代碼實現(xiàn)任意類型 BBS類型網(wǎng)頁的信息提取。
3 挖掘過程
3.1 流程分析
論壇正文提取概括為以下幾個步驟:
結(jié)合已給樣本數(shù)據(jù)鎖定論文網(wǎng)頁的網(wǎng)址
對數(shù)據(jù)進行預(yù)處理
結(jié)合正則表達式判斷現(xiàn)階段的網(wǎng)頁內(nèi)容是否為論壇所要提取的正文數(shù)據(jù)
基于正則表達式,對網(wǎng)頁信息需求進行匹配
進行匹配模型的確定
對預(yù)期結(jié)果進行分析,給出最優(yōu)解決方案的模型
3.2 數(shù)據(jù)分析
1)HTML文檔結(jié)構(gòu)與解析
HTML是一種標(biāo)準(zhǔn)的標(biāo)記語言,是由WEB的發(fā)明者Berners-Lee創(chuàng)立的,主要用來創(chuàng)建Web頁面。瀏覽器可以通過讀取HTML文件然后將其渲染到瀏覽器界面中供用戶瀏覽使用。HTML文檔是純文本文檔的一種,它形象地描摹了對象文檔的各個細胞在瀏覽器中的顯示特性,比如顯示對象文檔某個細胞的位置、顏色、字體等信息。
2)BBS網(wǎng)頁結(jié)構(gòu)分析
對 BBS的 URL進行分析,發(fā)現(xiàn) BBS網(wǎng)頁 URL中包含了重要的結(jié)構(gòu)信息,頁面上的不同元素如標(biāo)題、作者、發(fā)帖時間、發(fā)帖內(nèi)容、回帖內(nèi)容等出現(xiàn)特定的標(biāo)記符之間,借此實現(xiàn)了 Python語言爬取網(wǎng)頁信息挖掘的方向。
3)基于DOM樹的HTML文檔解析
HTML DOM 即HTML 的標(biāo)準(zhǔn)對象模型、HTML 的標(biāo)準(zhǔn)編程接口、W3C 標(biāo)準(zhǔn)。它界定了全數(shù) HTML 細胞的工具和屬性,以及會見它們的方式。總的來說,HTML DOM 是獲取、修改、添加或刪除 HTML 元素的一個標(biāo)準(zhǔn)。做出有價值的信息,能幫助并指導(dǎo)企業(yè)決策、政府決策等工作。
3.3 數(shù)據(jù)預(yù)處理
BBS類網(wǎng)頁文本榨取主要從網(wǎng)頁自身的標(biāo)簽語言結(jié)構(gòu),以及網(wǎng)頁中的分塊視覺特征的角度出發(fā)。一般情況下,文本數(shù)據(jù)都位于標(biāo)簽的[ table]節(jié)點內(nèi),因此去除頁面“噪聲”,對每一個[ table]節(jié)點進行處理后,就可以得到不含任何標(biāo)簽內(nèi)容的純文本字符串。
通過對 BBS類網(wǎng)頁的 HTML文檔結(jié)構(gòu)進行研究,構(gòu)建了從網(wǎng)頁源代碼中抽取所有主貼、所有回帖相關(guān)的信息的算法,最后能有效地抓獲我們的目標(biāo)信息。用正則達式的匹配功能,我們能夠快速地實現(xiàn)URL 的抽取。網(wǎng)絡(luò)爬蟲以種子網(wǎng)頁為“源”,提取種子網(wǎng)頁中的有用鏈接并將其放入一個有序的候補爬行隊列中,按照用戶希望的規(guī)則從隊列中提取URL。為了避免重復(fù)訪問同一個鏈接,我們將以訪問過的URL備份到已訪問URL隊列。
為了使得抓取的數(shù)據(jù)有效,將對整體數(shù)據(jù)進行非正常剔除。(例如:Web網(wǎng)頁打不開,指定的主題不存在等。整體數(shù)據(jù)進行非正常剔除。(例如:網(wǎng)頁打不開,指定的主題不存在或已被刪除或正在被審核,請返回)。
3.4 挖掘建模
聯(lián)網(wǎng)比喻為一張蜘蛛網(wǎng), Crawler就像敏捷的蜘蛛一樣在這張網(wǎng)上掃蕩,不斷地偵探互聯(lián)網(wǎng)上對用戶有用的文本信息。為了快速準(zhǔn)確獲取,聯(lián)網(wǎng)比喻為一張蜘蛛網(wǎng), Crawler就像蜘蛛一樣在這張網(wǎng)上游走,不斷地搜索互聯(lián)網(wǎng)上的有用信息。為了快速準(zhǔn)確獲取輿情信息,提出以下提取方式,方案如下:
(1)獲取任意BBS類型的URL
(2)針對任意BBS類型網(wǎng)頁,正文提取需要的數(shù)據(jù)項主要有主貼(正文、時間及作者)、回帖(正文、時間及作者)。本文在通過網(wǎng)頁正文提取技術(shù)的基礎(chǔ)上,實現(xiàn)了對網(wǎng)頁正文更好的提取,利用html標(biāo)簽對正文、時間及作者進行分析。
(3)如果要對BBS類論壇網(wǎng)頁進行抓取,那么需要先對該類網(wǎng)頁進行聚類處理。
(4)然后對用戶需要的取數(shù)據(jù)項信息進行爬取,對于有發(fā)表作者、主題、發(fā)表內(nèi)容和發(fā)表時間的網(wǎng)頁,本文采用正則表BBS類論壇網(wǎng)絡(luò)爬蟲實現(xiàn)循環(huán)獲取網(wǎng)頁的原理是通過不斷地沖擊網(wǎng)頁內(nèi)文本包含的超鏈接地址來獲取更多的網(wǎng)頁,算法模型如下:
獲取任意BBS類型的URL
針對任意類型BBS網(wǎng)頁,利用HTML標(biāo)簽樹對正文、時間及作者進行分析
在BBS論壇類網(wǎng)頁進行抽取之前,需要先對爬行的網(wǎng)頁進行聚類
用正則表達式對網(wǎng)頁的抽取數(shù)據(jù)項有發(fā)表作者、內(nèi)容、主題和發(fā)表時間
3.5 分析結(jié)果
針對挖掘模型,經(jīng)過數(shù)據(jù)處理后結(jié)果如下:
標(biāo)題信息
{標(biāo)題信息:"從這條新聞中你得到了什么教訓(xùn)? - 笑話大全 - 搞笑村"}
題主信息
{題主信息: "臨風(fēng)有點冷"}
題主發(fā)帖內(nèi)容
{“題主發(fā)帖內(nèi)容”:[{“在網(wǎng)上看個新聞,大概內(nèi)容是”:”老公買了一只藏獒幼仔,沒時間養(yǎng),一直是老婆在養(yǎng)”},{“一次老公老婆吵架,老公把老婆打了,結(jié)果藏獒沖出來果斷把老公手咬斷了!”},{“打老婆時要把狗栓好!” }]}
回帖信息
{“回帖信息”:"分?jǐn)?shù)高如果認(rèn)購二哥讓他退給我"}
回帖作者
{“回帖作者”:"豪杰先鋒濤濤"}
回帖時間:
{“回帖時間”:"2016-9-4 09:57:16"}
3.6 算法評價
本文的算法是固定的對于某類的 BBS類類型的BBS類論壇網(wǎng)頁,對于任意類型的BBS類論壇網(wǎng)頁的信息提取還沒有達到。算法使用的匹配原則不能實時更新,對于不斷更新的網(wǎng)頁源代碼,本文所使用的算法可能會不適用。
4 結(jié)語
針對 BBS論壇網(wǎng)頁的主貼與回帖的提取,本文使用的是正則表達式來對網(wǎng)頁源代碼進行所需信息的匹配與提取,為了更準(zhǔn)確地使用正則表達式,在之前了解了網(wǎng)頁源代碼的結(jié)構(gòu),根據(jù)所需要的內(nèi)容所在的標(biāo)簽進行了多網(wǎng)頁的分析。使用相似度最大的一種正則表達式的表示方法對網(wǎng)頁源代碼進行匹配標(biāo)記。本文對網(wǎng)頁文本數(shù)據(jù)的提取是具有一定的局限性,主要針對 BBS論壇中的信息正則表達式,協(xié)同網(wǎng)絡(luò)爬蟲技術(shù),使得數(shù)據(jù)分析員能夠快速從互聯(lián)網(wǎng)中獲取海量的網(wǎng)頁數(shù)據(jù),對抓獲的數(shù)據(jù)進行系統(tǒng)的整理和分析,從中提取出對互聯(lián)網(wǎng)數(shù)據(jù)用戶有價值的信息,并指導(dǎo)該用戶做出決策等。
參考文獻:
[1] 李媛.輿情系統(tǒng)中web信息抽取子系統(tǒng)的設(shè)計與實現(xiàn)[D].電子科技大學(xué),2013.
[2] 余浩.基于網(wǎng)絡(luò)信息檢索的網(wǎng)頁文本抽取和處理的研究[D].南京郵電大學(xué),2014.
[3] 劉佐達,張久嶺,陳茂科,等.一種面向BBS信息檢索的主題網(wǎng)絡(luò)爬蟲算法[J].鄭州大學(xué)學(xué)報(理學(xué)版),2010(6).
【通聯(lián)編輯:代影】