王仕艷
(川北幼兒師范高等??茖W校,四川 廣元628000)
目前互聯(lián)網(wǎng)中的數(shù)據(jù)還存在更新?lián)Q代快、推送慢影響消息利用率、客戶獲得數(shù)據(jù)速度慢等問題[1-3]。而云時代下信息具有傳播速度快、數(shù)據(jù)集中管理、批量傳送數(shù)據(jù)等特點,同時還支持個性化服務,根據(jù)這些特點為用戶推送出滿足需求的數(shù)據(jù)信息,可提高數(shù)據(jù)信息的利用率。
當前的數(shù)據(jù)抓取技術有多種,其中hadoop云平臺框架被廣泛使用,但是這些技術多以java技術實現(xiàn)[4-5]。面對快速系統(tǒng)開發(fā)時java語言不太能滿足,為此本文以C#語言作為系統(tǒng)開發(fā)語言使用開源nwebcrawler框架作為數(shù)據(jù)采集工具。
互聯(lián)網(wǎng)中包含大量信息,如何獲取這些信息加以使用能夠給企業(yè)、個人提供更多的信息資源從而增加企業(yè)競爭和個人信息獲取來源。信息獲取大多來源于網(wǎng)站,由于行業(yè)、服務對象等不同造成網(wǎng)站有多種形式。如何獲取不同類別網(wǎng)站的信息是當前面臨問題。段青玲等文獻對農(nóng)業(yè)網(wǎng)絡信息進行了獲?。?],文獻[6]對海上信息進行了獲取,他們對不同的網(wǎng)站信息進行了不同的獲取信息開發(fā),這樣增加了獲取信息的成本。為解決這一問題,本文提出了一種通用網(wǎng)站信息獲取系統(tǒng)開發(fā)。系統(tǒng)功能主要有:(1)系統(tǒng)登錄管理,該功能用于權限管理,保障用戶信息安全。(2)系統(tǒng)配置管理,該功能用于抓取數(shù)據(jù)規(guī)則配置、數(shù)據(jù)管理等。(3)數(shù)據(jù)抓取管理,根據(jù)配置信息進行數(shù)據(jù)抓取。(4)數(shù)據(jù)存儲管理,由于抓取的數(shù)據(jù)量比較大需要對數(shù)據(jù)進行備份、還原等管理。系統(tǒng)用戶主要有:系統(tǒng)管理員、普通用戶兩類,系統(tǒng)管理員對系統(tǒng)管理,普通用戶進行相應的數(shù)據(jù)抓取管理。如圖1為系統(tǒng)總體用例圖。
圖1 系統(tǒng)總體用例圖
Web信息抓取平臺主要由三部分組成:數(shù)據(jù)源、數(shù)據(jù)采集以及數(shù)據(jù)分析,如圖2所示。在數(shù)據(jù)源中包含了多種類型的網(wǎng)站,這些網(wǎng)站提供采集信息;此外系統(tǒng)還配置有txt、xml、sqlite以及excel文件,這些文件用于存儲采集信息、配置信息等。數(shù)據(jù)采集功能有:抓取、抽取、分類等。信息服務中主要進行信息發(fā)布、信息查詢、信息推薦、數(shù)據(jù)管理、收費管理等。
在云環(huán)境下數(shù)據(jù)采集目的是方便用戶快速查詢信息,系統(tǒng)關鍵技術有:數(shù)據(jù)采集、數(shù)據(jù)抽取、數(shù)據(jù)分類、數(shù)據(jù)查詢等。下文詳細分析系統(tǒng)關鍵技術。
2.2.1 網(wǎng)站采集數(shù)據(jù)
Web數(shù)據(jù)采集主要是從Web上獲取網(wǎng)站網(wǎng)頁,將網(wǎng)頁保存在文檔中,并將文檔中的信息提取出來。為提高系統(tǒng)開發(fā)效率,本文使用C#語言進行網(wǎng)站數(shù)據(jù)采集系統(tǒng)開發(fā),該語言具有簡單、易用特征,非常適合快速系統(tǒng)開發(fā)。當前網(wǎng)站數(shù)據(jù)采集框架有多種,比如:WebCollector、Nutch、nwebcrawler等[7-8]。本 文選擇nwebcrawler框架作為網(wǎng)站采集數(shù)據(jù)框架,該框架具有源代碼開發(fā)、性能優(yōu)越等特點。如圖3為網(wǎng)站采集活動圖。
圖2 系統(tǒng)總體設計
2.2.2 數(shù)據(jù)抽取技術
在C#網(wǎng)站數(shù)據(jù)抽取的類有:WebClient、Web-Browser、HttpWebRequest。本系統(tǒng)使用nwebcrawler框架、WebClient、WebBrowser進行數(shù)據(jù)采集開發(fā)。數(shù)據(jù)抽取是系統(tǒng)核心技術。如下為網(wǎng)站數(shù)據(jù)抽取部分核心代碼。
//獲取網(wǎng)頁中所有的<td...></td>標簽
HtmlElementCollection htmlCol = webBrowser1.Document.GetElementsByTagName("td");
if(htmlCol.Count<4)
{
return;
}
//根據(jù)網(wǎng)頁源代碼可以知道前四個是標題
//設置表格標題
dataGridView1.ColumnCount=4;
dataGridView1.Columns[0].Name = htmlCol[0].InnerText;
dataGridView1.Columns[1].Name = htmlCol[1].InnerText;
dataGridView1.Columns[2].Name = htmlCol[2].InnerText;
dataGridView1.Columns[3].Name = htmlCol[3].InnerText;
dataGridView1.Rows.Clear();
//從第四個即標題后面開始四個一行加入列表中
for(int i=4;i<htmlCol.Count &&i+4<htmlCol.Count;i+=4)
{
dataGridView1.Rows.Add(new string[]{htmlCol[i].InnerText,htmlCol[i+1].InnerText
htmlCol[i+2].InnerText,htmlCol[i+3].Inner-Text});
}
Web信息抓取系統(tǒng)中使用數(shù)據(jù)庫有兩類:一類是SQLite數(shù)據(jù)庫用于存儲相應的參數(shù);一類是網(wǎng)絡數(shù)據(jù)庫Mysql。在信息抓取系統(tǒng)中包含的數(shù)據(jù)表有:用戶權限表、信息存儲表、參數(shù)配置表等。
(1)用戶權限表。該表用于存儲用戶權限信息,包含的字段有:權限ID、權限內(nèi)容、用戶名、用戶ID、用戶密碼等,表1為詳細說明。
表1 用戶權限表
(2)參數(shù)信息表。該表用于存儲系統(tǒng)參數(shù)信息,包含的字段有:參數(shù)ID、參數(shù)名、參數(shù)內(nèi)容、參數(shù)大小、參數(shù)時間、備注等。表2為參數(shù)信息詳細說明。
表2 參數(shù)信息表
本文系統(tǒng)使用B/S模式進行開發(fā)。由于系統(tǒng)功能較多,本文只列舉網(wǎng)站數(shù)據(jù)采集創(chuàng)建過程。用戶需要在界面中輸入網(wǎng)址規(guī)則、下載深度、網(wǎng)址過濾(使用正則表達式)、重復下載網(wǎng)址過濾、下載參數(shù)設置、網(wǎng)頁數(shù)據(jù)設置、javascript引擎設置、登錄設置、基本信息設置等。圖4為網(wǎng)站數(shù)據(jù)采集創(chuàng)建界面。
圖4 網(wǎng)站數(shù)據(jù)采集創(chuàng)建界面
本文構建了Web信息抓取系統(tǒng),實現(xiàn)了Web信息采集,主要結論為:系統(tǒng)實現(xiàn)了數(shù)據(jù)采集、數(shù)據(jù)抽取、數(shù)據(jù)分類,用戶可在界面中輸入相應的信息進行數(shù)據(jù)采集,提高了系統(tǒng)的復用性。