一種網(wǎng)絡爬蟲去重特征值的提取方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種網(wǎng)絡爬蟲去重特征值的提取方法,包括:步驟一,根據(jù)目標網(wǎng)站的統(tǒng)一資源定位符URL域名和URL種子特征生成正則表達式;步驟二,從目標網(wǎng)站的URL地址中捕獲與所述正則表達式匹配的字符串;步驟三,對所述字符串進行預定的格式轉換,得到所述URL地址的去重特征值。本發(fā)明還提供一種網(wǎng)絡爬蟲去重特征值的提取裝置。本發(fā)明適用于對不同URL鏈接指向相同頁面的情況實現(xiàn)去重。
【專利說明】一種網(wǎng)絡爬蟲去重特征值的提取方法和裝置
【技術領域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)【技術領域】,具體涉及一種網(wǎng)絡爬蟲去重特征值的提取方法和裝置。
【背景技術】
[0002]互聯(lián)網(wǎng)中鏈接數(shù)量龐大,URL(Uniform Resource Locator,統(tǒng)一資源定位符)鏈接數(shù)有上百億個,網(wǎng)絡爬蟲(Web Spider)在抓取網(wǎng)頁時對重復URL進行過濾去重,可防止對相同網(wǎng)頁重復下載,這不僅避免了網(wǎng)絡IO資源的浪費和爬蟲抓取速度降低,同時也可避免數(shù)據(jù)冗余和重復處理導致的資源浪費。在爬蟲去重過程中,URL去重特征值(唯一標識網(wǎng)頁的字符串)的提取是過濾去重的重要環(huán)節(jié),去重特征值的正確與否,直接影響爬蟲的抓取速度。
[0003]對于去重特征值的生成,主要是針對抓取的URL種子做去重算法,獲得URL種子的去重特征值,目前較主流的方法有三種:
[0004]1)MD5去重 特征值生成方法:使用網(wǎng)頁URL鏈接做MD5運算,將得到的MD5值作為去重特征值。
[0005]2) Hash去重特征值生成方法:使用網(wǎng)頁URL鏈接做Hash運算,將得到的hash值作為去重特征值。
[0006]3)URL字符串特征值生成方法:直接使用網(wǎng)頁URL作為去重特征值。
[0007]經(jīng)過大量研究分析發(fā)現(xiàn),利用上述三類方案,雖然能夠獲得去重特征值,實現(xiàn)URL的過濾去重,但是,對于不同的URL指向相同網(wǎng)頁的情況,此類方案還是針對不同URL生成不同的去重特征值,則爬蟲也將無法識別重復頁面,仍將每個URL對應的頁面一一下載。例如,新浪微博的兩條 URL 鏈接 “http://weib0.com/2946321900/zEeRM2NCS” 和 “http://weib0.com/2946321900/zEeRM2NCS ? a”,兩條鏈接是指向同一個微博頁面的,但是這兩條微博的URL串并不是完全一樣。那么,用現(xiàn)有的去重特征值生成方法對這兩個URL串處理,會產(chǎn)生兩個不同的去重特征值,網(wǎng)絡爬蟲會認為這是兩個不同的網(wǎng)頁,進而進行重復下載,這也就意味著去重失敗。
[0008]對于上述情況,對于相同頁面的不同URL去重失敗,不僅存在網(wǎng)絡資源和系統(tǒng)內存方面的浪費,并且在數(shù)據(jù)挖掘領域,將相同頁面當成不同頁面進行處理將嚴重影響最終的數(shù)據(jù)分析效果。
【發(fā)明內容】
[0009]有鑒于此,本發(fā)明提出一種網(wǎng)絡爬蟲去重特征值的提取方法和裝置,根據(jù)目標網(wǎng)站URL特點,提取URL特征子串用來生成去重特征值,可實現(xiàn)相同頁面的不同URL的去重。
[0010]本發(fā)明提供一種網(wǎng)絡爬蟲去重特征值的提取方法,包括:步驟一,根據(jù)目標網(wǎng)站的統(tǒng)一資源定位符URL域名和URL種子特征生成正則表達式;步驟二,從目標網(wǎng)站的URL地址中捕獲與正則表達式匹配的字符串;步驟三,對字符串進行預定的格式轉換,得到URL地址的去重特征值。
[0011]優(yōu)選地,在步驟三之前,該方法還包括:為步驟二中捕獲的字符串添加第一預設編號和第二預設編號;其中第一預設編號與目標網(wǎng)站相對應,第二預設編號與URL種子的類型相對應。
[0012]優(yōu)選地,URL種子的類型包括指向入口類型、指向列表類型和指向單品類型。
[0013]優(yōu)選地,在步驟三中,進行預定的格式轉換時采用MD5第5版信息摘要算法運算。
[0014]優(yōu)選地,在步驟三之后,該方法還包括:查詢去重特征值集合,判斷URL地址的去重特征值是否存在于去重特征值集合中,如果存在,放棄URL地址的去重特征值;如果不存在,下載URL地址的頁面,并將URL地址的去重特征值添加至去重特征值集合中;其中去重特征值集合中的元素為已完成頁面下載的URL地址的去重特征值。
[0015]優(yōu)選地,去重特征值集合存儲于Redis存儲系統(tǒng)中,其中以去重特征值為鍵,以對應的數(shù)據(jù)庫自增ID為值。
[0016]優(yōu)選地,在步驟一中,如果目標網(wǎng)站的URL種子特征為該URL種子中含有商品庫存量單位SKU信息,則在步驟二中,從URL地址中捕獲的字符串至少含有SKU信息。
[0017]本發(fā)明還提供一種網(wǎng)絡爬蟲去重特征值的提取裝置,包括:正則表達式生成模塊,用于根據(jù)目標網(wǎng)站的統(tǒng)一資源定位符URL域名和URL種子特征生成正則表達式;字符串捕獲模塊,用于從目標網(wǎng)站的URL地址中捕獲與正則表達式匹配的字符串;去重特征值提取模塊,用于對字符串進行預定的格式轉換,得到URL地址的去重特征值。
[0018]本發(fā)明的有益效果:本發(fā)明提出一種針對能唯一標識網(wǎng)頁特征值的提取方案,一方面可以生成唯一的網(wǎng)頁特征串,避免傳統(tǒng)網(wǎng)絡爬蟲重復下載、同一網(wǎng)頁二次抽取的情況;另一方面該特征串比原URL串的長度更短,在使用特征串進行運算時,運算效率更高,可節(jié)約所需內存空間和中央處理器CPU資源。本發(fā)明基于定向網(wǎng)絡爬蟲的特點,可迎合網(wǎng)絡爬蟲快速去重的需求,彌補現(xiàn)有特征值提取方法的不足,提高網(wǎng)絡爬蟲去重的準確性,對電商商品信息抓取,微博、新聞網(wǎng)站信息抓取的去重效果明顯。將該方案應用于互聯(lián)網(wǎng)成千上萬的網(wǎng)絡爬蟲應用,將大幅減少整個互聯(lián)網(wǎng)的不必要網(wǎng)絡流量,優(yōu)化互聯(lián)網(wǎng)環(huán)境。
【專利附圖】
【附圖說明】
[0019]圖1是本發(fā)明實施例的網(wǎng)絡爬蟲去重特征值的提取方法流程框圖。
[0020]圖2是本發(fā)明的優(yōu)選實施例的網(wǎng)絡爬蟲去重特征值的提取方法流程框圖。
[0021]圖3是本發(fā)明實施例的網(wǎng)絡爬蟲去重特征值的提取裝置結構框圖。
[0022]圖4是本發(fā)明優(yōu)選實施例的網(wǎng)絡爬蟲去重特征值的提取裝置結構框圖。
【具體實施方式】
[0023]以下結合附圖以及具體實施例,對本發(fā)明的技術方案進行詳細描述。
[0024]本發(fā)明基于目標網(wǎng)站URL字符串的特征,從爬蟲推送的URL鏈接中提取能唯一標識該網(wǎng)頁的子串作為網(wǎng)頁特征串,然后對特征串進行格式轉換得到去重特征值。針對有多個URL鏈接指向同一頁面的情況,通過該方法的特征值去重后,對該頁面僅下載一次,不會發(fā)生重復下載的情況。
[0025]圖1示出了本發(fā)明實施例的網(wǎng)絡爬蟲去重特征值的提取方法的流程框圖,包括:[0026]SlOl,根據(jù)目標網(wǎng)站的URL域名和URL種子特征生成正則表達式;
[0027]S102,從目標網(wǎng)站的URL地址中捕獲與正則表達式匹配的字符串;
[0028]S103,將該字符串作為URL地址的特征字符串,對特征字符串進行預定的格式轉換,得到頁面的去重特征值。
[0029]在實際應用場景中,上述的爬蟲URL去重規(guī)則針對定向網(wǎng)站的URL去重,即事先已經(jīng)掌握所要抓取的目標網(wǎng)站的信息,如網(wǎng)站URL域名和種子特征等,以亞馬遜網(wǎng)站數(shù)據(jù)抓取的去重特征值抽取為例,參考圖2,URL域名為誦.amazon, cn,爬蟲推送待抓取的URL種子,例如:
[0030]http://www.amazon.cn/Kindle-Fire-HD-16GB-% E5% B9% B3% E6% 9D% BF %E7% 94% B5% E8% 84% 91/dp/B00960YR3Q/ref = sr_l_l ? s = pc&ie = UTF8&qid =1393480965&sr = 1-1,以及
[0031]http://www.amazon, cn/gp/product/B00960YR3Q/ref = famstripe_kfh_sale。[0032]上述兩個亞馬遜網(wǎng)站的URL鏈接指向同一個產(chǎn)品頁,兩者中都含有字符串“B00960YR3Q”,該字符串表征的是產(chǎn)品的SKU(Stock Ke印ingUnit,庫存量單位)信息。關于SKU,其是產(chǎn)品庫存進出計量的單位,是大型連鎖超市配送中心及物流管理的必要方法,目前SKU已被引申為產(chǎn)品統(tǒng)一編號的簡稱,每種產(chǎn)品均對應有唯一的SKU號。
[0033]也就是說,該產(chǎn)品頁的URL中含有產(chǎn)品的SKU,掌握了這種URL種子的特征,正則表達式的編寫規(guī)則可根據(jù)URL域名和種子特征來編寫,目的是將具有共性特征的產(chǎn)品SKU提取出來,例如,本實施例編寫的正則表達式可為:http://www.amazon, cn/.* ? /(dp I product) / ([\w] +)/.其中,正則表達式的組I即第一個括號(dp Iproduct)表示匹配元素為字符串“dp”或“product”,組2即第二個括號(「W1+)表示匹配元素是任何數(shù)字和字母。
[0034]然后,利用編寫好的正則表達式,從例如第一個URL可捕獲組2匹配的字符串,捕獲結果是子串B00960YR3Q,B00960YR3Q就是該第一個URL鏈接的特征串。
[0035]最后,為統(tǒng)一字符串格式,對特征串B00960YR3Q進行格式轉換,例如可采用32位MD5運算、32位Rabin Hash算法等。
[0036]以采用MD5運算為例,轉換后得到:
[0037]08BD80B9CEB6450CD2804BFF6E698EF4,即提取到了第一個 URL 的去重特征值,也可稱為MD5特征值。
[0038]將去重特征值存放在去重特征值集合中,在后續(xù)處理應用中,當爬蟲推送第二個URL時,根據(jù)正則表達式捕獲到的特征串必然也是B00960YR3Q,得到的MD5特征值必然也是08BD80B9CEB6450CD2804BFF6E698EF4,則在進行URL去重時,發(fā)現(xiàn)去重特征值集合中已經(jīng)存在該MD5特征值,說明出現(xiàn)了重復特征值,則將第二個URL的MD5特征值過濾掉,對應的頁面不予下載。
[0039]利用上述方案,可以從URL種子中提取特征字符串,得到網(wǎng)頁的唯一特征值,達到正確去重的目的,指向同一網(wǎng)頁的URL只需下載一次,減少下載次數(shù),節(jié)省網(wǎng)絡帶寬;并且,以少量的去重特征值代替以往一個URL對應一個特征值的形式,可節(jié)省去重特征值集合所占內存,同時節(jié)省網(wǎng)頁存儲空間。
[0040]此外,以產(chǎn)品的SKU信息作為URL種子特征編寫正則表達式的好處是,對于例如電商的商品信息,同一件產(chǎn)品只對應唯一的SKU號,而顧客想要找到該產(chǎn)品的入口則非常多(比如綜合性電商網(wǎng)站的列表頁、商家的網(wǎng)絡旗艦店等),不同的入口將生成不同的URL鏈接,本發(fā)明利用這些鏈接中作為共性存在的SKU號提取出去重特征值,那么對于同一件產(chǎn)品的網(wǎng)絡信息頁面將只需要下載一次,而不會反復下載,去重效果明顯。
[0041 ] 在本發(fā)明的實施例中,在以MD5運算生成MD5特征值之前,為了區(qū)分和記錄方便,可針對不同的感興趣網(wǎng)站,對URL的特征串添加目標網(wǎng)站的編號和種子的類型(如入口種子、產(chǎn)品列表頁、單品頁等)的編號,以“網(wǎng)站編號+種子類型編號+URL的特征串”的形式進行MD5運算。舉例來說,對于當當網(wǎng)商城:
[0042]入口種子 URL 為:http://category, dangdang.com/ ? ref = www-0~C#ref =www -0-C,
[0043]列表種子URL 為:http://category, dangdang.com/cid4002778.html,
[0044]單品種子URL為:
[0045]http://product, dangdang.com/1214326222.html#ddclick ? act =click&pos = 1214326222—27—I—m&cat = 4002778&key = &qinfo = &pinfo = &minfo =125561—I—58&ninfo = &custid = &permid = 20140317171356879105326198484281259&ref = &rcount = &type = &t = 1400765930000 ;
[0046]設置目標網(wǎng)站即當當網(wǎng)的編號為01 ;種子的類型有三種(指向入口頁面的種子、指向列表頁面的種子和指向單品頁面種子),編號分別為:指向入口 -01,指向列表-02,指向單品_03。
[0047]對三個URL提取特征串,分別為:
[0048]Category,
[0049]cid4002778,
[0050]1214326222。
[0051]添加網(wǎng)站編號和種子類型編號后為:
[0052]01_01_category,
[0053]01_02_cid4002778,
[0054]01_03_1214326222 ;
[0055]然后進行MD5編碼得到MD5特征值,分別為:
[0056]5A21D3BB2332C7D8II5B9D59EF38FDEC,
[0057]854C7CA169C5CE46DCF88ABF696823A9,
[0058]8D585CBE2FCCCCEF11CCB3FA4376E4D3。
[0059]在本發(fā)明的實施例中,對于去重特征值集合的建立,可在爬蟲爬取URL種子進行去重的過程中逐漸更新擴充。
[0060]首先,將一個入口種子URL的MD5值存儲到數(shù)據(jù)庫,存儲時,注意設置好網(wǎng)站編號、種子類型編號和URL特征串,將該MD5值作為一個去重特征值保存在數(shù)據(jù)庫,作為去重特征值集合。
[0061]然后,當進行URL去重時,以新生成的MD5特征值查詢這個去重特征值集合,發(fā)現(xiàn)集合中不存在相同的MD5特征值,說明應當保留該MD5特征值,下載該頁面;如果集合中已經(jīng)存在相同的MD5特征值,說明應當將該MD5特征值過濾掉,實現(xiàn)URL去重。[0062]在實際應用中,通過種子URL爬蟲會衍生大量URL,衍生的URL生成MD5特征值,再利用MD5特征值集合去重,同時對MD5特征值集合進行更新。另外,如果抓取到不存在的URL,還可給出“頁面不存在”的提示,或者跳轉到其它指定頁面。
[0063]在本發(fā)明的實施例中,存儲去重特征值集合的數(shù)據(jù)庫可產(chǎn)生自增ID,基于自增ID和對應的MD5特征值,將MD5特征值作為鍵,數(shù)據(jù)庫ID作為值,保存至內存存儲系統(tǒng)中,如Redis存儲系統(tǒng)。
[0064]可以看到,本發(fā)明以提取后的子串參與去重特征值的計算,計算效率高,相比之下,原始的以URL地址字符串直接參與去重特征值計算,計算效率低。參考圖2實施例,對于
[0065]http://www.amazon.cn/Kindle-Fire-HD-16GB-% E5% B9% B3% E6% 9D% BF %E7% 94% B5% E8% 84% 91/dp/B00960YR3Q/ref = sr_l_l ? s = pc&ie = UTF8&qid =1393480965&sr = 1-1和
[0066]http://www.amazon.cn/gp/product/B00960YR3Q/ref = famstripe_kfh_sale,以往將保存兩個種子到去重特征值集合,而利用本發(fā)明僅需要保存一個去重特征值,推而廣之,如果有一億數(shù)量的URL地址需去重計算,本發(fā)明對每個URL提取之后的特征子串為原URL字符串的一半長度,那么參與計算的字符串將減少一半數(shù)量,減少到5千萬,相應地需要的內存和CPU資源也可減少一半。對于大型網(wǎng)絡爬蟲需處理去重的URL地址數(shù)億的情況,當大量該類型的種子存在時,可大量減少需要的計算和機器內存,從而節(jié)省存儲空間和軟硬資源。
[0067]除此之外, 本發(fā)明還提供一種網(wǎng)絡爬蟲去重特征值的提取裝置,參考圖3,包括:
[0068]正則表達式生成模塊11,用于根據(jù)目標網(wǎng)站的統(tǒng)一資源定位符URL域名和URL種子特征生成正則表達式;
[0069]字符串捕獲模塊12,用于從目標網(wǎng)站的URL地址中捕獲與正則表達式匹配的字符串;
[0070]去重特征值提取模塊13,用于對字符串進行預定的格式轉換,得到URL地址的去重特征值。
[0071]其中,該裝置還包括字符串處理模塊14,參考圖4,其用于為字符串捕獲模塊捕獲的字符串添加第一預設編號和第二預設編號;其中第一預設編號與目標網(wǎng)站相對應,第二預設編號與URL種子的類型相對應。
[0072]其中,該裝置還包括去重特征值處理模塊15,用于查詢去重特征值集合,并判斷URL地址的去重特征值是否存在于去重特征值集合中,如果存在,去重特征值處理模塊放棄URL地址的去重特征值;如果不存在,去重特征值處理模塊通知下載URL地址的頁面,并將URL地址的去重特征值添加至去重特征值集合中;其中去重特征值集合中的元素為已完成頁面下載的URL地址的去重特征值。
[0073]以上,結合具體實施例對本發(fā)明的技術方案進行了詳細介紹,所描述的具體實施例用于幫助理解本發(fā)明的思想。本領域技術人員在本發(fā)明具體實施例的基礎上做出的推導和變型也屬于本發(fā)明保護范圍之內。
【權利要求】
1.一種網(wǎng)絡爬蟲去重特征值的提取方法,其特征在于,包括: 步驟一,根據(jù)目標網(wǎng)站的統(tǒng)一資源定位符URL域名和URL種子特征生成正則表達式; 步驟二,從目標網(wǎng)站的URL地址中捕獲與所述正則表達式匹配的字符串; 步驟三,對所述字符串進行預定的格式轉換,得到所述URL地址的去重特征值。
2.如權利要求1所述的網(wǎng)絡爬蟲去重特征值的提取方法,其特征在于,在步驟三之前,所述方法還包括: 為步驟二中捕獲的字符串添加第一預設編號和第二預設編號;其中第一預設編號與目標網(wǎng)站相對應,第二預設編號與URL種子的類型相對應。
3.如權利要求2所述的網(wǎng)絡爬蟲去重特征值的提取方法,其特征在于,所述URL種子的類型包括指向入口類型、指向列表類型和指向單品類型。
4.如權利要求1所述的網(wǎng)絡爬蟲去重特征值的提取方法,其特征在于,在步驟三中,進行所述預定的格式轉換時采用MD5第5版信息摘要算法運算。
5.如權利要求1所述的網(wǎng)絡爬蟲去重特征值的提取方法,其特征在于,在步驟三之后,所述方法還包括: 查詢去重特征值集合,判斷所述URL地址的去重特征值是否存在于所述去重特征值集合中,如果存在,放棄所述URL地址的去重特征值;如果不存在,下載所述URL地址的頁面,并將所述URL地址的 去重特征值添加至所述去重特征值集合中;其中所述去重特征值集合中的元素為已完成頁面下載的URL地址的去重特征值。
6.如權利要求5所述的網(wǎng)絡爬蟲去重特征值的提取方法,其特征在于,所述去重特征值集合存儲于Redis存儲系統(tǒng)中,其中以去重特征值為鍵,以對應的數(shù)據(jù)庫自增ID為值。
7.如權利要求1所述的網(wǎng)絡爬蟲去重特征值的提取方法,其特征在于,在步驟一中,如果目標網(wǎng)站的URL種子特征為該URL種子中含有商品庫存量單位SKU信息,則在步驟二中,從所述URL地址中捕獲的字符串至少含有所述SKU信息。
8.—種網(wǎng)絡爬蟲去重特征值的提取裝置,其特征在于,包括: 正則表達式生成模塊,用于根據(jù)目標網(wǎng)站的統(tǒng)一資源定位符URL域名和URL種子特征生成正則表達式; 字符串捕獲模塊,用于從目標網(wǎng)站的URL地址中捕獲與所述正則表達式匹配的字符串; 去重特征值提取模塊,用于對所述字符串進行預定的格式轉換,得到所述URL地址的去重特征值。
9.如權利要求8所述的網(wǎng)絡爬蟲去重特征值的提取裝置,其特征在于,所述裝置還包括: 字符串處理模塊,用于為所述字符串捕獲模塊捕獲的字符串添加第一預設編號和第二預設編號;其中第一預設編號與目標網(wǎng)站相對應,第二預設編號與URL種子的類型相對應。
10.如權利要求9所述的網(wǎng)絡爬蟲去重特征值的提取裝置,其特征在于,所述URL種子的類型包括指向入口類型、指向列表類型和指向單品類型。
11.如權利要求8所述的網(wǎng)絡爬蟲去重特征值的提取裝置,其特征在于,在所述去重特征值提取模塊進行所述預定的格式轉換時采用MD5第5版信息摘要算法運算。
12.如權利要求8所述的網(wǎng)絡爬蟲去重特征值的提取裝置,其特征在于,所述裝置還包括: 去重特征值處理模塊,用于查詢去重特征值集合,并判斷所述URL地址的去重特征值是否存在于所述去重特征值集合中,如果存在,所述去重特征值處理模塊放棄所述URL地址的去重特征值;如果不存在,所述去重特征值處理模塊通知下載所述URL地址的頁面,并將所述URL地址的去重特征值添加至所述去重特征值集合中;其中所述去重特征值集合中的元素為已完成頁面下載 的URL地址的去重特征值。
13.如權利要求12所述的網(wǎng)絡爬蟲去重特征值的提取裝置,其特征在于,所述去重特征值集合存儲于Redis存儲系統(tǒng)中,其中以去重特征值為鍵,以對應的數(shù)據(jù)庫自增ID為值。
14.如權利要求8所述的網(wǎng)絡爬蟲去重特征值的提取裝置,其特征在于,如果目標網(wǎng)站的URL種子特征為該URL種子中含有商品庫存量單位SKU信息,則所述字符串捕獲模塊從所述URL地址中捕獲的字符串至少含有所述SKU信息。
【文檔編號】G06F17/30GK103984753SQ201410231745
【公開日】2014年8月13日 申請日期:2014年5月28日 優(yōu)先權日:2014年5月28日
【發(fā)明者】黎小為, 周東 申請人:北京京東尚科信息技術有限公司, 北京京東世紀貿易有限公司