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