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