廣州工商學(xué)院電子信息工程系 何小明
通用爬蟲雖已發(fā)展多年,技術(shù)較為成熟,但僅可采集到具有統(tǒng)一資源定位符(URL)的淺層網(wǎng)頁(yè)(Surface Web)。隨著Web技術(shù)的快速發(fā)展,越來(lái)越多的網(wǎng)頁(yè)將其數(shù)據(jù)與業(yè)務(wù)進(jìn)行物理分離,僅提供限制性的數(shù)據(jù)訪問(wèn)接口,使其具有商業(yè)價(jià)值的數(shù)據(jù)隱藏到深層網(wǎng)頁(yè)(Deep Web)背后的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)中。目前,很多爬蟲研究者試圖設(shè)計(jì)一個(gè)能采集全部深層網(wǎng)頁(yè)數(shù)據(jù)的通用爬蟲,由于不同深層網(wǎng)頁(yè)數(shù)據(jù)加載方式的不同,使得這類深層網(wǎng)頁(yè)通用爬蟲只能采集有限深層網(wǎng)頁(yè)的數(shù)據(jù)。為了獲得特定主題內(nèi)容或特定領(lǐng)域的深層網(wǎng)頁(yè)數(shù)據(jù),還需定制開發(fā)出專門的深層網(wǎng)頁(yè)垂直爬蟲。
深層網(wǎng)頁(yè)垂直爬蟲是根據(jù)深層網(wǎng)頁(yè)的垂直結(jié)構(gòu)而定制的一個(gè)自動(dòng)提取數(shù)據(jù)的程序,通過(guò)采集深層網(wǎng)頁(yè)的數(shù)據(jù)塊來(lái)分析出用戶需要的數(shù)據(jù)實(shí)體。
深層網(wǎng)頁(yè)垂直爬蟲以查詢接口或網(wǎng)站導(dǎo)航頁(yè)面為入口,結(jié)合相應(yīng)的操作策略,通過(guò)網(wǎng)頁(yè)腳本、異步請(qǐng)求、交互操作或頁(yè)面渲染等動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)加載出完整的深層網(wǎng)頁(yè),定位并提取網(wǎng)頁(yè)頁(yè)面包含的數(shù)據(jù)塊,再分析出數(shù)據(jù)實(shí)體,并評(píng)估采集到的數(shù)據(jù)是否完備,若未完備,則不斷重復(fù)該過(guò)程,直到數(shù)據(jù)采集完備,結(jié)束爬蟲程序的運(yùn)行。其運(yùn)行流程如圖1所示。在這個(gè)過(guò)程中,可根據(jù)數(shù)據(jù)實(shí)體的分析結(jié)果優(yōu)化爬蟲的運(yùn)行策略,以便反饋與指導(dǎo)后續(xù)的工作。

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