專利名稱:用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及搜索引擎技術(shù)領(lǐng)域,特別是一種用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法。
背景技術(shù):
網(wǎng)絡(luò)機器人(Spider)是一種功能很強的WEB掃描程序。它從一個簡單的Web頁 面上開始執(zhí)行,在掃描Web頁面時通過其內(nèi)的超鏈接訪問其他頁面,因為Web頁面中廣泛使 用超鏈接,所以一個Spider程序理論上可以訪問互聯(lián)網(wǎng)上的所有Web頁面?;谝蛱鼐W(wǎng)的 搜索引擎是Spider程序的最早應(yīng)用。例如搜索巨頭Google公司,就利用Spider程序來遍 歷Web站點,以創(chuàng)建并維護這些大型數(shù)據(jù)庫。網(wǎng)絡(luò)機器人還可以通過掃描Web站點的主頁 來得到這個站點的文件清單和層次機構(gòu)。還可以掃描出中斷的超鏈接和拼寫錯誤等。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法,該算法不僅有 利于對所需的網(wǎng)頁進行精確抓取,而且算法設(shè)計合理,運行效果好。
本發(fā)明的技術(shù)方案是一種用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法,其特征在于 構(gòu)造等待隊列、處理隊列和完成隊列,然后按如下步驟進行步驟1:把待處理的URL加入所述等待隊列;步驟2 :判斷所述等待隊列中是否存在URL且收集的鏈接數(shù)量小于等于設(shè)定數(shù)量,如果 是從所述等待隊列取出一 URL送入處理隊列,打開所述URL指向的網(wǎng)頁并對所述網(wǎng)頁進行 解析,然后轉(zhuǎn)步驟3,否則程序結(jié)束;步驟3 :判斷所述網(wǎng)頁中是否包含超級鏈接,如果是轉(zhuǎn)步驟4,否則將所述網(wǎng)頁對應(yīng)的 URL從所述處理隊列取出并送入完成隊列,然后返回步驟2 ;步驟4 :判斷所述網(wǎng)頁中包含的超級鏈接是否都已處理完,如果是將所述網(wǎng)頁對應(yīng)的 URL從所述處理隊列取出并送入完成隊列,然后返回步驟2,否則查看所述網(wǎng)頁中包含的下 一個超級鏈接,并轉(zhuǎn)步驟5 ;步驟5:判斷所述超級鏈接是否指向網(wǎng)頁,如果是轉(zhuǎn)步驟6,否則報告所述超級鏈接為 外部鏈接,并返回步驟4;步驟6 :判斷所述超級鏈接指向的網(wǎng)頁是否為所需網(wǎng)頁且未訪問過且不存在所述等待 隊列中,如果是把所述超級鏈接加入等待隊列并更新收集的鏈接數(shù)量,然后返回步驟4,否 則直接返回步驟4。
本發(fā)明的有益效果是能夠在掃描Web頁面時,搜索其內(nèi)的超鏈接,并通過分析判 斷,精確獲取所需的超鏈接和對應(yīng)的網(wǎng)頁。此外,該算法程序設(shè)計合理,不僅耗費內(nèi)存少,而 且可以使用多線程技術(shù),可應(yīng)用于大型程序項目。
下面結(jié)合附圖及具體實施例對本發(fā)明作進一步的詳細說明。
圖1是本發(fā)明實施例的工作流程示意圖。
具體實施方式
本發(fā)明用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法,如圖1所示,構(gòu)造等待隊列、處理隊 列、錯誤隊列和完成隊列,然后按如下步驟進行步驟1:把待處理的URL加入所述等待隊列;步驟2 :判斷所述等待隊列中是否存在URL且收集的鏈接數(shù)量小于等于設(shè)定數(shù)量,如果 是從所述等待隊列取出一 URL送入處理隊列,打開所述URL指向的網(wǎng)頁并對所述網(wǎng)頁進行 解析,然后轉(zhuǎn)步驟3,否則程序結(jié)束;如果在解析網(wǎng)頁時出錯,將所述網(wǎng)頁對應(yīng)的URL從所述 處理隊列取出并送入錯誤隊列;步驟3 :判斷所述網(wǎng)頁中是否包含超級鏈接,如果是轉(zhuǎn)步驟4,否則將所述網(wǎng)頁對應(yīng)的 URL從所述處理隊列取出并送入完成隊列,然后返回步驟2 ;步驟4 :判斷所述網(wǎng)頁中包含的超級鏈接是否都已處理完,如果是將所述網(wǎng)頁對應(yīng)的 URL從所述處理隊列取出并送入完成隊列,然后返回步驟2,否則查看所述網(wǎng)頁中包含的下 一個超級鏈接,并轉(zhuǎn)步驟5 ;步驟5 :判斷所述超級鏈接是否指向網(wǎng)頁,如果是轉(zhuǎn)步驟6,否則報告所述超級鏈接為 外部鏈接,并返回步驟4;步驟6:判斷所述超級鏈接指向的網(wǎng)頁是否為所需網(wǎng)頁且未訪問過且不存在所述等待 隊列中,如果是把所述超級鏈接加入等待隊列并更新收集的鏈接數(shù)量,然后返回步驟4,否 則直接返回步驟4。
Internet是建立在很多相關(guān)協(xié)議基礎(chǔ)上的。Web建立在HTTP ( Hypertext Transfer Protocol )協(xié)議基礎(chǔ)上,而 HTTP 又是建立在 TCP/IP ( Transmission Control Protocol / Internet Protocol )協(xié)議之上,它同時也是一種Socket協(xié)議。所以網(wǎng)絡(luò)機 器人本質(zhì)上是一種基于Socket的網(wǎng)絡(luò)程序。
當(dāng)一個URL被加入到等待隊列中時,本發(fā)明實現(xiàn)的Spider程序就會開始運行。只 要等待隊列中有一個網(wǎng)頁或Spider程序正在處理一個網(wǎng)頁,程序就會繼續(xù)工作。當(dāng)?shù)却?列為空并且當(dāng)前沒有任何網(wǎng)頁正在處理時,Spider程序就會停止工作。
以上是本發(fā)明的較佳實施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作 用未超出本發(fā)明技術(shù)方案的范圍時,均屬于本發(fā)明的保護范圍。
權(quán)利要求
1.一種用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法,其特征在于構(gòu)造等待隊列、處理隊列和完成隊列,然后按如下步驟進行 步驟1:把待處理的URL加入所述等待隊列; 步驟2 :判斷所述等待隊列中是否存在URL且收集的鏈接數(shù)量小于等于設(shè)定數(shù)量,如果是從所述等待隊列取出一 URL送入處理隊列,打開所述URL指向的網(wǎng)頁并對所述網(wǎng)頁進行解析,然后轉(zhuǎn)步驟3,否則程序結(jié)束; 步驟3 :判斷所述網(wǎng)頁中是否包含超級鏈接,如果是轉(zhuǎn)步驟4,否則將所述網(wǎng)頁對應(yīng)的URL從所述處理隊列取出并送入完成隊列,然后返回步驟2 ; 步驟4 :判斷所述網(wǎng)頁中包含的超級鏈接是否都已處理完,如果是將所述網(wǎng)頁對應(yīng)的URL從所述處理隊列取出并送入完成隊列,然后返回步驟2,否則查看所述網(wǎng)頁中包含的下一個超級鏈接,并轉(zhuǎn)步驟5 ; 步驟5 :判斷所述超級鏈接是否指向網(wǎng)頁,如果是轉(zhuǎn)步驟6,否則報告所述超級鏈接為外部鏈接,并返回步驟4; 步驟6 :判斷所述超級鏈接指向的網(wǎng)頁是否為所需網(wǎng)頁且未訪問過且不存在所述等待隊列中,如果是把所述超級鏈接加入等待隊列并更新收集的鏈接數(shù)量,然后返回步驟4,否則直接返回步驟4。
2.根據(jù)權(quán)利要求1所述的用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法,其特征在于還構(gòu)造有錯誤隊列,如果在解析網(wǎng)頁時出錯,將所述網(wǎng)頁對應(yīng)的URL從所述處理隊列取出并送入錯誤隊列。
全文摘要
本發(fā)明涉及用于鏈接精確抓取的網(wǎng)絡(luò)機器人算法,包括以下步驟1)把URL加入等待隊列;2)判斷等待隊列中是否有URL且收集的鏈接數(shù)小于等于設(shè)定數(shù),是則打開URL指向的網(wǎng)頁,轉(zhuǎn)步驟3,否則程序結(jié)束;3)判斷網(wǎng)頁是否包含超鏈接,是則轉(zhuǎn)步驟4,否則將URL送入完成隊列,轉(zhuǎn)步驟2;4)判斷網(wǎng)頁包含的超鏈接是否已處理完,是則將URL送入完成隊列,轉(zhuǎn)步驟2,否則提取超鏈接,并轉(zhuǎn)步驟5;5)判斷超鏈接是否指向網(wǎng)頁,是則轉(zhuǎn)步驟6,否則轉(zhuǎn)步驟4;6)判斷指向的網(wǎng)頁是否為所需網(wǎng)頁且未訪問過且不存在隊列中,是則加入收集的鏈接隊列,否則轉(zhuǎn)步驟4。該算法有利于對所需的網(wǎng)頁進行精確抓取,且算法設(shè)計合理,運行效果好。
文檔編號G06F17/30GK103034732SQ20121057190
公開日2013年4月10日 申請日期2012年12月26日 優(yōu)先權(quán)日2012年12月26日
發(fā)明者陳志德, 許力 申請人:福建師范大學(xué)