亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種分布式爬蟲引擎的URL抓取方法及系統(tǒng)與流程

文檔序號:12465028閱讀:244來源:國知局
一種分布式爬蟲引擎的URL抓取方法及系統(tǒng)與流程

本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種分布式爬蟲引擎的URL抓取方法及系統(tǒng)。



背景技術(shù):

隨著互聯(lián)網(wǎng)信息爆炸式增長,用戶感興趣的信息淹沒于大量無關(guān)信息中,利用搜索引擎獲取感興趣的信息已經(jīng)成為人們獲取信息較為便捷的方式。作為搜索引擎基礎(chǔ)構(gòu)件之一的網(wǎng)絡(luò)爬蟲,需要直接面向互聯(lián)網(wǎng),不間斷的從互聯(lián)網(wǎng)上搜集信息,為搜索引擎提供數(shù)據(jù)來源。搜索的信息是否準(zhǔn)確均與網(wǎng)絡(luò)爬蟲緊密相關(guān)。然而互聯(lián)網(wǎng)規(guī)模十分龐大,網(wǎng)站數(shù)目眾多,網(wǎng)頁數(shù)量幾千億,如此海量的數(shù)據(jù)對網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)提出了更高的要求,構(gòu)件分布式網(wǎng)絡(luò)爬蟲系統(tǒng)是一個(gè)有效的解決方案。網(wǎng)絡(luò)爬蟲是一個(gè)機(jī)器人程序,它從指定URL地址開始下載頁面文檔,提取其中的URL地址,再從提取的URL地址開始繼續(xù)爬行。

傳統(tǒng)的分布式爬蟲引擎主要是主從式,即有一臺專門的主服務(wù)器來維護(hù)待抓取URL隊(duì)列,它負(fù)責(zé)每次將URL分發(fā)到不同的從服務(wù)器,而從服務(wù)器則負(fù)責(zé)實(shí)際的網(wǎng)頁抓取工作。主服務(wù)器除了維護(hù)待抓取URL隊(duì)列以及分發(fā)URL之外,還要負(fù)責(zé)調(diào)解各個(gè)從服務(wù)器的負(fù)載情況,以免某些從服務(wù)器過于清閑或者勞累。這種模式下,主服務(wù)器往往容易成為系統(tǒng)瓶頸。

在申請?zhí)枮?01210090259.0中國專利中,公開了一種分布式網(wǎng)絡(luò)爬蟲系統(tǒng)中URL去重方法,通過引入虛擬爬蟲結(jié)點(diǎn)實(shí)現(xiàn)了高效的任務(wù)劃分策略,從而更好的適應(yīng)分布式網(wǎng)絡(luò)爬蟲系統(tǒng)中實(shí)際爬行結(jié)點(diǎn)的動(dòng)態(tài)變化,在任務(wù)劃分策略基礎(chǔ)上使用一種分布式的URL去重方式,從而避免實(shí)際爬行結(jié)點(diǎn)變化過程中造成的重復(fù)爬行。該發(fā)明在任務(wù)劃分時(shí)變動(dòng)規(guī)模小,能保證爬蟲系統(tǒng)穩(wěn)定持久運(yùn)行,劃分策略具有動(dòng)態(tài)適應(yīng)性,能實(shí)現(xiàn)實(shí)際爬行結(jié)點(diǎn)的負(fù)載均衡,但是其無法解決高并發(fā)時(shí)爬蟲引擎抓取URL效率的問題。

在申請?zhí)枮?01210425213.X的中國專利中,公開了一種分布式網(wǎng)絡(luò)爬蟲的URL排重系統(tǒng)及方法,所述系統(tǒng)包括爬蟲采集子節(jié)點(diǎn),中心服務(wù)器及數(shù)據(jù)庫服務(wù)器。所述方法包括爬蟲采集子節(jié)點(diǎn)在中心服務(wù)器上進(jìn)行注冊;爬蟲采集子節(jié)點(diǎn)從數(shù)據(jù)庫等待隊(duì)列中獲取URL,從此URL獲取新的URL信息;爬蟲采集子節(jié)點(diǎn)對新獲取的URL進(jìn)行一級排重,如一級排重未通過,則放棄該URL;如一級排重通過,將新獲取的URL加入本地URL摘要表并發(fā)送給中心服務(wù)器;中心服務(wù)器對新獲取的URL進(jìn)行二級排重,如二級排重通過,將URL加入全局URL摘要表;爬蟲采集子節(jié)點(diǎn)將該URL的鏈接加入到等待隊(duì)列中。該發(fā)明提供的方法通過分級排重機(jī)制可以將原來集中在中心節(jié)點(diǎn)進(jìn)行的排重任務(wù)通過一級排重分解到各爬蟲采集子節(jié)點(diǎn),中心服務(wù)器通過二級排重的方式維護(hù)一張全局排重表格。上述方法無法解決高并發(fā)時(shí)爬蟲引擎抓取URL效率的問題以及無法解決分布式爬蟲任務(wù)負(fù)載均衡問題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于,提出一種能夠提高高并發(fā)時(shí)爬蟲引擎抓取URL效率并解決分布式爬蟲任務(wù)負(fù)載均衡的分布式爬蟲引擎的URL抓取方法及系統(tǒng),解決現(xiàn)有爬蟲引擎效率低,負(fù)載不均衡的問題。

為了實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案為:

一種分布式爬蟲引擎的URL抓取方法,包括如下步驟:

S100:采集URL任務(wù)并存儲(chǔ);

S200:基于網(wǎng)站哈希值的任務(wù)劃分策略,將具有相同域名的URL集合分配給同一爬取節(jié)點(diǎn)進(jìn)行爬取,并匯總爬取結(jié)果;

S300:將所爬取的URL任務(wù)所對應(yīng)的原始網(wǎng)頁進(jìn)行分布式并行聚類,去除噪聲URL任務(wù);

S400:消除去除噪聲后的URL任務(wù)內(nèi)重復(fù)的URL任務(wù)

S500:判斷已經(jīng)過消除重復(fù)的URL任務(wù)已抓取層數(shù)是否小于預(yù)設(shè)值,若是則返回步驟S300;若否則執(zhí)行步驟S600;

S600:將每一層抓取的URL任務(wù)對應(yīng)的原始網(wǎng)頁進(jìn)行合并。

在步驟S300中,在進(jìn)行分布式并行聚類之前還包括,應(yīng)用網(wǎng)頁的DOM樹結(jié)構(gòu)初步去除噪聲URL任務(wù),包括:

S301:利用<td>、<p>、<div>等html標(biāo)簽對頁面進(jìn)行分割,去掉一些與渲染相關(guān)但是同URL任務(wù)無關(guān)的標(biāo)簽;

S302:利用鏈接文字比率來對噪聲鏈接進(jìn)行定位,若節(jié)點(diǎn)的文字比率高于1/4則將該節(jié)點(diǎn)所在的鏈接判定為初始噪聲鏈接并去除。

在步驟S300中,所述分布式并行聚類,去除噪聲URL任務(wù)包括如下步驟:

S311:采用映射歸約方式對原始網(wǎng)頁進(jìn)行域名解析,進(jìn)行初步分塊;

S312:將各個(gè)塊進(jìn)行singlepass聚類,并采用映射歸約的方式將聚類結(jié)果分成多個(gè)族;

S313:依據(jù)已有噪聲樣本,應(yīng)用映射歸約方式將聚類結(jié)果的多個(gè)族進(jìn)行相似度計(jì)算,依據(jù)相似度值去除噪聲URL任務(wù);

S314:應(yīng)用映射歸約方式存儲(chǔ)去噪后的URL任務(wù)。

步驟S400中,所述消除爬取結(jié)果內(nèi)重復(fù)的URL任務(wù)包括:

S401:將所采集的URL任務(wù)加入到訪問列表中,記錄URL任務(wù)的訪問時(shí)間,并設(shè)置重復(fù)次數(shù)為1;

S402:將去除噪聲后的URL任務(wù)依次與訪問列表和緩存列表進(jìn)行比對,若在訪問列表或緩存列表中查詢到URL任務(wù),則放棄該URL任務(wù)并更新URL任務(wù)訪問時(shí)間及重復(fù)次數(shù);若未在訪問列表或緩存列表中查詢到URL任務(wù),則訪問所存儲(chǔ)的URL任務(wù);

S403:判斷所存儲(chǔ)的URL任務(wù)中是否存在所述URL任務(wù),若是則放棄該URL任務(wù),若否則更新訪問列表和URL任務(wù)集。

其中,在進(jìn)行分布式并行聚類過程中,所述相似度使用最大公共字串長度占兩個(gè)URL任務(wù)長度比例的均值度量。

本發(fā)明還公開一種分布式爬蟲引擎的URL抓取系統(tǒng),包括:

采集模塊,用于采集URL任務(wù)并存儲(chǔ);

分類模塊,用于基于網(wǎng)站哈希值的任務(wù)劃分策略,將具有相同域名的URL集合分配給同一爬取節(jié)點(diǎn)進(jìn)行爬取,并匯總爬取結(jié)果;

去噪模塊,用于將所爬取的URL任務(wù)所對應(yīng)的原始網(wǎng)頁進(jìn)行分布式并行聚類,去除噪聲URL任務(wù);

去重模塊,用于消除去除噪聲后的URL任務(wù)內(nèi)重復(fù)的URL任務(wù);

判斷模塊,用于判斷已經(jīng)過消除重復(fù)部分的URL任務(wù)已抓取層數(shù)是否小于預(yù)設(shè)值,若是則轉(zhuǎn)去噪模塊執(zhí)行,若否則轉(zhuǎn)合并模塊;

合并模塊,用于將每一層抓取的URL任務(wù)對應(yīng)的原始網(wǎng)頁進(jìn)行合并。

所述去噪模塊,在進(jìn)行分布式并行聚類之前還包括,應(yīng)用網(wǎng)頁的DOM樹結(jié)構(gòu)初步去除噪聲URL任務(wù),包括:

分割單元,用于利用<td>、<p>、<div>等html標(biāo)簽對頁面進(jìn)行分割,去掉一些與渲染相關(guān)但是同URL任務(wù)無關(guān)的標(biāo)簽;

比較單元,用于利用鏈接文字比率來對噪聲鏈接進(jìn)行定位,若節(jié)點(diǎn)的文字比率高于1/4則將該節(jié)點(diǎn)所在的鏈接判定為初始噪聲鏈接并去除。

所述去噪模塊進(jìn)行分布式并行聚類,去除噪聲URL任務(wù)包括:

分塊單元,用于采用映射歸約方式對原始網(wǎng)頁進(jìn)行域名解析,進(jìn)行初步分塊;

聚類單元,用于將各個(gè)塊進(jìn)行singlepass聚類,并采用映射歸約的方式將聚類結(jié)構(gòu)分成多個(gè)族;

計(jì)算單元,用于依據(jù)已有噪聲樣本,應(yīng)用映射歸約方式將聚類結(jié)果的多個(gè)族進(jìn)行相似度計(jì)算,依據(jù)相似度值去除噪聲URL任務(wù);

存儲(chǔ)單元,應(yīng)用映射歸約方式存儲(chǔ)去噪后的URL任務(wù)。

所述去重模塊,消除爬取結(jié)果內(nèi)重復(fù)的URL任務(wù)包括:

建立單元,用于將所采集的URL任務(wù)加入到訪問列表中,記錄URL任務(wù)的訪問時(shí)間,并設(shè)置重復(fù)次數(shù)為1;

匹配單元,用于將去除噪聲后的URL任務(wù)依次與訪問列表和緩存列表進(jìn)行比對,若在訪問列表或緩存列表中查詢到URL任務(wù),則放棄該URL任務(wù)并更新URL任務(wù)訪問時(shí)間及重復(fù)次數(shù);若未在訪問列表或緩存列表中查詢到URL任務(wù),則訪問所存儲(chǔ)的URL任務(wù);

查重單元,用于判斷所存儲(chǔ)的URL任務(wù)中是否存在所述URL任務(wù),若是則放棄該URL任務(wù),若否則更新訪問列表和URL任務(wù)集。

所述去噪模塊在進(jìn)行分布式并行聚類過程中,所述相似度使用最大公共字串長度占兩個(gè)URL任務(wù)長度比例的均值度量。

本發(fā)明的有益效果為:

一、將URL任務(wù)依據(jù)域名劃分給不同的爬取節(jié)點(diǎn),不同的爬取節(jié)點(diǎn)處理不同域名的URL任務(wù),減輕每一爬取節(jié)點(diǎn)的任務(wù)負(fù)載量;

二、各個(gè)爬取節(jié)點(diǎn)逐層對每一URL任務(wù)進(jìn)行處理,采用分布式并行聚類的方式將噪聲URL任務(wù)去除,并消除重復(fù)的URL任務(wù)。該方式實(shí)現(xiàn)了URL高效處理,解決高并發(fā)時(shí)爬蟲引擎抓取URL效率的問題,實(shí)現(xiàn)了各個(gè)節(jié)點(diǎn)負(fù)載均衡。

附圖說明

圖1為本發(fā)明一種分布式爬蟲引擎的URL抓取方法的方法流程圖;

圖2為本發(fā)明一種分布式爬蟲引擎的URL抓取系統(tǒng)的系統(tǒng)框圖。

附圖標(biāo)記為:

采集模塊-100,分類模塊-200,去噪模塊-300,去重模塊-400,判斷歐快-500,合并模塊-600。

具體實(shí)施方式

以下將結(jié)合附圖所示的具體實(shí)施方式對本發(fā)明進(jìn)行詳細(xì)描述。但這些實(shí)施方式并不限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員根據(jù)這些實(shí)施方式所做出的結(jié)構(gòu)、方法、或功能上的變換均包含在本發(fā)明的保護(hù)范圍內(nèi)。

Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計(jì)成適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn)。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS放寬了一部分POSIX約束,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。HDFS在最開始是作為Apache Nutch搜索引擎項(xiàng)目的基礎(chǔ)架構(gòu)而開發(fā)的。HDFS是Apache Hadoop Core項(xiàng)目的一部分。HDFS有著高容錯(cuò)性(fault-tolerant)的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以實(shí)現(xiàn)流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。

參閱圖1所示本發(fā)明公開一種分布式爬蟲引擎的URL抓取方法,其應(yīng)用HDFS文件系統(tǒng)進(jìn)行數(shù)據(jù)存儲(chǔ),包括如下步驟:

S100:采集URL任務(wù)并存儲(chǔ);在過程中,上傳URL種子到HDFS的in文件夾中,并設(shè)置已抓取層數(shù)為0,URL種子的上傳實(shí)現(xiàn)了URL任務(wù)的采集。

S200:基于網(wǎng)站哈希值的任務(wù)劃分策略,將具有相同域名的URL集合分配給同一爬取節(jié)點(diǎn)進(jìn)行爬取,并匯總爬取結(jié)果;

步驟S200中,調(diào)用CrawlerDriver函數(shù)抓取in文件夾中URL任務(wù)對應(yīng)的網(wǎng)頁,結(jié)果存放在HDFS中的doc文件夾中。所述CrawlerDriver函數(shù)執(zhí)行過程為:

從in文件夾中提取待抓取URL任務(wù),然后下載該URL任務(wù)對應(yīng)的原始網(wǎng)頁,存放到DOC文件夾下。原始網(wǎng)頁的存放方式為密鑰值為URL,屬性值為URL對應(yīng)的網(wǎng)頁HTML信息對。為了提高各個(gè)節(jié)點(diǎn)的爬取效率,采取基于網(wǎng)站哈希值的任務(wù)劃分策略,將具有相同域名的URL集合盡可能分配給同一爬取節(jié)點(diǎn)。

基于網(wǎng)站哈希值的任務(wù)劃分策略為:將待抓取的URL任務(wù)的域名部分計(jì)算其哈希值,然后將in文件中URL任務(wù)集合按照其哈希值分成不同的子集,每一個(gè)子集中的URL任務(wù)都交給同一個(gè)節(jié)點(diǎn)上的爬取節(jié)點(diǎn)依據(jù)映射歸約方式(map/reduce)中的map任務(wù)進(jìn)行爬取,再調(diào)用reduce任務(wù)把所有爬取節(jié)點(diǎn)上爬取的結(jié)果匯總到HDFS上。

S300:將所爬取的URL任務(wù)所對應(yīng)的原始網(wǎng)頁進(jìn)行分布式并行聚類,去除噪聲URL任務(wù);

在步驟S300中,可采用OptimizerDriver函數(shù)優(yōu)化所存放的URL任務(wù),由于網(wǎng)頁中存在大量的噪聲URL任務(wù),因此要對所存放的URL任務(wù)進(jìn)行聚類,結(jié)合利用網(wǎng)頁的DOM樹采集的噪聲樣本進(jìn)行噪聲URL任務(wù)的去除。

在步驟S300中,所述分布式并行聚類,去除噪聲URL任務(wù)包括如下步驟:

S311:采用映射歸約方式對原始網(wǎng)頁進(jìn)行域名解析,進(jìn)行初步分塊;

S312:將各個(gè)塊進(jìn)行singlepass聚類,并采用映射歸約的方式將聚類結(jié)果分成多個(gè)族;具體的,該步驟中,對每一個(gè)塊分別調(diào)用抓取節(jié)點(diǎn)上的映射任務(wù)(map任務(wù))進(jìn)行singlepass聚類,調(diào)用歸約任務(wù)(reduce任務(wù))將聚類的結(jié)果匯總。

S313:依據(jù)已有噪聲樣本,應(yīng)用映射歸約方式將聚類結(jié)果的多個(gè)族進(jìn)行相似度計(jì)算,依據(jù)相似度值去除噪聲URL任務(wù);在該過程中,對每個(gè)族依據(jù)相似度計(jì)算的結(jié)構(gòu)進(jìn)行判斷是否為噪聲URL,若同一族中的URL任務(wù)較其他URL任務(wù)相似度值偏差較大的則判定為噪聲URL并去除,然后調(diào)用reduce任務(wù)將去噪后的URL任務(wù)匯總到HDFS。

在聚類過程中用到的相似度使用最長公共子序列長度(Longest Common Subsequence,簡稱為LCS)占比較的兩個(gè)URL長度比例的均值來度量。兩個(gè)URL的LCS利用動(dòng)態(tài)規(guī)劃算法求解。轉(zhuǎn)移方程如下式所示:

其中,c[i,j]記錄字符序列Xi={x1,x2,..xi}和字符序列Yj={y1,y2,y3,...yj}的最長公共子序列的長度。這里Xi和Yj是需要比較的url1和url2的前i和j個(gè)字符序列。

LCS的具體計(jì)算過程如下:

上述步驟(2)中二維數(shù)組c[i][j]記錄url1序列Xi={x1,x2,..xi}和url2序列Yj={y1,y2,y3,...yj}的最長公共子序列的長度。步驟(4)~(9)是一個(gè)雙重循環(huán),隨著子序列Xi和Yi的遞增不斷地更新c[i][j]的值。循環(huán)結(jié)束后,url1和url2的最長公共子序列長度即為c[m,n]。LCS能夠較好地度量url之間的結(jié)構(gòu)相似度,適合求解大規(guī)模url相似度的計(jì)算。

通過計(jì)算比例均值,然后根據(jù)均值與設(shè)定的閾值進(jìn)行比較,判斷該族中是否存在噪聲URL任務(wù),其計(jì)算比例均值的方式如下:

S314:應(yīng)用映射歸約方式存儲(chǔ)去噪后的URL任務(wù)。

在步驟S300中,在進(jìn)行分布式并行聚類之前還包括,應(yīng)用網(wǎng)頁的DOM樹結(jié)構(gòu)初步去除噪聲URL任務(wù)。采用該方式能夠減小在聚類過程中數(shù)據(jù)處理量,提高數(shù)據(jù)處理效率,縮短數(shù)據(jù)處理時(shí)間。所述應(yīng)用網(wǎng)頁的DOM樹結(jié)構(gòu)初步去除噪聲URL任務(wù)的方式包括:

S301:利用<td>、<p>、<div>等html標(biāo)簽對頁面進(jìn)行分割,去掉一些與渲染相關(guān)但是同URL任務(wù)無關(guān)的標(biāo)簽;

步驟S301中,對頁面進(jìn)行清洗,去掉渲染包括CSS等相關(guān)內(nèi)容,利用利用<td>、<p>、<div>等html標(biāo)簽對頁面進(jìn)行分割,去掉一些與渲染相關(guān)但是同URL任務(wù)無關(guān)的標(biāo)簽,使得DOM樹的結(jié)構(gòu)清晰。

S302:利用鏈接文字比率來對噪聲鏈接進(jìn)行定位,若節(jié)點(diǎn)的文字比率高于1/4則將該節(jié)點(diǎn)所在的鏈接判定為初始噪聲鏈接并去除。

S400:消除去除噪聲后的URL任務(wù)內(nèi)重復(fù)的URL任務(wù);

該步驟中,消除所存儲(chǔ)的重復(fù)的URL任務(wù),保存至in文件夾中等待下一輪的抓取。

為了解決現(xiàn)有URL任務(wù)去重算法處理海量URL任務(wù)時(shí)存在的查找效率低下問題,優(yōu)選的采用基于緩存的URL任務(wù)去重策略,緩存系統(tǒng)中緩存類包含了兩個(gè)隊(duì)列:訪問列表及緩存列表,URL類包含了URL字符串、URL重復(fù)次數(shù)以及URL訪問時(shí)間三個(gè)字段,緩存列表中存放的URL任務(wù)隊(duì)列按照URL重復(fù)次數(shù)和訪問時(shí)間計(jì)算出來的權(quán)重從高到底的排列,權(quán)重的計(jì)算公式如下:

其中,rep表示重復(fù)次數(shù),t表示時(shí)間指標(biāo),t_current表示url的當(dāng)前訪問時(shí)間,t_init表示程序開始時(shí)設(shè)置的初始時(shí)間,min和max代表緩存列表中url的t1指標(biāo)的下界和上界。

這里,URL的重復(fù)次數(shù)越高,所占的權(quán)重越大。URL的訪問時(shí)間越接近當(dāng)前時(shí)間,則該URL越活躍,因此對其賦予的權(quán)重也越大。URL的重復(fù)次數(shù)高代表該URL是個(gè)常見的鏈接,在后續(xù)的判重操作中更可能遇到。這樣在進(jìn)行URL去重判斷操作過程中,能夠逐個(gè)排重,大大提升被命中的概率。緩存系統(tǒng)會(huì)隨時(shí)根據(jù)URL權(quán)重值的變化更新已訪問的URL任務(wù),URL任務(wù)去除重復(fù)的策略主要通過以下步驟完成:

S401:將所采集的URL任務(wù)加入到訪問列表中,記錄URL任務(wù)的訪問時(shí)間,并設(shè)置重復(fù)次數(shù)為1;

步驟S401中,爬蟲系統(tǒng)啟動(dòng)后,緩存系統(tǒng)首先完成隊(duì)列初始化工作,將in文件夾下URL任務(wù)加到訪問列表中,記錄其訪問時(shí)間,并設(shè)置重復(fù)次數(shù)為1;

S402:將去除噪聲后的URL任務(wù)依次與訪問列表和緩存列表進(jìn)行比對,若在訪問列表或緩存列表中查詢到URL任務(wù),則放棄該URL任務(wù)并更新URL任務(wù)訪問時(shí)間及重復(fù)次數(shù);若未在訪問列表或緩存列表中查詢到URL任務(wù),則訪問所存儲(chǔ)的URL任務(wù);

S403:判斷所存儲(chǔ)的URL任務(wù)中是否存在所述URL任務(wù),若是則放棄該URL任務(wù),若否則更新訪問列表和URL任務(wù)集。

步驟S403中,判斷緩存系統(tǒng)中是否存在所述URL任務(wù),若存在所述URL任務(wù),則放棄該URL任務(wù)并更新其訪問時(shí)間及重復(fù)次數(shù);若不存在所述URL任務(wù),則將該URL任務(wù)加入in文件夾下供下一輪抓取。

S500:判斷已經(jīng)過消除重復(fù)的URL任務(wù)已抓取層數(shù)是否小于預(yù)設(shè)值,若是則返回步驟S300;若否則執(zhí)行步驟S600;

S600:將每一層抓取的URL任務(wù)對應(yīng)的原始網(wǎng)頁進(jìn)行合并。

上述實(shí)施方式所述的一種分布式爬蟲引擎的URL抓取方法,將URL任務(wù)依據(jù)域名劃分給不同的爬取節(jié)點(diǎn),不同的爬取節(jié)點(diǎn)處理不同域名的URL任務(wù),減輕每一爬取節(jié)點(diǎn)的任務(wù)負(fù)載量。各個(gè)爬取節(jié)點(diǎn)逐層對每一URL任務(wù)進(jìn)行處理,采用分布式并行聚類的方式將噪聲URL任務(wù)去除,并消除重復(fù)的URL任務(wù)。該方式實(shí)現(xiàn)了URL高效處理,解決高并發(fā)時(shí)爬蟲引擎抓取URL效率的問題,實(shí)現(xiàn)了各個(gè)節(jié)點(diǎn)負(fù)載均衡。

參閱圖2所示,本發(fā)明的一實(shí)施方式還公開一種分布式爬蟲引擎的URL抓取系統(tǒng),包括:

采集模塊100,用于采集URL任務(wù)并存儲(chǔ);

分類模塊200,用于基于網(wǎng)站哈希值的任務(wù)劃分策略,將具有相同域名的URL集合分配給同一爬取節(jié)點(diǎn)進(jìn)行爬取,并匯總爬取結(jié)果;

去噪模塊300,用于將所爬取的URL任務(wù)所對應(yīng)的原始網(wǎng)頁進(jìn)行分布式并行聚類,去除噪聲URL任務(wù);

去重模塊400,用于消除去除噪聲后的URL任務(wù)內(nèi)重復(fù)的URL任務(wù);

判斷模塊500,用于判斷已經(jīng)過消除重復(fù)部分的URL任務(wù)已抓取層數(shù)是否小于預(yù)設(shè)值,若是則轉(zhuǎn)去噪模塊執(zhí)行,若否則轉(zhuǎn)合并模塊;

合并模塊600,用于將每一層抓取的URL任務(wù)對應(yīng)的原始網(wǎng)頁進(jìn)行合并。

上述實(shí)施方式中所述的一種分布式爬蟲引擎的URL抓取系統(tǒng),在一改進(jìn)的實(shí)施方式中所述去噪模塊,在進(jìn)行分布式并行聚類之前還包括,應(yīng)用網(wǎng)頁的DOM樹結(jié)構(gòu)初步去除噪聲URL任務(wù),包括:

分割單元,用于利用<td>、<p>、<div>等html標(biāo)簽對頁面進(jìn)行分割,去掉一些與渲染相關(guān)但是同URL任務(wù)無關(guān)的標(biāo)簽;

比較單元,用于利用鏈接文字比率來對噪聲鏈接進(jìn)行定位,若節(jié)點(diǎn)的文字比率高于1/4則將該節(jié)點(diǎn)所在的鏈接判定為初始噪聲鏈接并去除。

上述實(shí)施方式所述的一種分布式爬蟲引擎的URL抓取系統(tǒng),在一改進(jìn)實(shí)施方式中,所述去噪模塊進(jìn)行分布式并行聚類,去除噪聲URL任務(wù)包括:

分塊單元,用于采用映射歸約方式對原始網(wǎng)頁進(jìn)行域名解析,進(jìn)行初步分塊;

聚類單元,用于將各個(gè)塊進(jìn)行singlepass聚類,并采用映射歸約的方式將聚類結(jié)構(gòu)分成多個(gè)族;

計(jì)算單元,用于依據(jù)已有噪聲樣本,應(yīng)用映射歸約方式將聚類結(jié)果的多個(gè)族進(jìn)行相似度計(jì)算,依據(jù)相似度值去除噪聲URL任務(wù);

存儲(chǔ)單元,應(yīng)用映射歸約方式存儲(chǔ)去噪后的URL任務(wù)。

上述實(shí)施方式所述的一種分布式爬蟲引擎的URL抓取系統(tǒng),在一改進(jìn)的實(shí)施方式中,所述去重模塊消除爬取結(jié)果內(nèi)重復(fù)的URL任務(wù)包括:

建立單元,用于將所采集的URL任務(wù)加入到訪問列表中,記錄URL任務(wù)的訪問時(shí)間,并設(shè)置重復(fù)次數(shù)為1;

匹配單元,用于將去除噪聲后的URL任務(wù)依次與訪問列表和緩存列表進(jìn)行比對,若在訪問列表或緩存列表中查詢到URL任務(wù),則放棄該URL任務(wù)并更新URL任務(wù)訪問時(shí)間及重復(fù)次數(shù);若未在訪問列表或緩存列表中查詢到URL任務(wù),則訪問所存儲(chǔ)的URL任務(wù);

查重單元,用于判斷所存儲(chǔ)的URL任務(wù)中是否存在所述URL任務(wù),若是則放棄該URL任務(wù),若否則更新訪問列表和URL任務(wù)集。

上述實(shí)施方式中所述的一種分布式爬蟲引擎的URL抓取系統(tǒng),所述去噪模塊在進(jìn)行分布式并行聚類過程中,所述相似度使用最大公共字串長度占兩個(gè)URL任務(wù)長度比例的均值度量。

本發(fā)明實(shí)施方式中的分布式爬蟲引擎的URL抓取系統(tǒng)是基于分布式爬蟲引擎的URL抓取方法相對應(yīng)的系統(tǒng)實(shí)施例,分布式爬蟲引擎的URL抓取方法中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù)這里不再贅述。

應(yīng)當(dāng)理解,雖然本說明書按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個(gè)整體,各實(shí)施方式中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。

上文所列出的一系列的詳細(xì)說明僅僅是針對本發(fā)明的可行性實(shí)施方式的具體說明,它們并非用以限制本發(fā)明的保護(hù)范圍,凡未脫離本發(fā)明技藝精神所作的等效實(shí)施方式或變更均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1