馬寅秋
摘 要 本文通過一個(gè)基本的web文本信息抽取實(shí)例,展示了在R語言平臺下,利用人工構(gòu)建的正則表達(dá)式在靜態(tài)web文本抽取方面的一些基本做法。同時(shí),將其所抽取的基本內(nèi)容進(jìn)行組織,用較為新穎的單幀可視化詞云及多幀可視化詞云進(jìn)行呈現(xiàn)。
關(guān)鍵詞 信息抽取 正則表達(dá)式 R語言 可視化
中圖分類號:TP311.52文獻(xiàn)標(biāo)識碼:A
R語言一直以來以在數(shù)據(jù)統(tǒng)計(jì)功能方面為人所稱道,很多數(shù)據(jù)資料往往用很少的幾行R語言代碼就能呈現(xiàn)出很專業(yè)的視覺效果。解決了大部分?jǐn)?shù)據(jù)處理人員所頭疼的數(shù)據(jù)可視化問題。下面就以baidu熱搜榜的熱搜信息的文本抽取為例,展示W(wǎng)eb文本抽取及呈現(xiàn)在R語言平臺下的實(shí)現(xiàn)流程。
1抓取網(wǎng)頁數(shù)據(jù)
首先所要做的就是抓取相關(guān)網(wǎng)頁數(shù)據(jù),網(wǎng)頁數(shù)據(jù)一般是以URL為指向進(jìn)行抓取,在極少情況下也可以通過數(shù)據(jù)流的形式抓取。當(dāng)給出提取文本信息的目標(biāo)URL后,用readline()方法去讀取網(wǎng)頁數(shù)據(jù),網(wǎng)頁數(shù)據(jù)是以html格式返回。
1.1網(wǎng)頁數(shù)據(jù)處理
網(wǎng)頁數(shù)據(jù)內(nèi)包含大量的冗余數(shù)據(jù),有用數(shù)據(jù)夾雜在冗余數(shù)據(jù)之間。那么,我們必須使用某些方法來去除冗余數(shù)據(jù),獲取有用數(shù)據(jù)。這些數(shù)據(jù)在所有數(shù)據(jù)中的放置方式是有一定規(guī)律可循的。找到這些有用信息最簡潔,高效的做法就是利用正則表達(dá)式。在計(jì)算機(jī)科學(xué)中,正則表達(dá)式是由普通字符和元字符組成的一種邏輯公式,是用來表達(dá)對字符串的一種過濾邏輯。一個(gè)正則表達(dá)式通常被稱為一個(gè)模式可以用來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串。正則表達(dá)式本身并不是一種完備的程序設(shè)計(jì)語言,準(zhǔn)確的說,它是一種內(nèi)置于其他程序語言中的“微型語言”。
1.2網(wǎng)頁數(shù)據(jù)格式處理
首先,利用正則表達(dá)式獲取網(wǎng)頁編碼。網(wǎng)頁編碼的信息一般都標(biāo)簽的屬性“charset”中,因此,可以通過正則表達(dá)式進(jìn)行匹配來提取編碼信息。這個(gè)正則表達(dá)式較為簡單,將所要查找的關(guān)鍵字“charset=”與其后的非數(shù)字字母型符號找出,然后做一個(gè)反向匹配,就可以找出編碼類型。找出編碼類型之后,將R語言所抓取的網(wǎng)頁數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的編碼格式。這樣網(wǎng)頁中的有用數(shù)據(jù)才能被正確解析。
1.3抓取有效信息
在抓取有效信息之前,必須要清楚掌握有效信息處于網(wǎng)頁數(shù)據(jù)中的哪些位置,其中的前后規(guī)律與結(jié)構(gòu)是怎樣的。這樣,才能通過正則表達(dá)式對于結(jié)構(gòu)的匹配來獲取相應(yīng)的數(shù)據(jù)。通過分析,發(fā)現(xiàn)所有的熱點(diǎn)新聞標(biāo)題都被放置在包含屬性“class”且屬性“l(fā)ist-title”的標(biāo)簽的內(nèi)容之中。
對于標(biāo)簽內(nèi)容的提取不同于前面對于標(biāo)簽屬性的提取。標(biāo)簽的屬性值緊跟在確定的屬性名稱之后,因此,尋找起來定位相對容易。而內(nèi)容并不緊跟在標(biāo)簽名稱或某一屬性名稱之后,而是在標(biāo)簽的“>”之后。所以,當(dāng)我們定位到明確的屬性值“class=list-title”之后,必須尋找包含此屬性的標(biāo)簽的頭中的“>”部分,以此為標(biāo)識作為有效數(shù)據(jù)的開始。那么,自然而然,標(biāo)簽的結(jié)尾則是作為內(nèi)容標(biāo)識的結(jié)尾。值得注意的是,在此利用正則表達(dá)式時(shí)不可使用貪婪匹配,否則所定位的“>”就不可能是所定位標(biāo)簽的部分,自然獲取不到所要查找的數(shù)據(jù)。
當(dāng)然,根據(jù)文本提取項(xiàng)目的需求,有用數(shù)據(jù)經(jīng)常并不僅僅只是標(biāo)題內(nèi)容這一信息,從網(wǎng)頁中還可以獲取到點(diǎn)擊人數(shù)以及排名上升下降情況。這些信息包含在標(biāo)簽之中,標(biāo)簽的內(nèi)容是新聞相應(yīng)的點(diǎn)擊量,屬性“class”的值有三種,分別是“icon-rise”、“icon-fair”以及“icon-fall”,各自代表新聞的排名是上升,靜止,還是下降。
當(dāng)能提取編碼信息與新聞內(nèi)容信息之后,挖掘點(diǎn)擊量信息相對就較為輕松??梢酝ㄟ^定位“查看pdf文檔請下載app