一種有效鏈接獲取的網(wǎng)頁增量抓取方法
【技術(shù)領(lǐng)域】
:
[0001]本發(fā)明涉及一種基于無效鏈接過濾的有效網(wǎng)頁鏈接獲取方法,以及對(duì)獲取的有效網(wǎng)頁鏈接增量抓取的技術(shù)。
【背景技術(shù)】
:
[0002]互聯(lián)網(wǎng)技術(shù)的高速發(fā)展以及智能移動(dòng)終端的迅速普及,使得信息呈現(xiàn)爆炸式的增長(zhǎng),也給快速、高效的從互聯(lián)網(wǎng)中抓取所需信息帶來新的挑戰(zhàn)。
[0003]傳統(tǒng)網(wǎng)頁信息抓取通常采用深度或廣度遍歷的抓取方式,從指定的網(wǎng)頁鏈接開始逐層信息抓取,并提取每層中的URL鏈接作為下一層抓取的起始鏈接。由于網(wǎng)頁中鏈接并非都指向有用的信息,如網(wǎng)頁中的菜單、廣告、頁腳等,如果不能有效的過濾無效鏈接將抓取大量的無效信息,降低網(wǎng)頁抓取的準(zhǔn)確性和效率。同時(shí),無效鏈接間的相互指向?qū)?dǎo)致抓取過程陷于無限循環(huán)。
[0004]由于互聯(lián)網(wǎng)中信息更新速度快,網(wǎng)頁信息需要定時(shí)重新抓取。在重新抓取過程中需要快速判斷鏈接是否已經(jīng)抓取,避免重復(fù)網(wǎng)頁信息抓取。網(wǎng)頁URL具有唯一性,在抓取過程中維持一個(gè)已抓取網(wǎng)頁URL集合,重新抓取時(shí)判斷待抓取網(wǎng)頁URL是否在該集合中便可判斷該網(wǎng)頁信息是否已經(jīng)抓取。隨著抓取數(shù)量增大,判斷URL是否在已抓取URL集合將嚴(yán)重影響效率。
[0005]本發(fā)明實(shí)現(xiàn)了一種網(wǎng)頁中無效鏈接過濾來獲取網(wǎng)頁中有效鏈接集合,并通過將網(wǎng)頁URL隨機(jī)哈希到布隆過濾器位圖集合中來實(shí)現(xiàn)已抓取網(wǎng)頁URL快速、高效的判斷,從而增量抓取網(wǎng)頁信息。
【發(fā)明內(nèi)容】
:
[0006]本發(fā)明要解決的技術(shù)問題是,實(shí)現(xiàn)網(wǎng)頁中有效鏈接獲取,并同過布隆過濾器維持已抓取鏈接集合,以高效、實(shí)時(shí)的增量抓取網(wǎng)頁信息。
[0007]針對(duì)上述技術(shù)問題,本發(fā)明的技術(shù)方案是,有效鏈接獲取的網(wǎng)頁增量抓取方法,包括如下步驟:
[0008]I)有效鏈接獲取階段:
[0009]a初始化抓取網(wǎng)頁鏈接,指定抓取入口 URL ;
[0010]b判斷入口網(wǎng)頁鏈接是否具有分頁;
[0011]c計(jì)算入口網(wǎng)頁與其分頁的公共鏈接;
[0012]d通過公共鏈接獲取有效鏈接;
[0013]e 結(jié)束。
[0014]2)增量抓取階段:
[0015]a構(gòu)建布隆過濾器,并通過布隆過濾器判斷步驟l)_d中有效網(wǎng)頁鏈接是否已經(jīng)抓??;
[0016]b通過HTTP請(qǐng)求抓取未抓取的網(wǎng)頁;
[0017]c 結(jié)束。
[0018]步驟I) -a中抓入口 URL是指抓取程序以此URL開始逐層抓取。
[0019]步驟l)-b中分頁是指在網(wǎng)頁中由于信息太多采用分頁形式顯示,每一頁顯示一部分信息。分頁的具體判斷方法如下:
[0020]I)獲取入口 URL頁面中所有的鏈接,保存集合PageAllUrl中;
[0021]2)通過匹配PageAllUrl中每個(gè)URL鏈接文本中是否為“下一頁”或“下頁”等分頁標(biāo)志來判斷是否有分頁。
[0022]步驟l)-c中公共鏈接是指入口 URL頁面與其分頁網(wǎng)頁中相同的URL,其具體計(jì)算方法如下:
[0023]I)獲取入口 URL分頁網(wǎng)頁中所有的鏈接,保存集合NextPageAllUrl中;
[0024]2)比較集合PageAl IUrl和集合NextPageAl IUrl,找出它們相同的URL并保存在集合 CommonUrl 中,即公共鏈接集合 CommonUrl = PageAllUrl Π NextPageAllUrl。
[0025]步驟l)-d中有效鏈接是指非菜單、導(dǎo)航、廣告等無效鏈接,其具體方法如下:
[0026]I)在步驟l)-b中判斷入口 URL是否具有分頁,如有執(zhí)行2),否則執(zhí)行3);
[0027]2)從集合PageAllUrl中鏈接去掉集合CommonUrl中鏈接,并將結(jié)果保存在集合EffectiveUrl 中,即有效鏈接集合 EffectiveUrl = PageAlIUrl-CommonUrl ;
[0028]3)分析入口 URL鏈接,獲取其主機(jī)域名HostUrl ;
[0029]4)判斷集合PageAllUrl是否為空,如果不為空則執(zhí)行5),否則執(zhí)行8);
[0030]5)從集合 PageAllUrl 中取出一個(gè) Url ;
[0031]6)判斷Url是否是入口 URL的前綴,如果是則執(zhí)行7),否則執(zhí)行4);
[0032]7)將Url加入有效鏈接集合EffectiveUrl中,執(zhí)行4);
[0033]8)結(jié)束。
[0034]步驟2)_a和2)_b中構(gòu)建布隆過濾器是指設(shè)定布隆過濾器的大小、誤判率以及隨機(jī)哈希函數(shù)。本發(fā)明設(shè)置其大小為90000000,誤判率為0.000001,隨機(jī)哈希函數(shù)為MD5Hash。其判斷方法具體如下:
[0035]I)初始化布隆過濾器BloomFilter ;
[0036]2)判斷集合EffectiveUrl是否為空,如果不為空則執(zhí)行3),否則執(zhí)行7);
[0037]3)從集合 EffectiveUrl 中取出一個(gè) Url ;
[0038]4)判斷Url是否在BloomFilter中,如果在則執(zhí)行2),否則執(zhí)行5);
[0039]5)通過HTTP請(qǐng)求抓取Url鏈接的網(wǎng)頁信息;
[0040]6)將 Url 保存到 BloomFilter 中,執(zhí)行 2);
[0041]7)結(jié)束。
[0042]本發(fā)明的有益效果:本發(fā)明有效鏈接獲取的網(wǎng)頁增量抓取方法,采用過濾無效鏈接獲取有效的網(wǎng)頁鏈接,并構(gòu)建布隆過濾器維持已抓取鏈接集合,通過隨機(jī)哈希判斷網(wǎng)頁是否抓取實(shí)現(xiàn)增量抓取。本發(fā)明通過過濾無效鏈接,避免無效網(wǎng)頁的抓取,提高抓取效率的同時(shí)也增加抓取信息的準(zhǔn)備率。此外,本發(fā)明采用增量抓取策略不但避免重復(fù)抓取,而且大幅提尚網(wǎng)頁抓取頻率。
【附圖說明】
:
[0043]圖1為本發(fā)明的流程圖。
[0044]圖2為有效鏈接獲取階段的流程圖。
[0045]圖3為增量抓取階段的結(jié)構(gòu)圖。
【具體實(shí)施方式】
:
[0046]為了更好的了解本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
[0047]圖1是本發(fā)明實(shí)施例的用于有效鏈接獲取的增量網(wǎng)頁抓取方法的流程圖,其包括兩個(gè)階段:有效鏈接獲取階段和增量抓取階段。
[0048]步驟O為本發(fā)明的起始狀態(tài);
[0049]在有效鏈接獲取階段(步驟1-4),步驟I是初始化抓取入口 URL鏈接,抓取程序從此逐層抓??;
[0050]步驟2通過匹配中入口 URL網(wǎng)頁中每個(gè)URL鏈接文本中是否為“下一頁”或“下頁”等分頁標(biāo)志判斷其是否有分頁;
[0051]步驟3通過比較入口 URL網(wǎng)頁中鏈接和其分頁網(wǎng)頁中鏈接,找出其公共鏈接;
[0052]步驟4將入口 URL網(wǎng)頁以及其分頁網(wǎng)頁中鏈接去掉步驟3中獲取的公共鏈接,獲取有效鏈接。
[0053]在增量抓取階段(步驟5、6),步驟5使用布隆過濾器維持已抓取鏈接集合,并通過隨機(jī)哈希快速判斷鏈接所指向網(wǎng)頁是否已抓??;
[0054]步驟6通過