基于直線生成算法的爬蟲(chóng)方法及爬蟲(chóng)系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種基于直線生成算法的爬蟲(chóng)方法及爬蟲(chóng)系統(tǒng),爬蟲(chóng)方法包括以下步驟:S1、初始化URL索引;S2、采用直線生成算法進(jìn)行程序動(dòng)作打包;S3、使用參數(shù)構(gòu)造URL列表;S4、分析網(wǎng)頁(yè)頁(yè)面并進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。本發(fā)明通過(guò)將直線方程式算法運(yùn)用至網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu),可以提高爬蟲(chóng)的數(shù)據(jù)讀取速度,減少數(shù)據(jù)傳輸過(guò)程中的時(shí)間,提高搜索速度。
【專利說(shuō)明】基于直線生成算法的爬蟲(chóng)方法及爬蟲(chóng)系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于直線生成算法的爬蟲(chóng)方法及爬蟲(chóng)系統(tǒng)。
【背景技術(shù)】
[0002]在萬(wàn)維網(wǎng)飛速發(fā)展的網(wǎng)絡(luò)背景下,搜索引擎在人們的生活工作中無(wú)疑扮演著重要的角色,而網(wǎng)絡(luò)爬蟲(chóng)則是搜索引擎技術(shù)的最基礎(chǔ)部分。
[0003]在搜索引擎成為主流檢索工具的今天,互聯(lián)網(wǎng)上的網(wǎng)絡(luò)爬蟲(chóng)各式各樣,但爬蟲(chóng)爬取網(wǎng)頁(yè)的基本步驟大致相同:
[0004]I)人工給定一個(gè)URL (統(tǒng)一資源定位符)作為入口,從這里開(kāi)始爬取。
[0005]萬(wàn)維網(wǎng)的可視圖呈蝴蝶型,網(wǎng)絡(luò)爬蟲(chóng)一般從蝴蝶型左邊結(jié)構(gòu)出發(fā)。這里有一些門(mén)戶網(wǎng)站的主頁(yè),而門(mén)戶網(wǎng)站中包含大量有價(jià)值的鏈接。
[0006]2)用運(yùn)行隊(duì)列和完成隊(duì)列來(lái)保存不同狀態(tài)的鏈接。
[0007]對(duì)于大型數(shù)據(jù)量而言,內(nèi)存中的隊(duì)列是不夠的,通常采用數(shù)據(jù)庫(kù)模擬隊(duì)列。用這種方法既可以進(jìn)行海量的數(shù)據(jù)抓取,還可以擁有斷點(diǎn)續(xù)抓功能。
[0008]3)線程從運(yùn)行隊(duì)列讀取隊(duì)首URL,如果存在,則繼續(xù)執(zhí)行,反之則停止爬取。
[0009]4)每處理完一個(gè)URL,將其放入完成隊(duì)列,防止重復(fù)訪問(wèn)。
[0010]5)每次抓取網(wǎng)頁(yè)之后分析其中的URL (URL是字符串形式,功能類似指針),將經(jīng)過(guò)過(guò)濾的合法鏈接寫(xiě)入運(yùn)行隊(duì)列,等待提取。
[0011]6)重復(fù)步驟 3)、4)、5)。
[0012]傳統(tǒng)的爬蟲(chóng)邏輯的算法流程圖如圖1所示,通過(guò)傳統(tǒng)的爬蟲(chóng)邏輯與算法,效率十分低下,運(yùn)行過(guò)程中也存在著占內(nèi)存的問(wèn)題。
【發(fā)明內(nèi)容】
[0013]本發(fā)明要解決的技術(shù)問(wèn)題是為了克服現(xiàn)有技術(shù)中傳統(tǒng)的爬蟲(chóng)邏輯與算法效率低下、運(yùn)行過(guò)程中占內(nèi)存的缺陷,提供一種基于直線生成算法的爬蟲(chóng)方法及爬蟲(chóng)系統(tǒng)。
[0014]本發(fā)明是通過(guò)下述技術(shù)方案來(lái)解決上述技術(shù)問(wèn)題的:
[0015]本發(fā)明提供了一種基于直線生成算法的爬蟲(chóng)方法,其特點(diǎn)在于,包括以下步驟:
[0016]S1、初始化URL索引;
[0017]S2、采用直線生成算法進(jìn)行程序動(dòng)作打包;
[0018]S3、使用參數(shù)構(gòu)造URL列表;
[0019]S4、分析網(wǎng)頁(yè)頁(yè)面并進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
[0020]較佳地,步驟S2包括:
[0021]S21、將網(wǎng)頁(yè)數(shù)據(jù)虛擬為二維坐標(biāo)系中的數(shù)據(jù)點(diǎn);
[0022]S22、選定一 URL生成點(diǎn)及一數(shù)據(jù)結(jié)束點(diǎn);
[0023]S23、采用直線生成算法在所述URL生成點(diǎn)及所述數(shù)據(jù)結(jié)束點(diǎn)之間虛擬一條直線;
[0024]步驟S4中基于步驟S 23中虛擬出的直線進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
[0025]較佳地,所述直線生成算法為兩步算法。
[0026]本發(fā)明的目的在于還提供了一種基于直線生成算法的爬蟲(chóng)系統(tǒng),其特點(diǎn)在于,包括:
[0027]—初始化模塊,用于初始化URL索引;
[0028]一打包模塊,用于采用直線生成算法進(jìn)行程序動(dòng)作打包;
[0029]一列表構(gòu)造模塊,用于使用參數(shù)構(gòu)造URL列表;
[0030]一抓取模塊,用于分析網(wǎng)頁(yè)頁(yè)面并進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
[0031]較佳地,所述打包模塊包括一數(shù)據(jù)點(diǎn)虛擬單元、一數(shù)據(jù)點(diǎn)選定單元以及一直線虛擬單元;所述數(shù)據(jù)點(diǎn)虛擬單元用于將網(wǎng)頁(yè)數(shù)據(jù)虛擬為二維坐標(biāo)系中的數(shù)據(jù)點(diǎn),所述數(shù)據(jù)點(diǎn)選定單元用于選定一 URL生成點(diǎn)及一數(shù)據(jù)結(jié)束點(diǎn),所述直線虛擬單元用于采用直線生成算法在所述URL生成點(diǎn)及所述數(shù)據(jù)結(jié)束點(diǎn)之間虛擬一條直線;
[0032]所述抓取單元用于基于所述直線虛擬單元虛擬出的直線進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
[0033]較佳地,所述直線生成算法為兩步算法。
[0034]本發(fā)明的積極進(jìn)步效果在于:本發(fā)明通過(guò)將直線方程式算法運(yùn)用至網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu),可以提高爬蟲(chóng)的數(shù)據(jù)讀取速度,減少數(shù)據(jù)傳輸過(guò)程中的時(shí)間,提高搜索速度。
【專利附圖】
【附圖說(shuō)明】
[0035]圖1為傳統(tǒng)的爬蟲(chóng)邏輯的算法流程圖。
[0036]圖2為本發(fā)明一實(shí)施例的基于直線生成算法的爬蟲(chóng)方法的流程圖。
[0037]圖3為本發(fā)明一實(shí)施例的基于直線生成算法的爬蟲(chóng)方法中程序動(dòng)作打包步驟的流程圖。
[0038]圖4為本發(fā)明一實(shí)施例的基于直線生成算法的爬蟲(chóng)方法中直線在點(diǎn)陣設(shè)備上的示意圖。
[0039]圖5為本發(fā)明一實(shí)施例的基于直線生成算法的爬蟲(chóng)方法中兩步算法的示意圖。
[0040]圖6為本發(fā)明一實(shí)施例的基于直線生成算法的爬蟲(chóng)系統(tǒng)的模塊示意圖。
【具體實(shí)施方式】
[0041]下面通過(guò)實(shí)施例的方式進(jìn)一步說(shuō)明本發(fā)明,但并不因此將本發(fā)明限制在所述的實(shí)施例范圍之中。
[0042]如圖2所示,本發(fā)明的基于直線生成算法的爬蟲(chóng)方法包括以下步驟:
[0043]步驟101、初始化URL索引。
[0044]步驟102、采用直線生成算法進(jìn)行程序動(dòng)作打包。
[0045]步驟103、使用參數(shù)構(gòu)造URL列表。
[0046]步驟104、分析網(wǎng)頁(yè)頁(yè)面并進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
[0047]如圖3所示,程序動(dòng)作打包步驟具體包括:
[0048]步驟1021、將網(wǎng)頁(yè)數(shù)據(jù)虛擬為二維坐標(biāo)系中的數(shù)據(jù)點(diǎn)。
[0049]步驟1022、選定一 URL生成點(diǎn)及一數(shù)據(jù)結(jié)束點(diǎn)。
[0050]步驟1023、采用直線生成算法在所述URL生成點(diǎn)及所述數(shù)據(jù)結(jié)束點(diǎn)之間虛擬一條直線。
[0051]而在步驟104中則基于步驟1023中虛擬出的直線進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
[0052]在本發(fā)明中將直線生成算法運(yùn)用到了網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu)中,在數(shù)學(xué)范疇內(nèi)的直線是由沒(méi)有寬度的點(diǎn)組成的集合,但是在計(jì)算機(jī)圖形學(xué)的范疇內(nèi),所有的圖形包括直線都是輸出或顯示在點(diǎn)陣設(shè)備上的,被成為點(diǎn)陣圖形或光柵圖形。以顯示器為例,現(xiàn)實(shí)中常見(jiàn)的顯示器(包括CRT (陰極射線管)顯示器和液晶顯示器)都可以看成由各種顏色和灰度值的像素點(diǎn)組成的象素矩陣,這些點(diǎn)是有大小的,而且位置固定,因此只能近似的顯示各種圖形,直線在點(diǎn)陣設(shè)備上的表現(xiàn)形式參見(jiàn)圖4。
[0053]計(jì)算機(jī)圖形學(xué)中的直線生成算法,其實(shí)包含了兩層意思,一層是在解析幾何空間中根據(jù)坐標(biāo)構(gòu)造出平面直線,另一層就是在光柵顯示器之類的點(diǎn)陣設(shè)備上輸出一個(gè)最逼近于圖形的象素直線,而這就是常說(shuō)的光柵圖形掃描轉(zhuǎn)換。本發(fā)明中的直線生成算法具體為兩步算法,兩步算法是在生成直線的過(guò)程中,每次判斷都生成兩個(gè)點(diǎn)的直線生成算法,本實(shí)施例的兩步算法的示意圖具體參見(jiàn)圖5,以圖5為例,首先將網(wǎng)頁(yè)數(shù)據(jù)虛擬為相應(yīng)的坐標(biāo)點(diǎn)(即圖5中的P、A、B、C、D、E),其中默認(rèn)P點(diǎn)為URL生成點(diǎn),E點(diǎn)為數(shù)據(jù)結(jié)束點(diǎn),若按照傳統(tǒng)的爬蟲(chóng)邏輯,需要依次從點(diǎn)對(duì)點(diǎn)判斷邏輯并進(jìn)行索引抓取,具體路徑為以下幾種情況:
[0054]UP-A-B-C-E
[0055]2、P-A-D-C-E
[0056]3、P-A-B-C-D-E
[0057]4、P-A-D-E
[0058]以上幾種情況為原始的爬蟲(chóng)邏輯,可見(jiàn)采用傳統(tǒng)的爬蟲(chóng)邏輯需要依次遍歷各個(gè)點(diǎn),效率低且占內(nèi)存。
[0059]而本發(fā)明的直線生成算法則可以在P點(diǎn)和E點(diǎn)之間虛擬出一條直線,或者在點(diǎn)與點(diǎn)之間虛擬直線,通過(guò)線連接點(diǎn)的方式減少運(yùn)算步驟,增加運(yùn)算效率。本發(fā)明的具體路徑依次如下:
[0060]UP-E[0061 ] 2、P-B-E
[0062]3、P-D-E......
[0063]本實(shí)施例還要求保護(hù)一種基于直線生成算法的爬蟲(chóng)系統(tǒng),如圖6所示,所述爬蟲(chóng)系統(tǒng)包括一初始化模塊1、一打包模塊2、一列表構(gòu)造模塊3及一抓取模塊4,所述初始化模塊I用于初始化URL索引;所述打包模塊2用于采用直線生成算法進(jìn)行程序動(dòng)作打包;所述列表構(gòu)造模塊3用于使用參數(shù)構(gòu)造URL列表;所述抓取模塊4用于分析網(wǎng)頁(yè)頁(yè)面并進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。其中,所述打包模塊2包括一數(shù)據(jù)點(diǎn)虛擬單元21、一數(shù)據(jù)點(diǎn)選定單元22以及一直線虛擬單元23 ;所述數(shù)據(jù)點(diǎn)虛擬單元21用于將網(wǎng)頁(yè)數(shù)據(jù)虛擬為二維坐標(biāo)系中的數(shù)據(jù)點(diǎn),所述數(shù)據(jù)點(diǎn)選定單元22用于選定一 URL生成點(diǎn)及一數(shù)據(jù)結(jié)束點(diǎn),所述直線虛擬單元23用于采用直線生成算法在所述URL生成點(diǎn)及所述數(shù)據(jù)結(jié)束點(diǎn)之間虛擬一條直線;所述抓取單元4則基于所述直線虛擬單元23虛擬出的直線進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。其中,所述直線生成算法為兩步算法。
[0064]雖然以上描述了本發(fā)明的【具體實(shí)施方式】,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說(shuō)明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書(shū)限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對(duì)這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種基于直線生成算法的爬蟲(chóng)方法,其特征在于,包括以下步驟: 51、初始化URL索引; 52、采用直線生成算法進(jìn)行程序動(dòng)作打包; 53、使用參數(shù)構(gòu)造URL列表; 54、分析網(wǎng)頁(yè)頁(yè)面并進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
2.如權(quán)利要求1所述的爬蟲(chóng)方法,其特征在于,步驟S2包括: 521、將網(wǎng)頁(yè)數(shù)據(jù)虛擬為二維坐標(biāo)系中的數(shù)據(jù)點(diǎn); 522、選定一URL生成點(diǎn)及一數(shù)據(jù)結(jié)束點(diǎn); 523、采用直線生成算法在所述URL生成點(diǎn)及所述數(shù)據(jù)結(jié)束點(diǎn)之間虛擬一條直線; 步驟S4中基于步驟S23中虛擬出的直線進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
3.如權(quán)利要求2所述的爬蟲(chóng)方法,其特征在于,所述直線生成算法為兩步算法。
4.一種基于直線生成算法的爬蟲(chóng)系統(tǒng),其特征在于,包括: 一初始化模塊,用于初始化URL索引; 一打包模塊,用于采用直線生成算法進(jìn)行程序動(dòng)作打包; 一列表構(gòu)造模塊,用于使用參數(shù)構(gòu)造URL列表; 一抓取模塊,用于分析網(wǎng)頁(yè)頁(yè)面并進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
5.如權(quán)利要求4所述的爬蟲(chóng)系統(tǒng),其特征在于,所述打包模塊包括一數(shù)據(jù)點(diǎn)虛擬單元、一數(shù)據(jù)點(diǎn)選定單元以及一直線虛擬單元;所述數(shù)據(jù)點(diǎn)虛擬單元用于將網(wǎng)頁(yè)數(shù)據(jù)虛擬為二維坐標(biāo)系中的數(shù)據(jù)點(diǎn),所述數(shù)據(jù)點(diǎn)選定單元用于選定一 URL生成點(diǎn)及一數(shù)據(jù)結(jié)束點(diǎn),所述直線虛擬單元用于采用直線生成算法在所述URL生成點(diǎn)及所述數(shù)據(jù)結(jié)束點(diǎn)之間虛擬一條直線; 所述抓取單元用于基于所述直線虛擬單元虛擬出的直線進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)抓取。
6.如權(quán)利要求5所述的爬蟲(chóng)系統(tǒng),其特征在于,所述直線生成算法為兩步算法。
【文檔編號(hào)】G06F17/30GK104462580SQ201410839970
【公開(kāi)日】2015年3月25日 申請(qǐng)日期:2014年12月24日 優(yōu)先權(quán)日:2014年12月24日
【發(fā)明者】鄭小龍, 梅蓓 申請(qǐng)人:攜程計(jì)算機(jī)技術(shù)(上海)有限公司