物理學(xué)研究表明,在目前宇宙所有物質(zhì)的總體質(zhì)量中糜颠,星系等可見(jiàn)物質(zhì)只占其中的20%汹族,不可探測(cè)的暗物質(zhì)則占據(jù)了總質(zhì)量的大約80%∑湫耍互聯(lián)網(wǎng)中的暗網(wǎng)可與宇宙中的暗物質(zhì)相類(lèi)比顶瞒,而其所占的比例更是大于暗物質(zhì)占宇宙總質(zhì)量的比例,是目前明網(wǎng)網(wǎng)頁(yè)的百倍元旬。
所謂暗網(wǎng)榴徐,是指目前搜索引擎爬蟲(chóng)按照常規(guī)方式很難抓取到的互聯(lián)網(wǎng)頁(yè)面守问。搜索引擎爬蟲(chóng)依賴(lài)頁(yè)面內(nèi)中的鏈接關(guān)系發(fā)現(xiàn)新的頁(yè)面,但是很多網(wǎng)站的內(nèi)容是以數(shù)據(jù)庫(kù)的方式存儲(chǔ)的坑资,典型的例子是一些垂直領(lǐng)域網(wǎng)站耗帕,比如京東的3C家電數(shù)碼數(shù)據(jù),很難有顯性鏈接指向數(shù)據(jù)庫(kù)內(nèi)的記錄袱贮,往往是服務(wù)網(wǎng)站提供組合查詢(xún)界面仿便,只有用戶(hù)按照要求選擇查詢(xún)條件后,才可能獲得相關(guān)數(shù)據(jù)攒巍。所以常規(guī)的爬蟲(chóng)無(wú)法索引這些數(shù)據(jù)內(nèi)容嗽仪,這是暗網(wǎng)的命名由來(lái)。
為了能對(duì)暗網(wǎng)數(shù)據(jù)進(jìn)行索引柒莉,需要研發(fā)與常規(guī)爬蟲(chóng)機(jī)制不同的系統(tǒng)钦幔,這類(lèi)爬蟲(chóng)被稱(chēng)作暗網(wǎng)爬蟲(chóng)。暗網(wǎng)爬蟲(chóng)的目的是將暗網(wǎng)數(shù)據(jù)從數(shù)據(jù)庫(kù)中挖掘出來(lái)常柄,并將其加入搜索引擎的索引鲤氢,這樣用戶(hù)在搜索時(shí)便可利用這些數(shù)據(jù),增加信息覆蓋程度西潘。
目前大型搜索引擎服務(wù)提供商都將暗網(wǎng)挖掘作為重要研究方向卷玉,因?yàn)檫@直接關(guān)系到索引量的大小。在此領(lǐng)域的技術(shù)差異喷市,將直接體現(xiàn)在搜索結(jié)果的全面性上相种,自然是競(jìng)爭(zhēng)對(duì)手之間的必爭(zhēng)之地。Google目前將其作為重點(diǎn)研究方向品姓,而百度的“阿拉丁計(jì)劃”目的也在于此寝并。
垂直網(wǎng)站提供的搜索界面,往往需要人工選擇或者填寫(xiě)內(nèi)容腹备,比如電商的商品查找需要按照分類(lèi)及價(jià)格衬潦、屬性、品牌植酥、型號(hào)等篩選條件進(jìn)行查找目標(biāo)商品镀岛。而暗網(wǎng)爬蟲(chóng)為了能夠挖掘數(shù)據(jù)庫(kù)的記錄,必須模擬人的行為友驮,填寫(xiě)內(nèi)容或選擇篩選條件漂羊。對(duì)于暗網(wǎng)爬蟲(chóng)來(lái)說(shuō),其技術(shù)挑戰(zhàn)有兩點(diǎn):一是查詢(xún)組合太多卸留,如果一一遍歷組合走越,那么會(huì)給被訪問(wèn)網(wǎng)站造成太大壓力,所以如何精心組合查詢(xún)選項(xiàng)是個(gè)難點(diǎn)耻瑟;第二點(diǎn)在于:有的查詢(xún)是文本框旨指,比如圖書(shū)搜索中需要輸入書(shū)名赏酥,爬蟲(chóng)怎樣才能夠填入合適的內(nèi)容?這也是非常具有挑戰(zhàn)性的任務(wù)淤毛。
查詢(xún)組合問(wèn)題
暗網(wǎng)爬蟲(chóng)能夠?qū)⒛硞€(gè)垂直網(wǎng)站數(shù)據(jù)庫(kù)的記錄盡可能多的下載到索引庫(kù)中今缚,但這是有約束和前提條件的,即不能給被訪問(wèn)網(wǎng)站造成過(guò)大的訪問(wèn)壓力低淡,同時(shí)盡可能節(jié)省爬蟲(chóng)本身的資源姓言。
垂直搜索網(wǎng)站往往會(huì)給用戶(hù)提供多個(gè)查詢(xún)輸入框,不同輸入框代表了搜索對(duì)象某方面的屬性蔗蹋,通過(guò)組合這些屬性來(lái)將搜索范圍縮小何荚。對(duì)于暗網(wǎng)爬蟲(chóng)來(lái)說(shuō),一個(gè)簡(jiǎn)單粗暴的方式就是:將各個(gè)輸入框可能輸入的值組合起來(lái)形成查詢(xún)猪杭,比如對(duì)于火車(chē)票查詢(xún)來(lái)說(shuō)餐塘,將所有出發(fā)城市、目的城市和時(shí)間范圍的選項(xiàng)一一組合皂吮,形成大量的查詢(xún)戒傻,提交給垂直搜索引擎,從其搜索結(jié)果里提煉數(shù)據(jù)庫(kù)記錄蜂筹。這么做比較野蠻需纳,而且也不是很方便,因?yàn)楹芏嘟M合是無(wú)效的艺挪,大量的返回結(jié)果為空不翩,同時(shí)對(duì)被訪問(wèn)網(wǎng)站造成了巨大的流量壓力。
Google對(duì)此提出了解決方案麻裳,稱(chēng)之為富含信息查詢(xún)模板技術(shù)口蝠,為了了解技術(shù)原理,首先需要明白什么是查詢(xún)模板津坑,我們以下圖的職位搜索垂直網(wǎng)站來(lái)說(shuō)明妙蔗。
為了描述一個(gè)職位,完成的查詢(xún)由3個(gè)不同的屬性構(gòu)成:地點(diǎn)国瓮、行業(yè)類(lèi)別和工作地點(diǎn)灭必。如果在向搜索引擎提交查詢(xún)的時(shí)候,部分屬性被賦予了值乃摹,而其他屬性不賦值,則這幾個(gè)賦值的屬性一起構(gòu)成了一個(gè)查詢(xún)模板跟衅。
上圖是由若干個(gè)“查詢(xún)模板”的示例孵睬,如果模板包含一個(gè)屬性,則稱(chēng)之為一維模板伶跷,下圖中模板一一維模板掰读,模板2和模板3是兩份二維模板秘狞,模板4是三維模板。
對(duì)于一個(gè)固定的垂直搜索來(lái)說(shuō)蹈集,其查詢(xún)模板組合起來(lái)有很多烁试,我們的任務(wù)是找到富含信息的查詢(xún)模板,那么什么又是富含信息查詢(xún)模板呢拢肆?Google的技術(shù)方案是這樣定義的:對(duì)于某個(gè)固定的查詢(xún)模板來(lái)說(shuō)减响,如果給查詢(xún)模板內(nèi)每個(gè)屬性都賦值,形成不同的查詢(xún)組合郭怪,提交給垂直搜索引擎支示,觀察所有返回頁(yè)面的內(nèi)容,如果相互之間的內(nèi)容差異較大鄙才,則這個(gè)模板就是富含信息查詢(xún)模板颂鸿。
以上圖的模板為例說(shuō)明,其包含了兩個(gè)屬性:職能類(lèi)別和行業(yè)類(lèi)別攒庵。職位類(lèi)別有3種不同賦值嘴纺,行業(yè)類(lèi)別有兩種不同賦值,兩者組合有6種不同的組合方式浓冒,形成這個(gè)模板的6個(gè)查詢(xún)栽渴。將這6個(gè)查詢(xún)分別提交給職位搜索引擎,觀察返回頁(yè)面內(nèi)容變化情況裆蒸,如果大部分內(nèi)容返回相同或相似熔萧,則說(shuō)明這個(gè)查詢(xún)模板不是富含信息查詢(xún)模板,否則可被認(rèn)為是富含信息查詢(xún)模板僚祷。
之所以如此規(guī)定佛致,是基于如下考慮:如果返回結(jié)果頁(yè)面內(nèi)容重復(fù)太多,很可能這個(gè)查詢(xún)模板的維度太高辙谜,導(dǎo)致很多組合無(wú)搜索結(jié)果俺榆,或構(gòu)造的查詢(xún)本身是錯(cuò)誤的,搜索系統(tǒng)返回了錯(cuò)誤頁(yè)面装哆。
假設(shè)按照上面方式對(duì)所有查詢(xún)模板一一試探罐脊,判斷是否為富含信息查詢(xún)模板,則因?yàn)椴樵?xún)模板數(shù)量太多蜕琴,系統(tǒng)效率還是會(huì)很低萍桌。為了進(jìn)一步減少提交的查詢(xún)數(shù)目,Google的技術(shù)方案使用了ISIT算法凌简。
ISIT方法的基本思路是:首先從一維模板開(kāi)始上炎,對(duì)一維查詢(xún)模板逐個(gè)考察,看其是否為富含信息查詢(xún)模板雏搂,如果是的話藕施,則將這個(gè)一維模板擴(kuò)展到二維寇损,再次依次考察對(duì)應(yīng)的二維模板,如此類(lèi)推裳食,逐步增加維數(shù)矛市,直到再也無(wú)法找到富含信息查詢(xún)模板為止。通過(guò)這種方式诲祸,就可以找到絕大多數(shù)富含信息查詢(xún)模板浊吏,同時(shí)也盡可能減少了提交的查詢(xún)總數(shù),有效達(dá)到了目的烦绳。Google的評(píng)測(cè)結(jié)果表明卿捎,這種方法和完全組合比,能夠大幅度提升系統(tǒng)效率径密。
文本框填寫(xiě)問(wèn)題
對(duì)于輸入中的文本框午阵,需要爬蟲(chóng)自動(dòng)生成查詢(xún),以下是一個(gè)常用做法的流程圖享扔。
在爬蟲(chóng)運(yùn)轉(zhuǎn)起來(lái)之前底桂,因?yàn)閷?duì)目標(biāo)網(wǎng)站一無(wú)所知,所以必須人工提供一些提示惧眠。在此例中籽懦,通過(guò)人工觀察網(wǎng)站進(jìn)行定位,提供一個(gè)與網(wǎng)站內(nèi)容相關(guān)的初始種子查詢(xún)關(guān)鍵詞表氛魁。對(duì)于不同的網(wǎng)站暮顺,需要人工提供不同的詞表,以此作為爬蟲(chóng)能夠繼續(xù)工作的基礎(chǔ)條件秀存。爬蟲(chóng)根據(jù)初始種子詞表捶码,向垂直搜索引擎提交查詢(xún),并下載返回結(jié)果頁(yè)面或链。之后從返回結(jié)果頁(yè)面里自動(dòng)挖掘出相關(guān)的關(guān)鍵詞惫恼,并形成一個(gè)新的查詢(xún)列表,依次將新挖掘出的查詢(xún)提交給搜索引擎澳盐。如此往復(fù)祈纯,直到無(wú)法下載到新的內(nèi)容為止。通過(guò)這種人工啟發(fā)結(jié)合遞歸迭代的方式叼耙,盡可能覆蓋數(shù)據(jù)庫(kù)里的記錄腕窥。
如果您對(duì)爬蟲(chóng)有興趣,還可以閱讀:
全程干貨 | 入門(mén)爬蟲(chóng)技術(shù)原理筛婉,看這篇就夠了