本發(fā)明涉及一種網(wǎng)絡(luò)信息排序技術(shù),具體地說(shuō)涉及一種基于相似度比較的URL去重方法和系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)信息爆炸式增長(zhǎng),每一天互聯(lián)網(wǎng)中的數(shù)據(jù)都呈現(xiàn)幾何式的堆加。用戶(hù)需要的信息往往會(huì)淹沒(méi)于大量無(wú)關(guān)信息中,利用搜索引擎獲取感興趣的信息已經(jīng)成為人們獲取信息較為便捷的方式。作為搜索引擎的基礎(chǔ)構(gòu)件之一的網(wǎng)絡(luò)爬蟲(chóng),需要從互聯(lián)網(wǎng)上搜集信息,為用戶(hù)提供數(shù)據(jù)來(lái)源。搜索結(jié)果是否豐富、獲得的信息是否沒(méi)有重合,均與網(wǎng)絡(luò)爬蟲(chóng)的效率緊密相關(guān)。海量的數(shù)據(jù)對(duì)網(wǎng)絡(luò)爬蟲(chóng)的設(shè)計(jì)與實(shí)現(xiàn)提出了更高的要求,構(gòu)建分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)是一個(gè)有效的解決方案。相應(yīng)地,作為網(wǎng)絡(luò)爬蟲(chóng)核心關(guān)鍵技術(shù)的URL(統(tǒng)一資源定位符)排重方法對(duì)爬蟲(chóng)系統(tǒng)的性能影響尤為重要。
目前已有的URL去重方法主要有基于內(nèi)存的去重和基于數(shù)據(jù)庫(kù)的去重。在基于內(nèi)存的URL去重方式中,爬蟲(chóng)將系統(tǒng)URL全部放在內(nèi)存中,并使用一個(gè)易于查找的數(shù)據(jù)結(jié)構(gòu)(如哈希表)進(jìn)行維護(hù),由于哈希函數(shù)僅是將任意長(zhǎng)度的二進(jìn)制值映射為固定長(zhǎng)度的較小二進(jìn)制的一個(gè)簡(jiǎn)單換算,而URL所包含網(wǎng)頁(yè)內(nèi)容較多時(shí),僅憑哈希值可能有較大誤差。
技術(shù)實(shí)現(xiàn)要素:
為此,本發(fā)明所要解決的技術(shù)問(wèn)題在于現(xiàn)有技術(shù)中采用哈希函數(shù)的布隆過(guò)濾器去重存在較大誤差,去重效率低。
為解決上述技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案:
一種基于相似度比較的URL去重方法,包含以下步驟:
S1:導(dǎo)入U(xiǎn)RL;
S2:提取URL所包含的URL特征,所述URL特征包含URL站點(diǎn)特征;
S3:將提取到的URL特征查詢(xún)布隆過(guò)濾器,所述布隆過(guò)濾器的特征類(lèi)型與所述URL特征的類(lèi)型對(duì)應(yīng);
S4:將提取到的URL特征與布隆過(guò)濾器中存儲(chǔ)的特征進(jìn)行比對(duì),查詢(xún)是否有相似特征,若有,則進(jìn)行S5步驟;若無(wú),則進(jìn)行S6步驟;
S5:查詢(xún)到相似的特征,將所述URL過(guò)濾;
S6:未查詢(xún)到相似的特征,將所述特征存儲(chǔ)到布隆過(guò)濾器。
所述URL特征還包含URL目錄深度特征。
所述URL特征還包含URL一級(jí)目錄特征。
所述URL特征還包含URL尾頁(yè)特征。
步驟S4中將提取到的URL特征分別做換算操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息,查詢(xún)布隆過(guò)濾器中對(duì)應(yīng)類(lèi)型的特征的bit位信息,若二者均為1,則認(rèn)為二者為相似特征。
一種基于相似度比較的URL去重系統(tǒng),包含以下模塊:
接收模塊:導(dǎo)入U(xiǎn)RL;
提取模塊:提取URL所包含的URL特征,所述URL特征包含URL站點(diǎn)特征;
布隆過(guò)濾器模塊:將提取到的URL特征查詢(xún)布隆過(guò)濾器,所述布隆過(guò)濾器的特征類(lèi)型與所述URL特征的類(lèi)型對(duì)應(yīng);
特征比對(duì)模塊:將提取到的URL特征與布隆過(guò)濾器中存儲(chǔ)的特征進(jìn)行比對(duì),查詢(xún)是否有相似特征,若有,則轉(zhuǎn)入過(guò)濾模塊;若無(wú),則轉(zhuǎn)入更新模塊;
過(guò)濾模塊:查詢(xún)到相似的特征,將所述URL過(guò)濾;
更新模塊:未查詢(xún)到相似的特征,將所述特征存儲(chǔ)到布隆過(guò)濾器。
所述URL特征還包含URL目錄深度特征。
所述URL特征還包含URL一級(jí)目錄特征。
所述URL特征還包含URL尾頁(yè)特征。
特征比對(duì)模塊將提取到的URL特征分別做換算操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息,查詢(xún)布隆過(guò)濾器中對(duì)應(yīng)類(lèi)型的特征的bit位信息,若二者均為1,則認(rèn)為二者為相似特征。
本發(fā)明的上述技術(shù)方案相比現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn)。
本發(fā)明的一種基于相似度比較的URL去重方法和系統(tǒng),通過(guò)導(dǎo)入U(xiǎn)RL并提取URL的特征,將URL特征與布隆過(guò)濾器進(jìn)行比對(duì),如果查詢(xún)到布隆過(guò)濾器中存儲(chǔ)有該URL特征對(duì)應(yīng)的特征,則過(guò)濾該URL,所述URL特征包括一種以上的特征,代替了現(xiàn)有技術(shù)中的哈希函數(shù),可以匹配更準(zhǔn)確的URL網(wǎng)頁(yè)數(shù)據(jù)。通過(guò)相似度比較并過(guò)濾可以快速、準(zhǔn)確解決網(wǎng)頁(yè)頁(yè)面重復(fù)或相似的重復(fù)爬行或掃描工作,可以提高爬蟲(chóng)以及掃描的有效性和效率。
附圖說(shuō)明
為了使本發(fā)明的內(nèi)容更容易被清楚的理解,下面根據(jù)本發(fā)明的具體實(shí)施例并結(jié)合附圖,對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明,其中,
圖1為本發(fā)明一種基于相似度比較的URL去重方法的流程圖;
圖2為本發(fā)明一種基于相似度比較的URL去重系統(tǒng)的結(jié)構(gòu)框圖。
圖中附圖標(biāo)記表示為:1-接收模塊;2-提取模塊;3-布隆過(guò)濾器模塊;4-特征比對(duì)模塊;5-過(guò)濾模塊;6-更新模塊。
具體實(shí)施方式
一種基于相似度比較的URL去重方法,包含以下步驟:
S1:導(dǎo)入U(xiǎn)RL。建立存放URL的數(shù)據(jù)庫(kù)URL_DB,一條記錄即以字符串方式存放的URL,其格式為:url = u1/u2/u3/…/un,n ≥ 1。
S2:提取URL所包含的URL特征,所述URL特征包含URL站點(diǎn)特征。提取URL中的站點(diǎn)字符節(jié)u1。用MD5算法分別計(jì)算該URL的各個(gè)字符節(jié)的特征值。即輸入站點(diǎn)字符節(jié)u1,輸出URL站點(diǎn)特征值m1每個(gè)特征值為128位唯一的二進(jìn)制數(shù)字。
S3:將提取到的URL特征查詢(xún)布隆過(guò)濾器,所述布隆過(guò)濾器的特征類(lèi)型與所述URL特征的類(lèi)型對(duì)應(yīng)。將URL特征的特征值,如m1做模N操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息。所述布隆過(guò)濾器在內(nèi)存建立。針對(duì)采集URL數(shù)量的不同,在保證沖突率的基礎(chǔ)上,確定布隆過(guò)濾器和模N的大小,用于URL排重的布隆過(guò)濾器構(gòu)建如下:
(1)通過(guò)數(shù)據(jù)規(guī)模及期望的誤判率計(jì)算所需的內(nèi)存大?。?/p>
用戶(hù)輸入需要排重的URL的數(shù)據(jù)量k,以及期望的誤判率P,這也是構(gòu)建布隆過(guò)濾器需要用戶(hù)輸入的僅有的兩個(gè)參數(shù)。通過(guò)公式計(jì)算所需內(nèi)存的大小M bit:
(2)根據(jù)M值確定模N操作的N值大?。?/p>
S4:將提取到的URL特征與布隆過(guò)濾器中存儲(chǔ)的特征進(jìn)行比對(duì),例如將m1做模N操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息,并查詢(xún)布隆過(guò)濾器中站點(diǎn)特征值對(duì)應(yīng)的bit位,兩者bit位的值是否均為1,若是則認(rèn)為是具有相似特征。查詢(xún)是否有相似特征,若有,則進(jìn)行S5步驟;若無(wú),則進(jìn)行S6步驟。
S5:查詢(xún)到相似的特征,則認(rèn)為該URL已經(jīng)在數(shù)據(jù)庫(kù)URL_DB中,將所述URL過(guò)濾。
S6:未查詢(xún)到相似的特征,即若有任意一個(gè)URL特征的值為0;則認(rèn)為URL_DB中不存在該URL,將其存入U(xiǎn)RL_DB中,并將布隆過(guò)濾器中對(duì)應(yīng)的bit位置為1。將所述URL特征存儲(chǔ)到布隆過(guò)濾器。
所述URL特征還包含URL目錄深度特征,值為n。
所述URL特征還包含URL一級(jí)目錄特征,值為m2。
所述URL特征還包含URL尾頁(yè)特征,值為mn。
步驟S4中將提取到的URL特征(n、m1、m2、mn)分別做換算(模N)操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息,查詢(xún)布隆過(guò)濾器中對(duì)應(yīng)類(lèi)型的特征的bit位信息,若二者均為1,則認(rèn)為二者為相似特征,認(rèn)為該URL已經(jīng)在數(shù)據(jù)庫(kù)URL_DB中,將其廢棄。若有任一URL特征的值為0,則認(rèn)為URL_DB中不存在該URL,將其存入U(xiǎn)RL_DB中,并將布隆過(guò)濾器中對(duì)應(yīng)的4個(gè)bit位信息為1。還可以定義和增加更多的URL特征,并在方法的實(shí)現(xiàn)中選擇使用其中的特征來(lái)識(shí)別URL。
本發(fā)明所述的一種基于相似度比較的URL去重方法結(jié)合了URL的結(jié)構(gòu)特征及傳統(tǒng)布隆過(guò)濾器的結(jié)構(gòu)特征,提取URL具有代表性的多個(gè)特征屬性,通過(guò)這些屬性來(lái)代表相似的URL,并用這些不同的特征計(jì)算出特征值來(lái)映射布隆過(guò)濾器中的對(duì)應(yīng)位,代替了布隆過(guò)濾器中所需的多個(gè)哈希函數(shù)。
一種基于相似度比較的URL去重系統(tǒng),如圖2所示,包含以下模塊:
接收模塊1:導(dǎo)入U(xiǎn)RL。建立存放URL的數(shù)據(jù)庫(kù)URL_DB,一條記錄即以字符串方式存放的URL,其格式為:url = u1/u2/u3/…/un,n ≥ 1。
提取模塊2:提取URL所包含的URL特征,所述URL特征包含URL站點(diǎn)特征。提取URL中的站點(diǎn)字符節(jié)u1。用MD5算法分別計(jì)算該URL的各個(gè)字符節(jié)的特征值。即輸入站點(diǎn)字符節(jié)u1,輸出URL站點(diǎn)特征值m1每個(gè)特征值為128位唯一的二進(jìn)制數(shù)字。
布隆過(guò)濾器模塊3:將提取到的URL特征查詢(xún)布隆過(guò)濾器,所述布隆過(guò)濾器的特征類(lèi)型與所述URL特征的類(lèi)型對(duì)應(yīng)。將URL特征的特征值,如m1做模N操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息。所述布隆過(guò)濾器在內(nèi)存建立。針對(duì)采集URL數(shù)量的不同,在保證沖突率的基礎(chǔ)上,確定布隆過(guò)濾器和模N的大小,用于URL排重的布隆過(guò)濾器構(gòu)建如下:
(1)通過(guò)數(shù)據(jù)規(guī)模及期望的誤判率計(jì)算所需的內(nèi)存大?。?/p>
用戶(hù)輸入需要排重的URL的數(shù)據(jù)量k,以及期望的誤判率P,這也是構(gòu)建布隆過(guò)濾器需要用戶(hù)輸入的僅有的兩個(gè)參數(shù)。通過(guò)公式計(jì)算所需內(nèi)存的大小M bit:
(2)根據(jù)M值確定模N操作的N值大小:
特征比對(duì)模塊4:將提取到的URL特征與布隆過(guò)濾器中存儲(chǔ)的特征進(jìn)行比對(duì),例如將m1做模N操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息,并查詢(xún)布隆過(guò)濾器中站點(diǎn)特征值對(duì)應(yīng)的bit位,兩者bit位的值是否均為1,若是則認(rèn)為是具有相似特征。查詢(xún)是否有相似特征,若有,則轉(zhuǎn)入過(guò)濾模塊;若無(wú),則轉(zhuǎn)入更新模塊。
過(guò)濾模塊5:查詢(xún)到相似的特征,則認(rèn)為該URL已經(jīng)在數(shù)據(jù)庫(kù)URL_DB中,將所述URL過(guò)濾。
更新模塊6:未查詢(xún)到相似的特征,即若有任意一個(gè)URL特征的值為0;則認(rèn)為URL_DB中不存在該URL,將其存入U(xiǎn)RL_DB中,并將布隆過(guò)濾器中對(duì)應(yīng)的bit位置為1。將所述URL特征存儲(chǔ)到布隆過(guò)濾器。
所述URL特征還包含URL目錄深度特征,值為n。
所述URL特征還包含URL一級(jí)目錄特征,值為m2。
所述URL特征還包含URL尾頁(yè)特征,值為mn。
特征比對(duì)模塊4將提取到的URL特征(n、m1、m2、mn)分別做換算(模N)操作,得到其在布隆過(guò)濾器中對(duì)應(yīng)的bit位信息,查詢(xún)布隆過(guò)濾器中對(duì)應(yīng)類(lèi)型的特征的bit位信息,若二者均為1,則認(rèn)為二者為相似特征,認(rèn)為該URL已經(jīng)在數(shù)據(jù)庫(kù)URL_DB中,將其廢棄。若有任一URL特征的值為0,則認(rèn)為URL_DB中不存在該URL,將其存入U(xiǎn)RL_DB中,并將布隆過(guò)濾器中對(duì)應(yīng)的4個(gè)bit位信息為1。還可以定義和增加更多的URL特征,并在方法的實(shí)現(xiàn)中選擇使用其中的特征來(lái)識(shí)別URL。
本發(fā)明所述的一種基于相似度比較的URL去重系統(tǒng)結(jié)合了URL的結(jié)構(gòu)特征及傳統(tǒng)布隆過(guò)濾器的結(jié)構(gòu)特征,提取URL具有代表性的多個(gè)特征屬性,通過(guò)這些屬性來(lái)代表相似的URL,并用這些不同的特征計(jì)算出特征值來(lái)映射布隆過(guò)濾器中的對(duì)應(yīng)位,代替了布隆過(guò)濾器中所需的多個(gè)哈希函數(shù)。
本發(fā)明的一種基于相似度比較的URL去重方法和系統(tǒng),通過(guò)導(dǎo)入U(xiǎn)RL并提取URL的特征,將URL特征與布隆過(guò)濾器進(jìn)行比對(duì),如果查詢(xún)到布隆過(guò)濾器中存儲(chǔ)有該URL特征對(duì)應(yīng)的特征,則過(guò)濾該URL,所述URL特征包括一種以上的特征,代替了現(xiàn)有技術(shù)中的哈希函數(shù),可以匹配更準(zhǔn)確的URL網(wǎng)頁(yè)數(shù)據(jù)。通過(guò)相似度比較并過(guò)濾可以快速、準(zhǔn)確解決網(wǎng)頁(yè)頁(yè)面重復(fù)或相似的重復(fù)爬行或掃描工作,可以提高爬蟲(chóng)以及掃描的有效性和效率。
顯然,上述實(shí)施例僅僅是為清楚地說(shuō)明所作的舉例,而并非對(duì)實(shí)施方式的限定。對(duì)于所屬領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在上述說(shuō)明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無(wú)需也無(wú)法對(duì)所有的實(shí)施方式予以窮舉。而由此所引伸出的顯而易見(jiàn)的變化或變動(dòng)仍處于本發(fā)明創(chuàng)造的保護(hù)范圍之中。