同組成一對(duì)應(yīng)于該URL地址的數(shù)據(jù)結(jié)構(gòu);例如,一 URL地址可表示為二元組(u.a, u.p),其中u.a表示URL地址的地址列表,形式化定義為u.a=Iiha1, u.a2,...,u.an }, η是地址列表中地址項(xiàng)的數(shù)量。u.ρ表示URL地址的參數(shù)列表,形式化定義為u.P = { u.P1, u.p2…,u.pm }, m是參數(shù)列表中參數(shù)項(xiàng)的數(shù)量,參數(shù)列表中各參數(shù)項(xiàng)可按參數(shù)標(biāo)示進(jìn)行排序。
[0042]V)、重復(fù)上述ii)、iii)和iv)步驟,將第一 URL地址集合中的每一 URL地址改寫為相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
[0043]圖5-1示出,在實(shí)施上述預(yù)處理步驟后,URL模式抽取步驟的實(shí)施示意圖;圖5_2示出,在實(shí)施上述預(yù)處理步驟后,URL模式生成步驟的實(shí)施示意圖;圖5-3示出,在實(shí)施上述預(yù)處理步驟后,主URL模式構(gòu)建步驟的實(shí)施示意圖。
[0044]本發(fā)明上述第一實(shí)施例提供的檢測(cè)重復(fù)URL的方法不僅可以避免網(wǎng)頁(yè)的重復(fù)下載,提高網(wǎng)絡(luò)爬蟲工作效率,而且節(jié)省了后續(xù)數(shù)據(jù)處理步驟(如索引、檢索、排名)中重復(fù)處理的工作;此外,對(duì)各URL地址的特性部分采用正則表達(dá)式進(jìn)行泛化,可使主URL模式具備較高的泛化性。本方法使用的訓(xùn)練數(shù)據(jù)集采用SimHash編碼來(lái)衡量網(wǎng)頁(yè)間相似度,無(wú)需人工標(biāo)注,并且,在訓(xùn)練集數(shù)據(jù)不斷擴(kuò)展的情況下,該方法能夠自更新訓(xùn)練學(xué)習(xí)數(shù)據(jù),從而自主增加新的主URL模式,有利于提高檢測(cè)重復(fù)URL時(shí)的全面性與準(zhǔn)確性。該方法實(shí)施簡(jiǎn)單,適合在行業(yè)內(nèi)進(jìn)行推廣。
[0045]如圖2所示,本發(fā)明第二實(shí)施例提供的檢測(cè)重復(fù)URL的方法,也用于檢測(cè)網(wǎng)絡(luò)爬蟲獲得的一 URL地址對(duì)應(yīng)的網(wǎng)頁(yè)是否與網(wǎng)絡(luò)爬蟲已下載過(guò)的網(wǎng)頁(yè)內(nèi)容重復(fù)或接近,其包括:
步驟S20 (URL地址規(guī)范化步驟):對(duì)第一 URL地址集合中的各URL地址進(jìn)行規(guī)范化。
[0046]具體地,URL規(guī)范化是指通過(guò)修改URL地址,使各URL地址以制式統(tǒng)一的形式表達(dá),優(yōu)選使各URL地址符合萬(wàn)維網(wǎng)聯(lián)盟制定URL技術(shù)標(biāo)準(zhǔn)RFC3986,以避免不同URL地址之間字段上的差異。例如,URL地址規(guī)范化步驟可以具體包括下列分步驟中的任一個(gè)或任多個(gè):
1)將各URL地址中所有大寫字母轉(zhuǎn)換成對(duì)應(yīng)的小寫字母;
2)將其中百分比編碼中小寫字母替換為對(duì)應(yīng)的大寫字母,例如:由http://WWW.example.com/a%c2%blb 改寫為 http://www.example.com/a%C2%Blb ;
3)對(duì)百分比編碼中非保留字符進(jìn)行解碼,例如:
由 http://www.example.com/%7Eusername/ 改寫為 http://www.example,com/?username/ ;
4)去除其中包含的默認(rèn)端口號(hào);
5)去除其中所有的”和”字符,并可根據(jù)路徑變化,對(duì)URL地址作出相應(yīng)的調(diào)
M
iF.0
[0047]步驟S21:對(duì)第一 URL地址集合中的各URL地址進(jìn)行分組。
[0048]步驟S22:針對(duì)每一組別,分別對(duì)其中每個(gè)URL地址的第一特性部分進(jìn)行泛化表示,并以泛化后的各URL地址作為第二 URL地址集合的一個(gè)元素,以形成第二 URL地址集入口 ο
[0049]步驟S23:針對(duì)第二 URL地址集合,分別對(duì)其每個(gè)元素包含的各URL地址的第二特性部分進(jìn)行泛化表示,并以泛化后的各URL地址作為第三URL地址集合中的一個(gè)元素,以形成第三URL地址集合。
[0050]步驟S24 (URL地址集合中元素合并步驟):遍歷第三URL地址集合,對(duì)其中第一、第二元素進(jìn)行特性化表示,分別形成第一、第二 URL地址實(shí)例,若該第一、第二 URL地址實(shí)例對(duì)應(yīng)的網(wǎng)頁(yè)相似,則合并該第一、第二元素。其中,第一、第二元素為第三URL地址集合中的任兩個(gè)不同元素。
[0051]因不能僅憑實(shí)施步驟S21而徹底排除第三URL地址集合中的不同元素實(shí)際上為“重復(fù)URL模式集合”(如定義1.4),故在該步驟中,具體地,比較該第一、第二 URL地址實(shí)例對(duì)應(yīng)的網(wǎng)頁(yè)間的差異度(以對(duì)應(yīng)SimHash編碼的差異位數(shù)衡量),若差異度小于第二設(shè)定閾值,則合并該第一、第二元素;其中,第二設(shè)定閾值可大于第一設(shè)定閾值。
[0052]該URL地址集合中元素合并步驟的一種具體實(shí)現(xiàn)方式為:
從第三URL地址集合中的各元素中分別任意選取一 URL地址,形成第五URL地址集合; 任意選取一自步驟S23中得到的第二特性部分;
由一任意字符或字符串形成一第一特性部分;
將該第一、第二特性部分填入第五URL地址集合中的每一 URL地址中;
遍歷第五URL地址集合,若第五URL地址集合中一 URL地址對(duì)應(yīng)網(wǎng)頁(yè)與另一 URL地址對(duì)應(yīng)網(wǎng)頁(yè)間的差異度小于第二設(shè)定閾值,則合并該URL地址對(duì)應(yīng)的第三URL地址集合中的元素與該另一 URL地址對(duì)應(yīng)的第三URL地址集合中的元素。
[0053]步驟S25:針對(duì)第三URL地址集合的每個(gè)元素,分別提取其包含的各URL地址的共性部分,并以共性部分作為第四URL地址集合中的一個(gè)元素,以形成為第四URL地址集合。
[0054]步驟S26:對(duì)于網(wǎng)絡(luò)爬蟲獲得的一待下載URL地址,若該待下載URL地址與第四URL地址集合中任一元素匹配,則判定該待下載URL地址對(duì)應(yīng)的網(wǎng)頁(yè)已被下載。
[0055]進(jìn)一步地,在步驟S23的實(shí)施中,還可包括:遍歷目前已形成的第三URL地址集合,若其中第三元素、第四元素分別僅包含第三URL地址、第四URL地址(也為URL模式),且第三URL地址與第四URL地址僅在各自相應(yīng)的第二特性部分不同,且第三URL地址以及第四URL地址各自相應(yīng)的第二特性部分在第三URL地址集合其他元素中出現(xiàn)次數(shù)小于5次,則直接合并該第三元素和第四元素;其中,第三元素、第四元素為第三URL地址集合中任兩個(gè)不同元素。
[0056]如圖3所示,本發(fā)明第三實(shí)施例提供一種檢測(cè)重復(fù)URL的裝置,與一網(wǎng)絡(luò)爬蟲配合使用,其包括:分組單元202、URL抽取單元203、URL模式生成單元204、主URL模式構(gòu)建單元205與重復(fù)URL檢測(cè)單元206。
[0057]分組單元202對(duì)第一 URL地址集合中的各URL地址進(jìn)行分組,以使同一組別中各URL地址對(duì)應(yīng)的網(wǎng)頁(yè)間的差異度小于第一設(shè)定閾值。URL抽取單元203接收分組單元202的輸出,針對(duì)每一組別,分別對(duì)其中每個(gè)URL地址的第一特性部分進(jìn)行泛化表示,并以泛化后的各URL地址共同作為第二 URL地址集合中的一個(gè)元素,以形成為第二 URL地址集合并輸出;其中,第一特性部分使得同一組別中每一 URL地址相異于其他URL地址;URL模式生成單元204接收URL抽取單元203的輸出,針對(duì)第二 URL地址集合,分別對(duì)其每個(gè)元素包含的各URL地址的第二特性部分進(jìn)行泛化表示,并以泛化后的各URL地址共同作為第三URL地址集合中的一個(gè)元素,以形成為第三URL地址集合;其中,第二特性部分使得第二 URL地址集合中的每個(gè)元素所包含的各URL地址相異于其他元素所包含的各URL地址;主URL模式構(gòu)建單元205接收URL模式生成單元204的輸出,針對(duì)第三URL地址集合的每個(gè)元素,分別提取其包含的各URL地址的共性部分,并以共性部分作為第四URL地址集合中的一個(gè)元素,以形成為第四URL地址集合;重復(fù)URL檢測(cè)單元206接收主URL模式構(gòu)建單元205的輸出以及網(wǎng)絡(luò)爬蟲獲得的一待下載URL地址,若該待下載URL地址與第四URL地址集合中任一元素匹配,則判定該待下載URL地址對(duì)應(yīng)的網(wǎng)頁(yè)已被下載;否則,則判定該待下載URL地址對(duì)應(yīng)的網(wǎng)頁(yè)未被下載。
[0058]該檢測(cè)重復(fù)URL的裝置,與網(wǎng)絡(luò)爬蟲配合使用,其可為一獨(dú)立的裝置,或與網(wǎng)絡(luò)爬蟲組合成為一基于計(jì)算機(jī)的控制系統(tǒng),該裝置可以避免網(wǎng)頁(yè)的重復(fù)下載,有效提高網(wǎng)絡(luò)爬蟲的工作效率。
[0059]如圖4所示,本發(fā)明第四實(shí)施例提供的檢測(cè)重復(fù)URL的裝置為對(duì)上述第三實(shí)施例中的檢測(cè)重復(fù)URL的裝置進(jìn)行改進(jìn)而得到,其包括:數(shù)據(jù)庫(kù)301、分組單元302、URL抽取單元303、URL模式生成單元304、主URL模式構(gòu)建單元305與重復(fù)URL檢測(cè)單元306。
[0060]其中,分組單元302、URL抽取單元303、URL模式生成單元304、主URL模式構(gòu)建單元305與重復(fù)URL檢測(cè)單元306的數(shù)據(jù)處理方式與功能與上述第三實(shí)施例中相應(yīng)部件相同。
[0061]不同的是,數(shù)據(jù)庫(kù)301中存儲(chǔ)有第一 URL地址集合,其可為網(wǎng)絡(luò)爬蟲下載網(wǎng)頁(yè)的歷史數(shù)據(jù),用于該檢測(cè)重復(fù)URL的裝置的訓(xùn)練學(xué)習(xí)數(shù)據(jù),數(shù)據(jù)庫(kù)301中還存儲(chǔ)有與第一 URL地址集合中各元素一一對(duì)應(yīng)的網(wǎng)頁(yè),可以從URL地址而快速獲得其對(duì)應(yīng)的網(wǎng)頁(yè)內(nèi)容。
[0062]重復(fù)URL檢測(cè)單元306在判定待下載URL地址對(duì)應(yīng)的網(wǎng)頁(yè)為未被下載后,可將該待下載URL地址存入數(shù)據(jù)庫(kù)301