廣州工商學(xué)院電子信息工程系 何小明
通用爬蟲雖已發(fā)展多年,技術(shù)較為成熟,但僅可采集到具有統(tǒng)一資源定位符(URL)的淺層網(wǎng)頁(Surface Web)。隨著Web技術(shù)的快速發(fā)展,越來越多的網(wǎng)頁將其數(shù)據(jù)與業(yè)務(wù)進(jìn)行物理分離,僅提供限制性的數(shù)據(jù)訪問接口,使其具有商業(yè)價(jià)值的數(shù)據(jù)隱藏到深層網(wǎng)頁(Deep Web)背后的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)中。目前,很多爬蟲研究者試圖設(shè)計(jì)一個(gè)能采集全部深層網(wǎng)頁數(shù)據(jù)的通用爬蟲,由于不同深層網(wǎng)頁數(shù)據(jù)加載方式的不同,使得這類深層網(wǎng)頁通用爬蟲只能采集有限深層網(wǎng)頁的數(shù)據(jù)。為了獲得特定主題內(nèi)容或特定領(lǐng)域的深層網(wǎng)頁數(shù)據(jù),還需定制開發(fā)出專門的深層網(wǎng)頁垂直爬蟲。
深層網(wǎng)頁垂直爬蟲是根據(jù)深層網(wǎng)頁的垂直結(jié)構(gòu)而定制的一個(gè)自動(dòng)提取數(shù)據(jù)的程序,通過采集深層網(wǎng)頁的數(shù)據(jù)塊來分析出用戶需要的數(shù)據(jù)實(shí)體。
深層網(wǎng)頁垂直爬蟲以查詢接口或網(wǎng)站導(dǎo)航頁面為入口,結(jié)合相應(yīng)的操作策略,通過網(wǎng)頁腳本、異步請(qǐng)求、交互操作或頁面渲染等動(dòng)態(tài)網(wǎng)頁技術(shù)加載出完整的深層網(wǎng)頁,定位并提取網(wǎng)頁頁面包含的數(shù)據(jù)塊,再分析出數(shù)據(jù)實(shí)體,并評(píng)估采集到的數(shù)據(jù)是否完備,若未完備,則不斷重復(fù)該過程,直到數(shù)據(jù)采集完備,結(jié)束爬蟲程序的運(yùn)行。其運(yùn)行流程如圖1所示。在這個(gè)過程中,可根據(jù)數(shù)據(jù)實(shí)體的分析結(jié)果優(yōu)化爬蟲的運(yùn)行策略,以便反饋與指導(dǎo)后續(xù)的工作。
圖1 深層網(wǎng)頁垂直爬蟲運(yùn)行流程示意圖
(1)如何加載出完整的深層網(wǎng)頁;
(2)如何定位并抽取網(wǎng)頁數(shù)據(jù)塊;
(3)如何分析出數(shù)據(jù)實(shí)體。
深層網(wǎng)頁的完整加載決定數(shù)據(jù)采集的完整性,也是深層網(wǎng)頁垂直爬蟲定位、抽取網(wǎng)頁數(shù)據(jù)塊和分析數(shù)據(jù)實(shí)體的基礎(chǔ)。網(wǎng)頁數(shù)據(jù)塊的定位與抽取是爬蟲采集數(shù)據(jù)的關(guān)鍵步驟,分析數(shù)據(jù)實(shí)體的方法依賴于所抽取數(shù)據(jù)塊的結(jié)構(gòu)與特征。整個(gè)深層網(wǎng)頁垂直爬蟲的運(yùn)行策略就是在這三個(gè)關(guān)鍵技術(shù)上建立的,下面將介紹深層網(wǎng)頁垂直爬蟲的關(guān)鍵技術(shù)及其爬取策略。
通過超文本傳輸協(xié)議(HTTP),深層網(wǎng)頁垂直爬蟲從URL處僅可加載出深層網(wǎng)頁的靜態(tài)內(nèi)容,需結(jié)合交互操作、網(wǎng)頁腳本、異步請(qǐng)求或頁面渲染等動(dòng)態(tài)網(wǎng)頁技術(shù),將深層網(wǎng)頁內(nèi)容完整加載。
交互操作是用戶對(duì)網(wǎng)頁元素實(shí)施的可加載出深層網(wǎng)頁動(dòng)態(tài)內(nèi)容的操作。常見的交互操作有按鍵或超鏈接的點(diǎn)擊、文本框的輸入與表單的提交[1]、頁面或元素的滑動(dòng)等。網(wǎng)頁腳本是為提高Web系統(tǒng)的響應(yīng)速度而設(shè)計(jì)的解釋性程序,具有跨平臺(tái)執(zhí)行的特點(diǎn),常用于數(shù)據(jù)驗(yàn)證、多媒體加載與播放、網(wǎng)頁元素的事件處理等操作。異步請(qǐng)求[2]是為提高網(wǎng)頁交互的流暢性而設(shè)計(jì)的多線程處理機(jī)制,在實(shí)際的應(yīng)用中還具有隱藏?cái)?shù)據(jù)請(qǐng)求接口、保護(hù)重要數(shù)據(jù)的作用。網(wǎng)頁的頁面渲染因無法脫離瀏覽器程序的支持,正逐漸成為一種有效的反爬蟲技術(shù)。深層網(wǎng)頁垂直爬蟲通常采用集成瀏覽器內(nèi)核的方式來解決網(wǎng)頁渲染的限制,常見的瀏覽器內(nèi)核有Mozilla Gecko內(nèi)核、IE內(nèi)核和開源內(nèi)核。
深層網(wǎng)頁可視為網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的一種視圖。由于網(wǎng)頁設(shè)計(jì)風(fēng)格的不同,網(wǎng)頁上的數(shù)據(jù)已丟失了其存儲(chǔ)于數(shù)據(jù)庫(kù)中時(shí)所具有的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)實(shí)體被拆分與組合成許多數(shù)據(jù)塊,分布在一個(gè)或多個(gè)深層網(wǎng)頁中。深層網(wǎng)頁垂直爬蟲需利用基于DOM樹[3]、基于頁面定位語言或基于CSS選擇器的工具定位出深層網(wǎng)頁上的數(shù)據(jù)塊,并通過程序自動(dòng)化或半自動(dòng)化地抽取出這些數(shù)據(jù)塊。
用戶對(duì)數(shù)據(jù)需求的不同,決定數(shù)據(jù)來源的不同。針對(duì)某一數(shù)據(jù)實(shí)體,有的只需采集特定網(wǎng)頁下的數(shù)據(jù)塊,有的則需從同領(lǐng)域下不同的深層網(wǎng)頁中采集多個(gè)數(shù)據(jù)塊。這樣從多網(wǎng)頁下采集到的多個(gè)數(shù)據(jù)塊包含的信息具有片面性且相互之間存在冗余,需將數(shù)據(jù)塊進(jìn)行分析以提煉出完整的數(shù)據(jù)實(shí)體,所涉及到的分析算法包括頁面分類、數(shù)據(jù)源采樣、數(shù)據(jù)塊標(biāo)注、數(shù)據(jù)塊相似性度量和數(shù)據(jù)源整合。
導(dǎo)入環(huán)節(jié):教師可請(qǐng)學(xué)生打一諺語:形容在一個(gè)地方兩個(gè)強(qiáng)者不能相容。在熱烈的氣氛中,學(xué)生齊聲說出答案“一山不容二虎”。隨后,教師進(jìn)一步拋疑:是什么原因?學(xué)生甲說:“是由于食物不充足導(dǎo)致?!睂W(xué)生乙說:“是由于能量供應(yīng)出了問題?!苯處熆闪舫鰬夷睿谏贤晷抡n后再評(píng)價(jià)。
2.3.1 頁面分類
深層網(wǎng)頁垂直爬蟲在運(yùn)行的過程中,對(duì)查詢接口頁面、導(dǎo)航頁面、索引頁面和數(shù)據(jù)頁面等不同類別的網(wǎng)頁分別采取不同的處理方式,故需對(duì)這些頁面進(jìn)行分類。文獻(xiàn)[4]將深層網(wǎng)頁標(biāo)簽名稱、文本值和默認(rèn)值等作為語義特征進(jìn)行提取,通過決策樹分類算法生成數(shù)據(jù)源的分類規(guī)則樹。文獻(xiàn)[5]采用C4.5決策樹和樸素貝葉斯相結(jié)合的分類方法,并結(jié)合反饋機(jī)制,能有效地判斷爬蟲提取的網(wǎng)頁信息是否與主題相關(guān)。
2.3.2 數(shù)據(jù)源采樣
同領(lǐng)域下不同深層網(wǎng)頁數(shù)據(jù)源質(zhì)量的高低會(huì)直接影響深層網(wǎng)頁垂直爬蟲獲取數(shù)據(jù)實(shí)體的效率,這就需要對(duì)多個(gè)數(shù)據(jù)源進(jìn)行質(zhì)量評(píng)估。由于數(shù)據(jù)源包含的數(shù)據(jù)量太大,難以對(duì)所有數(shù)據(jù)進(jìn)行評(píng)估,在實(shí)際操作中,通常用數(shù)據(jù)源采樣算法來降低數(shù)據(jù)評(píng)估的運(yùn)算量。常用的數(shù)據(jù)源采樣算法可分為挖掘采樣算法和隨機(jī)采樣算法。挖掘采樣算法是通過Web系統(tǒng)的日志模塊來挖掘關(guān)鍵詞與數(shù)據(jù)屬性的關(guān)聯(lián)性,從該日志模塊中提取出Web系統(tǒng)的高頻關(guān)鍵詞來完成數(shù)據(jù)源的采樣[6]。由于日志模塊通常無法被爬蟲訪問,導(dǎo)致該類采樣算法的實(shí)用性較低。隨機(jī)采樣算法是根據(jù)文本頻率、集合詞頻和平均詞頻等統(tǒng)計(jì)量來對(duì)數(shù)據(jù)源進(jìn)行隨機(jī)采樣,可有效地描述數(shù)據(jù)庫(kù)內(nèi)容。
2.3.3 數(shù)據(jù)塊標(biāo)注
對(duì)于同一數(shù)據(jù)實(shí)體,深層網(wǎng)頁垂直爬蟲從同領(lǐng)域下不同深層網(wǎng)頁中采集到的數(shù)據(jù)塊存在多種表述,需對(duì)數(shù)據(jù)塊進(jìn)行標(biāo)注,歸一化的標(biāo)注描述便于爬蟲對(duì)數(shù)據(jù)塊進(jìn)一步分析。常用的數(shù)據(jù)標(biāo)注方法有基于頁面信息的數(shù)據(jù)標(biāo)注算法、基于領(lǐng)域知識(shí)的數(shù)據(jù)標(biāo)注算法、基于接口模式的數(shù)據(jù)標(biāo)注算法和基于結(jié)果模式的數(shù)據(jù)標(biāo)注算法等?;陧撁嫘畔⒌臄?shù)據(jù)標(biāo)注算法依賴于數(shù)據(jù)塊所在網(wǎng)頁的標(biāo)簽結(jié)構(gòu)。由于深層網(wǎng)頁設(shè)計(jì)風(fēng)格的多樣化,使得網(wǎng)頁標(biāo)簽的結(jié)構(gòu)存在多樣性,因此該標(biāo)注算法的實(shí)用性較低?;陬I(lǐng)域知識(shí)的數(shù)據(jù)標(biāo)注算法是通過構(gòu)造相關(guān)領(lǐng)域的對(duì)象知識(shí)模型,利用機(jī)器學(xué)習(xí)算法對(duì)數(shù)據(jù)塊進(jìn)行標(biāo)注?;诮涌谀J降臄?shù)據(jù)標(biāo)注算法和基于結(jié)果模式的數(shù)據(jù)標(biāo)注算法分別依賴數(shù)據(jù)查詢接口頁面和查詢結(jié)果頁面的數(shù)據(jù)屬性,對(duì)同一領(lǐng)域內(nèi)的深層網(wǎng)頁的數(shù)據(jù)塊可實(shí)現(xiàn)準(zhǔn)確的標(biāo)注[7]。
2.3.4 數(shù)據(jù)塊相似性度量
數(shù)據(jù)塊之間的相似性度量用于識(shí)別數(shù)據(jù)塊之間是否存在冗余或互補(bǔ)屬性,從而提取出信息完善的數(shù)據(jù)實(shí)體。數(shù)據(jù)塊之間的相似性度量方法可分為基于文本、結(jié)構(gòu)和語義的相似性度量?;谖谋鞠嗨菩远攘克惴ㄊ菍?duì)數(shù)據(jù)塊的文本進(jìn)行相似性計(jì)算。基于結(jié)構(gòu)相似性度量算法是計(jì)算數(shù)據(jù)塊所在網(wǎng)頁的標(biāo)簽結(jié)構(gòu)的相似性?;谡Z義相似性度量算法是從網(wǎng)頁的文本提取出語義詞匯,通過計(jì)算語義詞匯的相似度得到數(shù)據(jù)塊的相似性。上述每種數(shù)據(jù)塊相似性度量算法都有各自的特點(diǎn),實(shí)際應(yīng)用時(shí)可結(jié)合多種度量算法來提高數(shù)據(jù)相似性的精度。
2.3.5 數(shù)據(jù)源整合
若同領(lǐng)域下不同的深層網(wǎng)頁提供較高相似度的數(shù)據(jù)塊,則可對(duì)這些深層網(wǎng)頁的數(shù)據(jù)源進(jìn)行整合。數(shù)據(jù)源整合通常要結(jié)合網(wǎng)頁頁面的結(jié)構(gòu)特征和數(shù)據(jù)塊的語義特征,采用聚類算法或混合特征的方法來完善數(shù)據(jù)實(shí)體,從而實(shí)現(xiàn)數(shù)據(jù)源的整合。文獻(xiàn)[8]通過計(jì)算不同數(shù)據(jù)源的數(shù)據(jù)塊屬性的相似性,判別出數(shù)據(jù)塊間的共有屬性和私有屬性,通過組合每個(gè)數(shù)據(jù)實(shí)體的共有屬性和私有屬性來完成多個(gè)數(shù)據(jù)源的整合。
深層網(wǎng)絡(luò)垂直爬蟲的數(shù)據(jù)入口可分為基于關(guān)鍵詞查詢接口和基于導(dǎo)航分類頁面的接口。針對(duì)單一領(lǐng)域的深層網(wǎng)頁,如電商、社交領(lǐng)域,深層網(wǎng)頁垂直爬蟲通常以導(dǎo)航分類頁面為入口,動(dòng)態(tài)地加載出所有的深層網(wǎng)頁?;陉P(guān)鍵詞查詢接口的爬取策略則是深層網(wǎng)絡(luò)垂直爬蟲的主要研究方向,下面重點(diǎn)介紹基于關(guān)鍵詞查詢接口的爬取策略。
對(duì)于以表單作為數(shù)據(jù)入口的深層網(wǎng)頁,通常以詞典、統(tǒng)計(jì)表等基于領(lǐng)域的本體知識(shí)庫(kù)作為關(guān)鍵詞篩選策略。爬蟲程序先構(gòu)建一個(gè)關(guān)鍵詞詞庫(kù),詞庫(kù)在關(guān)鍵詞篩選策略下動(dòng)態(tài)地變動(dòng),爬蟲加載出詞庫(kù)中全部關(guān)鍵字對(duì)應(yīng)的深層網(wǎng)頁;網(wǎng)頁經(jīng)過分類處理后,爬蟲再對(duì)分類出的查詢結(jié)果網(wǎng)頁進(jìn)行數(shù)據(jù)塊的定位、抽取和相似性度量,提煉出完整的數(shù)據(jù)實(shí)體,最后將數(shù)據(jù)實(shí)體進(jìn)行持久化存儲(chǔ);當(dāng)關(guān)鍵詞所關(guān)聯(lián)的數(shù)據(jù)實(shí)體被持久化存儲(chǔ)后,該關(guān)鍵詞將被移出詞庫(kù),重復(fù)上述過程直至詞庫(kù)為空,爬蟲程序停止工作。
從互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用前景來看,深層網(wǎng)頁垂直爬蟲將成為采集海量數(shù)據(jù)的重要工具之一,其技術(shù)仍處于待完善的階段,有很多值得我們深入研究與探討的課題,如下:
(1)多媒體信息的采集。多媒體數(shù)據(jù)包含豐富的信息,當(dāng)前爬蟲程序主要采集的數(shù)據(jù)對(duì)象是文本信息,極少去采集多媒體數(shù)據(jù)本身并進(jìn)行分析。
(2)反爬蟲的干擾。深層網(wǎng)頁垂直爬蟲面臨的另一個(gè)挑戰(zhàn)就是反爬蟲。反爬蟲以保護(hù)網(wǎng)頁數(shù)據(jù)、避免爬蟲過度占用網(wǎng)絡(luò)帶寬為目的來阻止爬蟲的運(yùn)作,爬蟲則需采取相應(yīng)的策略來應(yīng)對(duì)該限制。爬蟲與反爬蟲之間的這種技術(shù)較量,降低了爬蟲程序的生命周期,給爬蟲開發(fā)者帶來了極大的技術(shù)挑戰(zhàn)。
(3)數(shù)據(jù)價(jià)值的挖掘。深層網(wǎng)頁垂直爬蟲是一種采集數(shù)據(jù)的工具,其數(shù)據(jù)的應(yīng)用價(jià)值并未完全體現(xiàn)。目前,大數(shù)據(jù)、數(shù)據(jù)挖掘、人工智能、深度學(xué)習(xí)等技術(shù)研究正如火如荼地展開著,這些研究工作都需以海量數(shù)據(jù)作支撐,而這正是爬蟲所能提供的。
除了上述三方面的困難與挑戰(zhàn),深層網(wǎng)頁垂直爬蟲技術(shù)還有很多需要我們改進(jìn)與完善的方面,這也是我們今后的主要研究?jī)?nèi)容。希望通過更多研究人員的努力,建立起一個(gè)更高效、更智能的深層網(wǎng)頁垂直爬蟲。