專利名稱:用于抓取網(wǎng)絡(luò)商城中網(wǎng)頁(yè)的爬蟲算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)頁(yè)搜索技術(shù)領(lǐng)域,特別是一種用于抓取網(wǎng)絡(luò)商城中網(wǎng)頁(yè)的爬蟲算法。
背景技術(shù):
網(wǎng)絡(luò)商城是以互聯(lián)網(wǎng)為運(yùn)營(yíng)載體,依托互聯(lián)網(wǎng)資源,利用電子商務(wù)的各種手段,達(dá)成從買到賣的過程的虛擬商店,從而減少中間環(huán)節(jié),消除運(yùn)輸成本和代理中間的差價(jià),造就對(duì)普通消費(fèi)和加大市場(chǎng)流通帶來巨大的發(fā)展空間。
網(wǎng)絡(luò)商城24小時(shí)都可以進(jìn)行商品的瀏覽與購(gòu)買,工作時(shí)間可以隨時(shí)與客服進(jìn)行交流,解決購(gòu)物中遇到的困難;其信息量大,能夠讓顧客更多的了解,增加了選擇的空間; 其客戶無限,全球的任何人都可以通過Internet訪問,不受空間限制;其服務(wù)優(yōu)質(zhì),不但可以完成普通商店可以進(jìn)行的所有交易,同時(shí)它還可以通過多媒體技術(shù)為用戶提供更加全面的商品信息;其成本低廉,由于省去了店面費(fèi)用,所以總體的成本降低很多,所以表現(xiàn)在消費(fèi)品上的價(jià)格也會(huì)相對(duì)傳統(tǒng)店面便宜很多。同時(shí)因?yàn)槭谴笈咳∝浐蠓咒N的形式,所以價(jià)格優(yōu)勢(shì)比較明顯。
網(wǎng)絡(luò)商城雖然有其優(yōu)勢(shì)的地方,但是也有其劣勢(shì)。網(wǎng)上商店對(duì)貨物的描述很具有迷惑性,主要在于顧客無法直接看到和觸摸到商品,全憑店主的描述來購(gòu)物。顧客無法判斷貨物是否從正規(guī)渠道而來,或者是否為正品。若為仿制品,消費(fèi)者的維權(quán)之路往往很漫長(zhǎng)。 網(wǎng)上商店對(duì)賣家的審核往往有很大的局限性,也會(huì)導(dǎo)致假冒偽劣產(chǎn)品泛濫。長(zhǎng)期下來會(huì)引發(fā)大量對(duì)網(wǎng)上商店的負(fù)面評(píng)論,影響網(wǎng)上商店的長(zhǎng)遠(yuǎn)發(fā)展。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種用于抓取網(wǎng)絡(luò)商城中網(wǎng)頁(yè)的爬蟲算法,該算法有利于對(duì)網(wǎng)絡(luò)商城中與主題相關(guān)的網(wǎng)頁(yè)進(jìn)行精確抓取,而且算法設(shè)計(jì)合理,運(yùn)行效果好。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是一種用于抓取網(wǎng)絡(luò)商城中網(wǎng)頁(yè)的爬蟲算法,包括以下步驟步驟I:設(shè)置抓取的寬度、深度以及總數(shù),所述寬度表示不相關(guān)頁(yè)面鏈接允許訪問的數(shù)目,所述深度表示還可以沿著鏈接繼續(xù)往前訪問的深度,所述總數(shù)表示訪問網(wǎng)頁(yè)總數(shù)上限值S ;輸入初始鏈接;步驟2 :建立url隊(duì)列,所述url隊(duì)列用于存儲(chǔ)要爬取的初始鏈接,將url種子集添加到所述url隊(duì)列中;可以把若干網(wǎng)上商城的域名作為url的入口,得到所述url種子集; 步驟3 :若訪問頁(yè)面數(shù)小于訪問網(wǎng)頁(yè)總數(shù)上限值S,或者url隊(duì)列的長(zhǎng)度不為零,即url 隊(duì)列不為空,則根據(jù)所述初始鏈接下載對(duì)應(yīng)的頁(yè)面,否則結(jié)束;步驟4 :抽取被新爬取到的鏈接到list隊(duì)列中,并計(jì)算頁(yè)面與主題的相關(guān)度,然后保存下載到的頁(yè)面;所述list隊(duì)列用于存儲(chǔ)爬取到的鏈接;步驟5 :判斷頁(yè)面的深度,若頁(yè)面的深度大于零,則執(zhí)行步驟6,否則返回步驟3 ; 步驟6:判斷頁(yè)面是否與主題相關(guān),若與主題相關(guān),則增加所述頁(yè)面前向鏈接的鏈接值,否則降低所述頁(yè)面前向鏈接的鏈接值;
步驟7 :判斷url是否在list隊(duì)列中,若在list隊(duì)列中,則執(zhí)行步驟8,否則返回到步驟3;
步驟8 :判斷url是否在url隊(duì)列中,若在url隊(duì)列中,比較url隊(duì)列的相關(guān)系數(shù)和list隊(duì)列的相關(guān)系數(shù)的大小,兩者中較大的取代url隊(duì)列中的相關(guān)系數(shù);否則按照相關(guān)系數(shù)的大小插入到url隊(duì)列中;
步驟9 :若當(dāng)前頁(yè)面相關(guān),則深度為depth (page),否則深度為depth (page) -1,depth (page)指當(dāng)前頁(yè)面的深度;
步驟10 :從list隊(duì)列中取出下一條url,然后從步驟7開始執(zhí)行;
步驟11 :算法結(jié)束,輸出主題相關(guān)網(wǎng)頁(yè)。本發(fā)明的有益效果是能夠根據(jù)輸入的網(wǎng)絡(luò)商城初始鏈接,在網(wǎng)絡(luò)商城中對(duì)與主題相關(guān)的網(wǎng)頁(yè)進(jìn)行搜索、判斷,進(jìn)而實(shí)現(xiàn)對(duì)主題相關(guān)網(wǎng)頁(yè)的精確抓取。此外,該算法程序設(shè)計(jì)合理,使用效果好,可廣泛應(yīng)用于各種網(wǎng)絡(luò)商城的網(wǎng)頁(yè)抓取。下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。
圖1是本發(fā)明實(shí)施例的工作流程圖。
具體實(shí)施例方式本發(fā)明用于抓取網(wǎng)絡(luò)商城中網(wǎng)頁(yè)的爬蟲算法,如圖1所示,包括以下步驟
步驟1:設(shè)置抓取的寬度、深度以及總數(shù),所述寬度表示不相關(guān)頁(yè)面鏈接允許訪問的數(shù)目,所述深度表示還可以沿著鏈接繼續(xù)往前訪問的深度,所述總數(shù)表示訪問網(wǎng)頁(yè)總數(shù)上限值S ;輸入初始鏈接;
步驟2 :建立url隊(duì)列,所述url隊(duì)列用于存儲(chǔ)要爬取的初始鏈接,將url種子集添加到所述url隊(duì)列中;可以把若干網(wǎng)上商城的域名作為url的入口,得到所述url種子集;步驟3 :若訪問頁(yè)面數(shù)小于訪問網(wǎng)頁(yè)總數(shù)上限值S,或者url隊(duì)列的長(zhǎng)度不為零,即url隊(duì)列不為空,則根據(jù)所述初始鏈接下載對(duì)應(yīng)的頁(yè)面,否則結(jié)束;
步驟4 :抽取被新爬取到的鏈接到list隊(duì)列中,并計(jì)算頁(yè)面與主題的相關(guān)度,然后保存下載到的頁(yè)面;所述list隊(duì)列用于存儲(chǔ)爬取到的鏈接;
步驟5 :判斷頁(yè)面的深度,若頁(yè)面的深度大于零,則執(zhí)行步驟6,否則返回步驟3 ;
步驟6:判斷頁(yè)面是否與主題相關(guān),若與主題相關(guān),則增加所述頁(yè)面前向鏈接的鏈接值,否則降低所述頁(yè)面前向鏈接的鏈接值;
步驟7 :判斷url是否在list隊(duì)列中,若在list隊(duì)列中,則執(zhí)行步驟8,否則返回到步驟3;
步驟8 :判斷url是否在url隊(duì)列中,若在url隊(duì)列中,比較url隊(duì)列的相關(guān)系數(shù)和list隊(duì)列的相關(guān)系數(shù)的大小,兩者中較大的取代url中排隊(duì)隊(duì)列的相關(guān)系數(shù);否則按照相關(guān)系數(shù)的大小插入到url隊(duì)列中;
步驟9 :若當(dāng)前頁(yè)面相關(guān),則深度為depth (page),否則深度為depth (page) -1,depth (page)指當(dāng)前頁(yè)面的深度;步驟10 :從list隊(duì)列中取出下一條url,然后從步驟7開始執(zhí)行; 步驟11 :算法結(jié)束,輸出主題相關(guān)網(wǎng)頁(yè)。
以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種用于抓取網(wǎng)絡(luò)商城中網(wǎng)頁(yè)的爬蟲算法,其特征在于包括以下步驟步驟I:設(shè)置抓取的寬度、深度以及總數(shù),所述寬度表示不相關(guān)頁(yè)面鏈接允許訪問的數(shù)目,所述深度表示還可以沿著鏈接繼續(xù)往前訪問的深度,所述總數(shù)表示訪問網(wǎng)頁(yè)總數(shù)上限值S ;輸入初始鏈接;步驟2 :建立url隊(duì)列,所述url隊(duì)列用于存儲(chǔ)要爬取的初始鏈接,將url種子集添加到所述urI隊(duì)列中;步驟3 :若訪問頁(yè)面數(shù)小于訪問網(wǎng)頁(yè)總數(shù)上限值S,或者url隊(duì)列的長(zhǎng)度不為零,即url 隊(duì)列不為空,則根據(jù)所述初始鏈接下載對(duì)應(yīng)的頁(yè)面,否則結(jié)束;步驟4 :抽取被新爬取到的鏈接到list隊(duì)列中,并計(jì)算頁(yè)面與主題的相關(guān)度,然后保存下載到的頁(yè)面;所述list隊(duì)列用于存儲(chǔ)爬取到的鏈接;步驟5 :判斷頁(yè)面的深度,若頁(yè)面的深度大于零,則執(zhí)行步驟6,否則返回步驟3 ;步驟6:判斷頁(yè)面是否與主題相關(guān),若與主題相關(guān),則增加所述頁(yè)面前向鏈接的鏈接值,否則降低所述頁(yè)面前向鏈接的鏈接值;步驟7 :判斷url是否在list隊(duì)列中,若在list隊(duì)列中,則執(zhí)行步驟8,否則返回到步驟3;步驟8 :判斷url是否在url隊(duì)列中,若在url隊(duì)列中,比較url隊(duì)列的相關(guān)系數(shù)和list 隊(duì)列的相關(guān)系數(shù)的大小,兩者中較大的取代url隊(duì)列中的相關(guān)系數(shù);否則按照相關(guān)系數(shù)的大小插入到url隊(duì)列中;步驟9 :若當(dāng)前頁(yè)面相關(guān),則深度為depth (page),否則深度為depth (page) -I, depth (page)指當(dāng)前頁(yè)面的深度;步驟10 :從list隊(duì)列中取出下一條url,然后從步驟7開始執(zhí)行;步驟11 :算法結(jié)束,輸出主題相關(guān)網(wǎng)頁(yè)。
全文摘要
本發(fā)明涉及一種用于抓取網(wǎng)絡(luò)商城中網(wǎng)頁(yè)的爬蟲算法,該算法根據(jù)初始鏈接采集網(wǎng)絡(luò)商城上的頁(yè)面,將頁(yè)面下的種子集添加到url隊(duì)列中;根據(jù)初始鏈接下載頁(yè)面,并將新鏈接添加到list隊(duì)列中,且對(duì)頁(yè)面進(jìn)行相關(guān)度的計(jì)算。根據(jù)頁(yè)面的深度,以及頁(yè)面與主題的相關(guān)程度,設(shè)置相應(yīng)的鏈接值;對(duì)于存在list隊(duì)列和url隊(duì)列中的url,比較url隊(duì)列的潛在系數(shù)和list隊(duì)列的潛在系數(shù),來對(duì)url隊(duì)列的潛在系數(shù)進(jìn)行更新;對(duì)于存在list隊(duì)列但不在url隊(duì)列中的url,按照潛在系數(shù)插入到url隊(duì)列中;最后根據(jù)當(dāng)前頁(yè)面的相關(guān)程度,對(duì)深度進(jìn)行設(shè)置。該算法有利于對(duì)網(wǎng)絡(luò)商城中與主題相關(guān)的網(wǎng)頁(yè)進(jìn)行精確抓取,而且算法設(shè)計(jì)合理,運(yùn)行效果好。
文檔編號(hào)G06F17/30GK102982184SQ201210571819
公開日2013年3月20日 申請(qǐng)日期2012年12月26日 優(yōu)先權(quán)日2012年12月26日
發(fā)明者陳志德 申請(qǐng)人:福建師范大學(xué)