麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種網頁鏈接庫的更新方法及系統的制作方法

文檔序號:6438476閱讀:289來源:國知局
專利名稱:一種網頁鏈接庫的更新方法及系統的制作方法
技術領域
本發明涉及互聯網領域,更具體的說,是涉及一種網頁鏈接庫的更新方法及系統。
背景技術
隨著互聯網的迅速發展,互聯網的網頁數量越來越龐大,互聯網網頁的收集也越來越重要,現有的網頁抓取方法,是根據一些初始鏈接集合出發,抓取這些初始鏈接的原始網頁并提取所述原始網頁上的新鏈接,并抓取所述新鏈接所指的網頁,如此不斷循環迭代抓取互聯網上的網頁。所述網頁抓取方法是基于網頁鏈接庫實現網頁抓取。所述網頁鏈接庫中存儲著各個鏈接以及各個鏈接的信息,所述信息包括各個鏈接對應的抓取狀態以及各個鏈接在所述網頁鏈接庫中的具體位置和鏈接的長度。在抓取網頁的過程中,原有被選取的初始鏈接的抓取狀態會發現改變,而且會不斷發現到新鏈接,所述初始鏈接的抓取狀態、新鏈接以及所述新鏈接的抓取狀態都需要更新到所述網頁鏈接庫中。所述鏈接的抓取狀態包括:鏈接的抓取時間、該鏈接的抓取次數、是否抓取成功以及該鏈接的簽名。所述鏈接的簽名是指將鏈接的統一資源定位符這個字符串按照一定的算法映射到一個64位無符號整型值。所述網頁鏈接庫中的鏈接是按照鏈接的簽名進行排序的,在對所述網頁鏈接庫進行更時,對不存在于所述網頁鏈接庫中的新鏈接,根據該新鏈接的簽名將其寫入所述網頁鏈接庫中,如果該新鏈接的簽名處于所述網頁鏈接庫中某兩個鏈接之間,則會將所述新鏈接插入到這兩個鏈接之間,并且其他鏈接的位置相應的向后移,這期間需要很長時間,甚至長達2、3個小時,導致了所述網頁鏈接庫更新效率低。

發明內容
有鑒于此,本發明提供了一種網頁鏈接庫的更新方法及系統,以克服現有技術中由于更新時間太長導致所述網頁鏈接庫更新效率低的問題。為實現上述目的,本發明提供如下技術方案:—種網頁鏈接庫的更新方法,所述網頁鏈接庫中各個鏈接是按照對應的抓取順序進行排序,包括步驟:A、獲取包括初始鏈接和新鏈接的待更新鏈接;B、判斷所述待更新鏈接是否屬于所述網頁鏈接庫,如果是,則進入步驟C,如果否,則進入步驟D ;C、根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態;D、按照與所述待更新鏈接對應的抓取順序,將所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。一種網頁鏈接庫的更新系統,所述網頁鏈接庫中各個鏈接是按照對應的抓取順序進行排序的,包括:
獲取模塊,用于獲取包括初始鏈接和新鏈接的待更新鏈接;判斷模塊,用于判斷所述待更新鏈接是否屬于所述網頁鏈接庫;第一更新模塊,用于在所述判斷模塊的判斷結果為是的情況下,根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態;第二更新模塊,用于在所述判斷模塊的判斷結果為否的情況下,按照與所述待更新鏈接對應的抓取順序,將所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。經由上述的技術方案可知,采用本發明實施例,首先獲取包括初始鏈接以及新鏈接的待更新鏈接,并對于各個待更新鏈接進行判斷,判斷所述待更新鏈接是否屬于所述網頁鏈接庫,如果是,則直接對所述網頁鏈接庫中對應的初始鏈接的初始抓取狀態進行更新,如果否,則將所述待更新鏈接更新至所述網頁鏈接庫中鏈接序列的最后,這樣所述待更新鏈接不會因為抓取順序在某兩個已存在于所述網頁鏈接庫中的鏈接之間,出現網頁鏈接庫中其他鏈接在所述網頁鏈接庫中的順序發生變化,而導致的更新效率低的問題,從而提高了所述網頁鏈接庫更新的效率。


為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。圖1為本發明實施例公開的第一種網頁鏈接庫更新方法流程圖;圖2為本發明實施例公開的第二種網頁鏈接庫更新方法流程圖;圖3為本發明實施例公開的第一種網頁鏈接庫的更新系統的結構示意圖;圖4為本發明實施例公開的第二種網頁鏈接庫的更新系統的結構示意圖。
具體實施例方式為了引用和清楚起見,下文中使用的技術名詞的說明、簡寫或縮寫總結如下:URL:Uniform/Universal Resource Locator,統一資源定位符。下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。實施例一請參閱附圖1,為本發明實施例公開第一種網頁鏈接庫更新方法流程圖,該實施例中的網頁鏈接庫中的各個鏈接是按照對應的抓取順序進行排序的。現有技術中的網頁鏈接庫包括定長文件以及變長文件,各個鏈接存儲在所述變長文件中,各個鏈接的抓取狀態、在變長文件中的位置以及長度存儲在所述定長文件中。所述變長文件中存儲的是鏈接等變長信息。所述定長文件是由一個個類或結構體的對象組成的,例如:對定長文件定義的結構體為ClinkData,那么定長文件就是一個ClinkData對象接一個ClinkData對象組成。如果需要增加鏈接的某個信息,就可以直接在所述結構體ClinkData中增加一個參數,例如,本發明實施例中可以在ClinkData中增加抓取順序這一變量。所述抓取順序可以為所述各個鏈接第一次的抓取時間,例如,第一個被抓取的鏈接的抓取順序排在所述網頁鏈接庫中鏈接序列的首位,第二被抓取的鏈接位于所述網頁鏈接庫中鏈接序列的第二位,如此類推。在實際應用中,根據不同的需求,也可以將所述第二個被抓取的鏈接置于所述網頁鏈接庫中鏈接序列的首位,當然,也可以是第三個被抓取的鏈接置于所述網頁鏈接庫中鏈接序列的首位,至于所述網頁鏈接庫中鏈接序列的首位是哪個鏈接不影響本發明的實現,所以本發明實施例不對其作具體限定。為了讓本領域技術人員更加清楚的理解所述抓取順序,再舉一個例子,所述抓取順序采用數值表示,只要處于所述網頁鏈接庫中各個鏈接對應數值是按照各個鏈接在所述網頁鏈接庫中的位置從小到大或從大到小排列均可。在實際應用中,根據實際情況的不同,所述抓取順序也可以采用字母表示,也可以按照字母與數字的組合表示。例如,1A2大于1B2。所述抓取順序變量就是表示鏈接在所述網頁鏈接庫中的位置。所述方法可以包括:步驟SlOl:獲取包括初始鏈接和新鏈接的待更新鏈接;所述鏈接可以為URL。現有的網頁抓取方法,首先從網頁鏈接庫中選取一些初始鏈接,抓取這些初始鏈接的原始網頁并提取所述原始網頁上的新鏈接,然后抓取所述新鏈接所指的網頁,如此不斷循環迭代抓取互聯網上的網頁。在每一個循環抓取互聯網上網頁的過程中,所述網頁鏈接庫中初始鏈接的抓取狀態會發生變化,而且會抓取到新鏈接,所以就需要對所述網頁鏈接庫中這些初始鏈接的初始抓取狀態進行更新,并且需要將本輪網頁抓取中抓取的新鏈接以及這些新鏈接的抓取狀態更新至所述網頁鏈接庫中,實際上對所述網頁鏈接庫的更新就是對其包括的所述定長文件以及變長文件的更新。在更新前首先需要獲取包括所述鏈接以及新鏈接的待更新鏈接。步驟S102:判斷所述待更新鏈接是否屬于所述網頁鏈接庫,如果是,則進入步驟S103,如果否,則進入步驟S104 ;具體的,可以根據所述待更新鏈接的抓取順序,來判斷所述待更新鏈接是否屬于所述網頁鏈接庫,例如,可以比較所述待更新鏈接的抓取順序與所述網頁鏈接庫中各個初始鏈接的抓取順序,如果相同,則表明一定存在;如果不同,可能存在于所述網頁鏈接庫中,也可能不存在,例如,在http://123.com網頁上,抓取到http://456.com,而在http://456.com上又抓取到http://123.com,這樣,按照新鏈接的定義:在本輪抓取網頁的過程中,不是從所述網頁鏈接庫中抓取的鏈接就屬于新鏈接,在http://456.com抓取的鏈接http://123.com是新鏈接,http://456.com也是新鏈接,然而,http://123.com在所述網頁鏈接庫中就存在的。如果所述抓取順序這個變量的類型為靜態變量,那么在生成一個鏈接對象之后,該對象的抓取順序變量值就為零,如果所述網頁鏈接庫中的各個鏈接是按照正序排列的,而最小的一個鏈接的抓取順序變量值為1,那么步驟S102具體的,還可以為判斷所述待更新鏈接的抓取順序這一變量的值是否大于零,如果是,則進入步驟S103,如果否,則進入步驟 S104。如果所述抓取順序這個變量的類型不是靜態變量,那么可以在步驟S102前包括步驟:將所述新鏈接的抓取順序這一變量的值設置為預設值。如果所述網頁鏈接庫中的各個鏈接是正序排列的,則所述預設值為小于所述網頁鏈接庫中各個鏈接對應的抓取順序這一變量的最小值。相應的,步驟S102具體為:判斷所述待更新鏈接的抓取順序這一變量的值是否大于所述預設值。如果所述網頁鏈接庫中的各個鏈接是倒序排列的,則所述預設值為大于所述網頁鏈接庫中各個鏈接對應的抓取順序這一變量的最大值。相應的,步驟S102具體為:判斷所述待更新鏈接的抓取順序這一變量的值是否小于所述預設值。步驟S103:根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態;具體的,可以通過所述待更新鏈接的抓取順序,計算出所述待更新鏈接在所述網頁鏈接庫中的位置;根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中所述位置的鏈接的初始抓取狀態。在網頁鏈接庫中的鏈接是由一個一個類或結構體的對象組成的,還以ClinkData為例,如果所述抓取順序這一變量的值是整數,將所述待更新鏈接的抓取順序變量值稱為A,所述網頁鏈接庫中鏈接序列中首位鏈接的抓取順序變量值稱為B,則可以通過公式:(I A-B I) *sizeof (ClinkData)(計算所述待更新鏈接的首地址,如果所述網頁鏈接庫中的各個鏈接是按照正序進行排列的,則可以去掉絕對值,如果是按照倒序進行排序的,則可以將A與B互換,然后去掉絕對值,如果不互換,則加上絕對值;如果所述抓取順序值為小數,例如,該小數的小數點后只有一位,則公式可以為:(IA-B |)*10*sizeof(Cl inkData),如果所述抓取順序這一變量的值為復數,則公式可以為:_ (IA-B I) *j*sizeof (ClinkData),或者
士 (M)2 *sizeof (ClinkData),如果所述抓取順序變量值為字符型,則可以先將字符型轉
換成數值,在通過上述公式進行計算,由于在已知抓取順序變量值以及每個鏈接的長度的情況下,計算該鏈接的首地址是現有技術,所以這里就不在贅述。步驟S104:按照與所述待更新鏈接對應的抓取順序,將所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。具體的,如果采用抓取順序變量值表示所述抓取順序,則將所述待更新鏈接的抓取順序變量值設置為已掃描的不存在于所述網頁鏈接庫中的待更新鏈接的抓取順序變量值與固定值之和;將設置后的所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值抓取順序變量值之差。所述固定值可以為正數也可以為負數,也就是說,鏈接在所述網頁鏈接庫中的排序可以是正序,也可以是倒序。還可以將所述待更新鏈接抓取順序變量值設置為已掃描的不存在于所述網頁鏈接庫中的待更新鏈接的抓取順序變量值與某個實數之積,所述實數可以根據實際情況而定。例如,如果所述網頁鏈接庫中的鏈接的抓取順序變量值以1.5倍遞增,那么所述實數可以為1.5,相應的,計算該待更新鏈接的首地址的公式要處以1.5。本發明實施例,由于所述網頁鏈接庫中的各個鏈接包括抓取順序,而所述網頁鏈接庫中的各個鏈接是按照與其對應的抓取順序進行排序的,當發現與所述新鏈接不存在于所述網頁鏈接庫中,可以利用所述抓取順序將所述新鏈接更新至所述網頁鏈接庫中鏈接序列的最后面,這樣所述新鏈接不會因為抓取順序在某兩個已存在于所述網頁鏈接庫中的鏈接之間,出現網頁鏈接庫中其他鏈接由于在所述網頁鏈接庫中的順序發生變化,而導致的更新效率低的問題,從而提高了所述網頁鏈接庫的效率。實施例二請參閱圖2,為本發明實施例公開的第二種網頁鏈接庫更新方法流程圖,該實施例中的網頁鏈接庫中的各個鏈接是按照對應的抓取順序進行排序的,該方法可以包括:步驟S201:獲取包括初始鏈接和新鏈接的待更新鏈接;步驟S202:將所述網頁鏈接庫中網頁的初始鏈接以及初始抓取狀態映射到內存中;實際上也就是將所述網頁鏈接庫中的定長文件映射到內存中,在映射到內存后,內存中的文件與所述定長文件的內容一樣。這樣做的目的是,只有將定長文件映射到內存中,才可以像操作數組一樣操作定長文件中各個鏈接對象,所述定長文件中的初始鏈接在進行更新時,才不會有由于所述對象的長度變化,導致其他鏈接對象在所述定長文件中的位置進行移動,例如,如果所述定長文件中某個初始鏈接的抓取狀態發生變化,在對其進行更新時,如果所述定長文件沒有映射到內存中,該鏈接對象長度可能會發生變化,從而導致后面的鏈接對象位置移動,從而導致所述網頁鏈接庫更新速度慢。而且在內存中操作速度要比直接在硬盤中快。在實際應用中,根據不同的情況,步驟S202可以在步驟S201之前,只是為了畫圖方便才規定了順序。步驟S203:根據所述待更新鏈接的規模在硬盤上生成緩存文件,將所述緩存文件映射到內存中,獲得第一內存映射文件;所述第一內存映射文件包括各個待更新鏈接以及各個待更新鏈接的抓取狀態。由于待更新鏈接的規模龐大,如果直接對硬盤中各個待更新鏈接進行掃描,速度會很慢,也會影響所述網頁鏈接庫的更新速度。本步驟也是一個優選的步驟,本實施例中可以沒有本步驟。在實際應用中,根據不同的情況,步驟S202可以位于步驟S203之后,只是為了畫圖方便才規定了順序。步驟S204:對于所述第一內存映射文件中的各個待更新鏈接,比較所述待更新鏈接的抓取順序變量值和所述預設值的大小,獲得所述新鏈接的集合以及所述初始鏈接的集合,根據所述新鏈接的簽名判斷所述新鏈接集合中的各個新鏈接是否屬于映射到內存中的初始鏈接,如果是,則進入步驟S205,如果否,則進入步驟S206 ;具體的,如果所述網頁鏈接庫中的鏈接序列是按照正序進行排序的,而且所述預設值是指小于所述網頁鏈接庫中已存在鏈接的抓取順序變量值的最小值,那么在所述待更新鏈接的抓取順序變量值大于所述預設值時,所述待更新鏈接為初始鏈接,如果所述網頁鏈接庫中的鏈接序列是按照倒序進行排序的,而且所述預設值是指大于所述網頁鏈接庫中已存在鏈接的抓取順序變量值的最大值,則在所述待更新鏈接的抓取順序變量值小于所述預設值時,所述待更新鏈接為初始鏈接。步驟S205:根據所述初始鏈接集合中的各個鏈接的當前抓取狀態更新映射到內存中的具有所述抓取順序的鏈接的初始抓取狀態;具體的,根據所述待更新鏈接的抓取順序,計算出所述待更新鏈接在映射到內存中該鏈接位于所述網頁鏈接庫中的首地址;根據所述待更新鏈接的當前抓取狀態更新所述內存中的所述首地址指向的鏈接的初始抓取狀態。步驟S206:根據所述新鏈接集合中各個新鏈接的簽名,判斷所述新鏈接是否屬于映射到內存中的初始鏈接,如果是,則進入步驟S210,如果否,則進入步驟S207 ;步驟S202是一個優選步驟,如果沒有本步驟也可以實現本發明的發明目的,如果沒有步驟S202,則步驟S205中的應更改為:根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態;步驟S206應更改為:根據所述新鏈接集合中各個新鏈接的簽名,判斷所述新鏈接是否屬于所述網頁鏈接庫中初始鏈接,如果是,則進入步驟S210,如果否,則進入步驟S207步驟S207:將所述新鏈接的抓取順序的變量值設置為:前一個不存在于所述網頁鏈接庫中的新鏈接對應的抓取順序變量值與固定值之和;所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值之差,可能為正直,也可能為負值。步驟S208:在處于所述第一映射文件中的各個待更新鏈接掃描結束后,將所述第一內存映射文件截斷,獲得第二內存映射文件,并將映射到內存的各個初始鏈接以及對應的當前抓取狀態同步到所述網頁鏈接庫中;因為上述步驟都是對映射到內存中的初始鏈接的抓取狀態進行的更新,而處于硬盤中的網頁鏈接庫沒有進行更新,所以在本輪抓取的所述待更新鏈接都結束后,在同步到硬盤中的網頁鏈接庫,硬盤中的網頁鏈接庫就是參與網頁抓取的鏈接庫。所述第二內存映射文件包括不存在于所述網頁鏈接庫中的所述各個待更新鏈接、不存在于所述網頁鏈接庫中的所述各個待更新鏈接的信息。所述信息包括:不存在于所述網頁鏈接庫中的所述各個待更新鏈接的抓取狀態,以及不存在于所述網頁鏈接庫中的所述各個待更新鏈接的長度及早變長文件中的位置。具體獲得第二內存映射的步驟可以為:在所述各個待更新鏈接掃描結束后,將所述第一內存映射文件截斷,獲得第三內存映射文件,所述第三映射文件包括不存在于所述網頁鏈接庫中的所述各個待更新鏈接,以及不存在于所述網頁鏈接庫中的所述各個待更新鏈接的抓取狀態;將所述第三內存映射文件中除抓取狀態外的信息寫入所述網頁鏈接庫中的原始變長文件,獲得更新后的變長文件;所述更新后的變長文件將所述第三內存映射文件中的各個鏈接在所述變長文件的位置以及對應鏈接的長度反饋給所述第四內存映射文件,獲得所述第二內存映射文件。步驟S209:根據所述第二內存映射文件更新所述網頁鏈接庫。具體的,可以將所述第二內存映射文件中的信息采用尾部追加的方式寫入所述網頁鏈接庫中。步驟S203是一個優選的步驟,本實施例中沒有本步驟也可以實現本發明的發明目的,如果沒有步驟S203,那么步驟S204中“對于所述第一內存映射文件中的各個待更新鏈接”應改為“對于所述網頁鏈接庫中的各個待更新鏈接”,步驟S207中“將所述新鏈接的抓取順序的變量值設置為:前一個不存在于所述網頁鏈接庫中的新鏈接對應的抓取順序變量值與固定值之和;”更改為“將所述新鏈接的抓取順序的變量值設置為:前一個不存在于所述網頁鏈接庫中的新鏈接對應的抓取順序變量值與固定值之和,并將所述新鏈接存儲至所述網頁鏈接庫中”,在去掉步驟S208以及步驟S209。步驟S210:跳過所述新鏈接。由于所述待更新鏈接存儲在所述網頁鏈接庫中,而且在上述步驟中,該鏈接已經以初始鏈接的身份對所述網頁鏈接庫中對應鏈接進行了更新,所以當所述新鏈接屬于所述網頁鏈接庫時,不對所述網頁鏈接庫進行處理,直接跳過。上述本發明公開的實施例中詳細描述了方法,對于本發明的方法可采用多種形式的裝置實現,因此本發明還公開了兩種系統,下面給出具體的實施例進行詳細說明。本發明實施例,除了具有實施例一中的有益效果外,首先將所述網頁鏈接庫中網頁的初始鏈接以及初始抓取狀態映射到內存中,后續步驟,都是對內存中的初始抓取狀態進行更新,最后在將內存中的初始抓取狀態同步到硬盤中的所述網頁鏈接庫中,由于對內存的操作速度比對硬盤中的文件進行操作的速度要快,所以增加了所述網頁鏈接庫的更新速度;其次,將所述待更新鏈接的規模在硬盤上生成緩存文件,將所述緩存文件映射到內存中,獲得第一內存映射文件,在掃描各個待更新鏈接時,都是從所述第一內存映射文件中掃描的,由于對內存的操作速度比對硬盤中的文件進行操作的速度要快,所以增加了所述網頁鏈接庫的更新速度;再次,本發明實施例是在所述第一映射文件中的各個待更新鏈接都掃描完畢后,才將掃描出的,不存在于所述網頁鏈接庫中的新鏈接更新至所述網頁鏈接庫中,而不是每掃描到一個不屬于所述網頁鏈接庫的新鏈接就更新至所述網頁鏈接庫中,這樣也加快了所述網頁鏈接庫的更新速度。實施例三請參閱圖3,為本發明實施例公開的第一種網頁鏈接庫的更新系統的結構示意圖,該系統中的網頁鏈接庫中各個鏈接是按照抓取順序進行排序的,該系統可以包括:獲取模塊301、判斷模塊302、第一更新模塊303以及第二更新模塊304,其中:所述獲取模塊301,用于獲取包括初始鏈接和新鏈接的待更新鏈接;所述判斷模塊302,用于判斷所述待更新鏈接是否屬于所述網頁鏈接庫;具體的,如果所述抓取順序變量類型為靜態變量,那么在生成一個鏈接對象之后,該對象的抓取順序變量值就為零,如果所述網頁鏈接庫中的各個鏈接是按照正序排列的,而最小的一個鏈接的抓取順序變量值為1,那么所述判斷模塊302,具體用于判斷所述待更新鏈接的抓取順序這一變量的值是否大于零。如果所述抓取順序這個變量的類型不是靜態變量,那么所述系統可以包括初始化模塊,用于將各個新鏈接對應的抓取順序變量值設置為預設值,所述預設值是指小于所述網頁鏈接庫中已存在鏈接的抓取順序變量值的最小值;相應的,所述判斷模塊302,具體用于判斷所述待更新鏈接的抓取順序變量值是否大于所述預設值。在實際應用中,所述網頁鏈接庫中的各個鏈接可以是倒序排列的,所述預設值為大于所述網頁鏈接庫中各個鏈接對應的抓取順序這一變量的最大值。相應的,所述判斷模塊302,具體用于判斷所述待更新鏈接的抓取順序這一變量的值是否小于所述預設值。所述第一更新模塊303,用于在所述判斷模塊302的判斷結果為是的情況下,根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態;所述第一更新模塊303具體包括:計算子模塊,用于根據所述待更新鏈接的抓取順序,計算出所述待更新鏈接在所述網頁鏈接庫中的位置;第一存儲子模塊,用于根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中鏈接的初始抓取狀態。所述第二更新模塊304,用于在所述判斷模塊302的判斷結果為否的情況下,按照與所述待更新鏈接對應的抓取順序,將所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。所述第二更新模塊具體包括:設置子模塊,用于將所述待更新鏈接的抓取順序變量值設置為已掃描的不存在于所述網頁鏈接庫中的待更新鏈接的抓取順序變量值與固定值之和,所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值之差,以及存儲子模塊,用于將設置后的所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。本發明實施例,由于所述網頁鏈接庫中的各個鏈接包括抓取順序,而所述網頁鏈接庫中的各個鏈接是按照與其對應的抓取順序進行排序的,當所述判斷模塊302發現與所述新鏈接不存在于所述網頁鏈接庫中,可以調用所述第二更新模塊304利用所述抓取順序將所述新鏈接更新至所述網頁鏈接庫中鏈接序列的最后面,這樣所述新鏈接不會因為抓取順序在某兩個已存在于所述網頁鏈接庫中的鏈接之間,就不會出現網頁鏈接庫中其他鏈接由于在所述網頁鏈接庫中的順序發生變化,而導致的更新效率低的問題,從而提高了所述網頁鏈接庫的效率。實施例四請參閱圖4,為本發明實施例公開的第二種網頁鏈接庫的更新系統的結構示意圖,該系統可以包括:獲取模塊301、第一映射模塊401、第二映射模塊402、判斷模塊302、第二存儲子模塊403、設置子模塊404、跳過子模塊405、截斷子模塊406、同步子模塊407以及第三存儲子模塊408,其中:所述獲取模塊301,用于獲取包括初始鏈接和新鏈接的待更新鏈接;所述第一映射模塊401,用于將所述網頁鏈接庫中的初始鏈接以及初始抓取狀態映射到內存中;所述第二映射模塊402,用于根據所述待更新鏈接的規模在硬盤上生成緩存文件,將所述緩存文件映射到內存中,獲得第一內存映射文件;所述第一內存映射文件包括各個待更新鏈接以及各個待更新鏈接的抓取狀態。所述判斷模塊302,具體包括:比較子模塊,用于比較所述待更新鏈接的抓取順序變量值與所述預設值的大小;獲取子模塊,用于根據所述比較子模塊的比較結果,獲得所述新鏈接的集合以及所述初始鏈接的集合,以及判斷子模塊,具體用于判斷所述新鏈接集合中的各個新鏈接是否屬于映射到內存中的初始鏈接;第二存儲子模塊403,用于根據所述判斷模塊302中獲取子模塊的獲取結果,以及判斷模塊302根據所述初始鏈接集合中的初始鏈接的當前抓取狀態更新所述內存中的所述首地址指向的鏈接的初始抓取狀態。設置子模塊404,用于在所述判斷模塊302中判斷子模塊的判斷結果為否的情況下,將所述新鏈接的抓取順序變量值設置為:前一個不存在于所述網頁鏈接庫中的新鏈接對應的抓取順序變量值與固定值之和,所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值之差;跳過子模塊405,用于在所述判斷模塊302中判斷子模塊的判斷結果為是的情況下,跳過所述新鏈接。截斷子模塊406,用于處于所述第一映射文件中的各個待更新鏈接掃描結束后,將所述第一內存映射文件截斷,獲得第二內存映射文件;所述第二內存映射文件包括不存在于所述網頁鏈接庫中的所述各個待更新鏈接、不存在于所述網頁鏈接庫中的所述各個待更新鏈接的抓取狀態以及不存在于所述網頁鏈接庫中的所述各個待更新鏈接在變長文件中的位置和所述鏈接的長度。同步子模塊407,用于處于所述第一映射文件中的各個待更新鏈接掃描結束后,將映射到內存的各個初始鏈接以及對應的當前抓取狀態同步到所述網頁鏈接庫中;第三存儲子模塊408,用于根據所述第二內存映射文件更新所述網頁鏈接庫。優選的,所述第三存儲模塊,具體用于將所述第二內存映射文件中的信息采用尾部追加的方式寫入所述網頁鏈接庫中。本發明實施例,除了具有實施例三中的有益效果外,首先所述第一映射模塊401將所述網頁鏈接庫中網頁的初始鏈接以及初始抓取狀態映射到內存中,后續都是對內存中的初始抓取狀態進行更新操作,最后在通過所述同步模塊407將內存中的初始抓取狀態同步到硬盤中的所述網頁鏈接庫中,由于對內存的操作速度比對硬盤中的文件進行操作的速度要快,所以增加了所述網頁鏈接庫的更新速度;其次,所述第二映射模塊402將所述待更新鏈接的規模在硬盤上生成緩存文件,將所述緩存文件映射到內存中,獲得第一內存映射文件,所述判斷模塊302在掃描各個待更新鏈接時,都是從所述第一內存映射文件中掃描的,由于對內存的操作速度比對硬盤中的文件進行操作的速度要快,所以增加了所述網頁鏈接庫的更新速度;再次,所述第二存儲模塊408在所述第一映射文件中的各個待更新鏈接都掃描完畢后,才將掃描出的,不存在于所述網頁鏈接庫中的新鏈接更新至所述網頁鏈接庫中,而不是每掃描到一個不屬于所述網頁鏈接庫的新鏈接就更新至所述網頁鏈接庫中,這樣也加快了所述網頁鏈接庫的更新速度。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設
備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,并不
排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術領域內所公知的任意其它形式的存儲介質中。對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
權利要求
1.一種網頁鏈接庫的更新方法,其特征在于,所述網頁鏈接庫中各個鏈接是按照對應的抓取順序進行排序,包括步驟: A、獲取包括初始鏈接和新鏈接的待更新鏈接; B、判斷所述待更新鏈接是否屬于所述網頁鏈接庫,如果是,則進入步驟C,如果否,則進入步驟D ; C、根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態; D、按照與所述待更新鏈接對應的抓取順序,將所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。
2.根據權利要求1所述方法,其特征在于,所述抓取順序采用抓取順序變量值表示,步驟D具體為: D11、將所述待更新鏈接的抓取順序變量值設置為已掃描的不存在于所述網頁鏈接庫中的待更新鏈接的抓取順序變量值與固定值之和,所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值之差; D12、將設置后的所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。
3.根據權利要求2所述方法,其特征在于,所述抓取順序變量值為靜態變量,所述預設值為零,所述步驟B具體為: 判斷所述待更新鏈接的抓取順序變量值是否大于零,如果是,則進入步驟C,如果否,則進入步驟D。
4.根據權利要求2所述方法,其特征在于,所述步驟A還包括: 將各個新鏈接對應的抓取順序變量值設置為預設值,所述預設值是指小于所述網頁鏈接庫中已存在鏈接的抓取順序變量值的最小值或指大于所述網頁鏈接庫中已存在鏈接的抓取順序變量值的最大值; 相應的,步驟B具體為: 通過比較所述待更新鏈接的抓取順序變量值和所述預設值的大小,獲得所述新鏈接的集合以及所述初始鏈接的集合,根據所述新鏈接的簽名判斷所述新鏈接集合中的各個新鏈接是否屬于所述網頁鏈接庫,如果是,則進入步驟C,如果否,則進入步驟D ; 相應的,在所述步驟C為:根據所述初始鏈接集合中各個初始鏈接的當前抓取狀態更新所述網頁鏈接庫中具有對應抓取順序的鏈接的初始抓取狀態,在所述新鏈接集合中的某一鏈接屬于所述網頁鏈接庫的情況下,則跳過所述新鏈接。
5.根據權利要求1所述方法,其特征在于,在所述步驟B前還包括: 將所述網頁鏈接庫中網頁的鏈接以及抓取狀態映射到內存中。
6.根據權利要5所述方法,其特征在于,所述步驟C具體為: Cl、根據所述待更新鏈接的抓取順序,計算出所述待更新鏈接在所述網頁鏈接庫中的位置; C2、根據所述待更新鏈接的當前抓取狀態更新所述內存中所述位置的鏈接的初始抓取狀態。
7.根據權利要求1所述方法,其特征在于,在所述步驟B前,還包括: 根據所述待更新鏈接的規模在硬盤上生成緩存文件,將所述緩存文件映射到內存中,獲得第一內存映射文件,所述第一內存映射文件包括各個待更新鏈接以及各個待更新鏈接的抓取狀態; 相應的,所述抓取順序所述步驟D具體為: D21、將所述待更新鏈接的抓取順序設置為:前一個不存在于所述網頁鏈接庫中的待更新鏈接對應的抓取順序與固定值之和,所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值之差; D22、在處于所述第一映射文件中的各個待更新鏈接掃描結束后,將所述第一內存映射文件截斷,獲得第二內存映射文件,所述第二內存映射文件包括不存在于所述網頁鏈接庫中的所述各個待更新鏈接、不存在于所述網頁鏈接庫中的所述各個待更新鏈接的信息,并將映射到內存的各個初始鏈接以及對應的當前抓取狀態同步到所述網頁鏈接庫中; D23、根據所述第二內存映射文件更新所述網頁鏈接庫。
8.根據權利要求7所述方法,其特征在于,所述步驟D3具體為: 將所述第二內存映射文件中的信息采用尾部追加的方式寫入所述網頁鏈接庫中。
9.一種網頁鏈接庫的更新系統,其特征在于,所述網頁鏈接庫中各個鏈接是按照對應的抓取順序進行排序的,包括: 獲取模塊,用于獲取包括初始鏈接和新鏈接的待更新鏈接; 判斷模塊,用于判斷 所述待更新鏈接是否屬于所述網頁鏈接庫; 第一更新模塊,用于在所述判斷模塊的判斷結果為是的情況下,根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態; 第二更新模塊,用于在所述判斷模塊的判斷結果為否的情況下,按照與所述待更新鏈接對應的抓取順序,將所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。
10.根據權利要求9所述系統,其特征在于,所述抓取順序采用抓取順序變量值表示,所述第二更新模塊具體包括: 設置子模塊,用于將所述待更新鏈接的抓取順序變量值設置為已掃描的不存在于所述網頁鏈接庫中的待更新鏈接的抓取順序變量值與固定值之和,所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值之差; 存儲子模塊,用于將設置后的所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。
11.根據權利要求10所述系統,其特征在于,所述抓取順序變量類型為靜態變量,所述預設值為零,相應的,所述判斷模塊,具體用于判斷所述待更新鏈接的抓取順序的抓取順序變量值是否大于零。
12.根據權利要求10所述系統,其特征在于,還包括: 初始化模塊,用于將各個新鏈接對應的抓取順序變量值設置為預設值,所述預設值是指小于所述網頁鏈接庫中已存在鏈接的抓取順序變量值的最小值; 相應的,所述判斷模塊,具體包括:比較子模塊,用于比較所述待更新鏈接的抓取順序變量值與所述預設值的大小;獲取子模塊,用于根據所述比較子模塊的比較結果,獲得所述新鏈接的集合以及所述初始鏈接的集合,以及判斷子模塊,用于判斷所述新鏈接集合中的各個新鏈接是否屬于所述網頁鏈接庫; 相應的,所述第一更新模塊,具體包括:第一存儲子模塊,用于根據所述初始鏈接集合中各個初始鏈接的當前抓取狀態更新所述網頁鏈接庫中具有對應抓取順序的鏈接的初始抓取狀態; 以及,跳過子模塊,用于在所述判斷子模塊的判斷結果為是的情況下,跳過所述新鏈接。
13.根據權利要求9所述系統,其特征在于,還包括: 第一映射模塊,用于將所述網頁鏈接庫中網頁的抓取狀態映射到內存中。
14.根據權利要求13所述系統,其特征在于,所述第一更新模塊具體包括: 計算子模塊,用于根據所述待更新鏈接的抓取順序,計算出所述待更新鏈接在所述網頁鏈接庫中的位置; 第二存儲子模塊,用于根據所述待更新鏈接的當前抓取狀態更新所述內存中的所述位置的鏈接的初始抓取狀態。
15.根據權利要求9所述系統,其特征在于,采用抓取順序變量表示所述抓取順序,所述系統還包括: 第二映射模塊,用于根據所述待更新鏈接的規模在硬盤上生成緩存文件,將所述緩存文件映射到內存中,獲得第一內存映射文件,所述第一內存映射文件包括各個待更新鏈接以及各個待更新鏈接的抓取狀態; 相應的,所述第二更新模塊,具體`包括: 設置子模塊,用于將所述待更新鏈接的抓取順序變量值設置為:前一個不存在于所述網頁鏈接庫中的待更新鏈接對應的抓取順序變量值與固定值之和,所述固定值是指所述網頁鏈接庫中兩個相鄰初始鏈接對應的抓取順序變量值之差; 截斷子模塊,用于處于所述第一映射文件中的各個待更新鏈接掃描結束后,將所述第一內存映射文件截斷,獲得第二內存映射文件,所述第二內存映射文件包括不存在于所述網頁鏈接庫中的所述各個待更新鏈接,以及不存在于所述網頁鏈接庫中的所述各個待更新鏈接的信息; 同步子模塊,用于將映射到內存的各個初始鏈接以及對應的當前抓取狀態同步到所述網頁鏈接庫中; 第三存儲子模塊,用于根據所述第二內存映射文件更新所述網頁鏈接庫。
16.根據權利要求15所述系統,其特征在于,所述第三存儲子模塊,具體用于將所述第二內存映射文件中的信息采用尾部追加的方式寫入所述網頁鏈接庫中。
全文摘要
本發明公開了一種網頁鏈接庫更新方法及系統,所述網頁鏈接庫中各個鏈接是按照對應的抓取順序進行排序,所述方法包括A、獲取包括初始鏈接和新鏈接的待更新鏈接;B、判斷所述待更新鏈接是否屬于所述網頁鏈接庫,如果是,則進入步驟C,如果否,則進入步驟D;C根據所述待更新鏈接的當前抓取狀態更新所述網頁鏈接庫中具有所述抓取順序的鏈接的初始抓取狀態;D、按照與所述待更新鏈接對應的抓取順序,將所述待更新鏈接更新至所述網頁鏈接庫中已有鏈接序列的后面。從而提高了所述網頁鏈接庫更新的效率。
文檔編號G06F17/30GK103106221SQ20111036206
公開日2013年5月15日 申請日期2011年11月15日 優先權日2011年11月15日
發明者陳華清, 于志偉, 呂晴 申請人:盛樂信息技術(上海)有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 松原市| 潮州市| 神农架林区| 德州市| 深圳市| 抚顺县| 永登县| 赣榆县| 南投县| 叶城县| 寻乌县| 志丹县| 南昌县| 乳山市| 留坝县| 乳源| 武义县| 梓潼县| 历史| 塔河县| 广宁县| 都兰县| 房山区| 凤阳县| 江陵县| 察雅县| 运城市| 夏津县| 东山县| 安塞县| 金昌市| 富平县| 沙坪坝区| 库车县| 道真| 巴彦淖尔市| 新宁县| 广东省| 庆元县| 宣化县| 高尔夫|