朱向彩,萬(wàn)齊飛
(泰山學(xué)院 信息科學(xué)技術(shù)學(xué)院,山東 泰安 271021)
B2C及C2C模式的各類購(gòu)物網(wǎng)站的出現(xiàn)和發(fā)展為消費(fèi)者提供了廣闊的購(gòu)物空間,網(wǎng)絡(luò)購(gòu)物成交額逐漸增高.隨著網(wǎng)購(gòu)的不斷發(fā)展,商品的品類和數(shù)量也在不斷增多,大量的商品信息使得消費(fèi)者常常無(wú)法獲得合適價(jià)格的商品.本文主要研究如何解決此類問(wèn)題,并為用戶提供及時(shí)有效的商品信息,為消費(fèi)者提供購(gòu)物參考.地方網(wǎng)絡(luò)技術(shù)發(fā)展在這方面的技術(shù)應(yīng)用欠缺,從實(shí)際角度看,本文所研究的平臺(tái)在某種程度上滿足了用戶需求,有很好的應(yīng)用前景[1,2].
網(wǎng)絡(luò)爬蟲(chóng)依次檢索電子商務(wù)平臺(tái)中的商品內(nèi)容記錄,如名稱、單價(jià)、標(biāo)志圖片等.在網(wǎng)絡(luò)技術(shù)中,網(wǎng)絡(luò)爬蟲(chóng)的重要作用是從最初的幾個(gè)網(wǎng)頁(yè)開(kāi)始爬行,直到爬行隊(duì)列變空或滿足結(jié)束條件的時(shí)候來(lái)結(jié)束爬行.網(wǎng)絡(luò)爬蟲(chóng)也可作為網(wǎng)站鏈接檢查的工具,本文所研究的爬蟲(chóng)技術(shù)是為優(yōu)惠商品搜索平臺(tái)提供信息資源而設(shè)計(jì)的,所研發(fā)的平臺(tái)是一個(gè)為用戶網(wǎng)絡(luò)購(gòu)物提供方便的信息系統(tǒng),用戶可通過(guò)平臺(tái)搜索到優(yōu)惠商品信息并能夠利用這些信息,節(jié)約商品搜索時(shí)間,同時(shí)平臺(tái)還可以為購(gòu)物網(wǎng)站增加銷售量,提升銷售業(yè)績(jī).
從1990年之后,就有人進(jìn)行網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的研究,當(dāng)前為止,此項(xiàng)技術(shù)已逐步成熟,它是搜索引擎的核心技術(shù).常用的爬蟲(chóng)有 Heritrix、Nutch、Larbin等.網(wǎng)頁(yè)分析和網(wǎng)頁(yè)搜索是爬蟲(chóng)技術(shù)的最重要部分.爬蟲(chóng)技術(shù)搜索引擎比傳統(tǒng)搜索引擎更具有針對(duì)性,搜索結(jié)果會(huì)更讓用戶滿意.按結(jié)構(gòu)及技術(shù),網(wǎng)絡(luò)爬蟲(chóng)一般可分為通用爬蟲(chóng)、增量爬蟲(chóng)、聚焦爬蟲(chóng)、Deep Web爬蟲(chóng)等.目前已有一些應(yīng)用基于Heritrix進(jìn)行研發(fā)及功能擴(kuò)展等.
本文用到的C++技術(shù),是由AT &T Bell實(shí)驗(yàn)室的Bjarne Stroustrup博士等人在20世紀(jì)80年代在C語(yǔ)言的基礎(chǔ)上研發(fā)出來(lái)的技術(shù).C++增加了面向?qū)ο蟮南嚓P(guān)技術(shù).C++可面向過(guò)程和面向?qū)ο螅δ軓?qiáng)大.C++技術(shù)與C技術(shù)相比較,在以下方面增強(qiáng)了:數(shù)據(jù)類型的檢查更加嚴(yán)格;增加了面向?qū)ο蠹夹g(shù)及泛型編程技術(shù);新增異常處理技術(shù);新增運(yùn)算符重載技術(shù);新增標(biāo)準(zhǔn)模板庫(kù).面向?qū)ο蠹夹g(shù)是針對(duì)研究規(guī)模較大的程序提出的,可以提高開(kāi)發(fā)效率.面向?qū)ο蠛瓦^(guò)程并不對(duì)立,它們各有作用互為補(bǔ)充[3,4].
本文用到的Xapian技術(shù),是基于C++的跨平臺(tái)全文檢索技術(shù),作用同Java的lucene技術(shù).lucene是基于Java的全文檢索技術(shù),之前C++沒(méi)有相應(yīng)工具,Xapian填補(bǔ)了此項(xiàng)空白.Xapian技術(shù)的api檢索原理和lucene技術(shù)在很多方面相似,但也有不同,Xapian除了提供C++編程接口外,還提供了PHP,Python,Perl,Ruby等編程接口及類庫(kù),可從腳本編程語(yǔ)言中使用Xapian技術(shù)進(jìn)行全文檢索[5,6].
本文用到的SALSA算法,它的提出是希望能夠結(jié)合PageRank及HITS的算法特點(diǎn),采納PageRank的“隨機(jī)游走模型”.SALSA融合了PageR-ank及HITS的思想,按實(shí)際效果,大量的實(shí)驗(yàn)數(shù)據(jù)表明,SALSA的搜索效果優(yōu)于PageRank及HITS,是目前效果最好的鏈接分析算法之一.從整體計(jì)算流程來(lái)說(shuō),可將SALSA分為兩個(gè)階段:第一階段,是確定計(jì)算對(duì)象集合的階段,與HITS基本相同;第二個(gè)階段,是鏈接關(guān)系傳播,采納了“隨機(jī)游走模型”.判權(quán)算法是很好的網(wǎng)絡(luò)路徑方法,它用Bellman-Ford或SPFA算法求負(fù)權(quán)環(huán);如果有負(fù)權(quán)環(huán)的話,John可無(wú)限次利用此環(huán),得到負(fù)值;如果存在負(fù)環(huán)輸出YES,否則輸出NO;M條路為雙向正權(quán)邊,W個(gè)蟲(chóng)洞為單向負(fù)權(quán)邊[7,8].
經(jīng)過(guò)綜合探索,本文將Xapian技術(shù)、SALSA算法、網(wǎng)絡(luò)爬蟲(chóng)技術(shù)等結(jié)合起來(lái)以實(shí)現(xiàn)優(yōu)惠商品的搜索應(yīng)用,這方面的技術(shù)和應(yīng)用研究未見(jiàn)報(bào)道.
網(wǎng)絡(luò)爬蟲(chóng)技術(shù)是根據(jù)一定的網(wǎng)頁(yè)分析算法來(lái)過(guò)濾與網(wǎng)頁(yè)主題無(wú)關(guān)的信息鏈接,保留相關(guān)鏈接并將其放入待抓取的隊(duì)列;根據(jù)搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過(guò)程,直至達(dá)到某條件時(shí)停止.
被網(wǎng)絡(luò)爬蟲(chóng)抓取的全部網(wǎng)頁(yè)都將被系統(tǒng)存儲(chǔ)起來(lái),進(jìn)行分析和過(guò)濾,并建立索引,對(duì)于主題網(wǎng)絡(luò)爬蟲(chóng)來(lái)講,本過(guò)程得到的分析結(jié)果還可能對(duì)后續(xù)的抓取過(guò)程進(jìn)行反饋.根據(jù)不同需求,達(dá)到如下目標(biāo):
(1)設(shè)計(jì)多線程網(wǎng)絡(luò)爬蟲(chóng),客戶端向服務(wù)器發(fā)送設(shè)定好的請(qǐng)求,如圖1所示.
圖1 網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)示意圖
(2)通過(guò)http將web服務(wù)器上的協(xié)議站點(diǎn)相關(guān)網(wǎng)頁(yè)源碼讀取出來(lái).
(3)根據(jù)特定的正則表達(dá)式提取客戶端的需求信息.
(4)通過(guò)搜索策略,從某網(wǎng)頁(yè)鏈接開(kāi)始,訪問(wèn)該鏈接頁(yè)面上的全部鏈接,完成后,再用遞歸算法實(shí)現(xiàn)下一層訪問(wèn).
最佳優(yōu)先搜索策略按一定的網(wǎng)頁(yè)分析法,預(yù)測(cè)候選URL與目標(biāo)網(wǎng)頁(yè)的相似性,或與主題的相關(guān)性,抓取評(píng)價(jià)最好的URL,訪問(wèn)分析算法預(yù)測(cè)“有用”的頁(yè)面.問(wèn)題是,在爬蟲(chóng)抓取路徑上的很多相關(guān)網(wǎng)頁(yè)可能被忽略,因?yàn)樽罴褍?yōu)先策略屬于局部最優(yōu)搜索算法.由此,要將最佳算法優(yōu)先和具體應(yīng)用結(jié)合起來(lái)并進(jìn)行改進(jìn),使其跳出局部最優(yōu)點(diǎn).閉環(huán)調(diào)整可將無(wú)關(guān)網(wǎng)頁(yè)數(shù)量降低30%~90%.網(wǎng)絡(luò)爬蟲(chóng)的結(jié)構(gòu)模型如圖2所示.
網(wǎng)頁(yè)數(shù)據(jù)庫(kù)是用來(lái)存儲(chǔ)爬蟲(chóng)下載下來(lái)的網(wǎng)頁(yè)數(shù)據(jù)的,其存儲(chǔ)設(shè)計(jì)主要針對(duì)原始頁(yè)面信息和已處理的網(wǎng)頁(yè)數(shù)據(jù).考慮到爬蟲(chóng)網(wǎng)頁(yè)站重復(fù)訪問(wèn)的具體情況,每次進(jìn)行重訪時(shí),需要到網(wǎng)頁(yè)庫(kù)中查看網(wǎng)頁(yè)的變化情況.如果在一段時(shí)間內(nèi)網(wǎng)頁(yè)信息并沒(méi)有發(fā)生改變(可通過(guò)etag,LastModified等技術(shù)進(jìn)行檢測(cè)),就不再繼續(xù)進(jìn)行下載;否則,發(fā)現(xiàn)網(wǎng)頁(yè)信息發(fā)生過(guò)改變,需要重新下載,并進(jìn)行網(wǎng)頁(yè)庫(kù)更新.由此,對(duì)網(wǎng)頁(yè)庫(kù)數(shù)據(jù)的訪問(wèn),應(yīng)該支持順序訪問(wèn)及隨機(jī)訪問(wèn)方式.網(wǎng)頁(yè)庫(kù)很大,隨機(jī)訪問(wèn),就是在獲取到某下載任務(wù)后,通過(guò)該URL進(jìn)行Hash映射,并迅速得到對(duì)應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)狀態(tài),判定是否需重新下載.順序訪問(wèn)查找時(shí),在進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)處理時(shí),需要進(jìn)行信息抽取,并建立索引庫(kù)[9].
隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展及網(wǎng)絡(luò)環(huán)境的逐漸成熟,網(wǎng)購(gòu)已逐步普及.而在網(wǎng)購(gòu)中由于商品數(shù)量和類型日益增多,海量的商品信息增加了用戶選購(gòu)合適商品的困難,而本文所研發(fā)的應(yīng)用平臺(tái)就是在這樣的背景和環(huán)境下提出的,目的在于為用戶提供準(zhǔn)確、有效、實(shí)時(shí)的商品信息,方便網(wǎng)購(gòu).和其他電商系統(tǒng)相對(duì)比可知,本應(yīng)用平臺(tái)的實(shí)現(xiàn)有較明顯的針對(duì)性,其主要特性也能夠滿足用戶和賣(mài)家的實(shí)際需求.
(1)功能的實(shí)用性:本平臺(tái)可以為用戶搜索到合適的優(yōu)惠商品,并分類比較,提供符合用戶選擇習(xí)慣的排序推薦信息.
(2)網(wǎng)購(gòu)的安全性:本平臺(tái)不提供用戶和商家的直接商品交易,只提供優(yōu)惠商品的信息推薦.商品交易是通過(guò)本平臺(tái)中提供的鏈接返回到相應(yīng)的購(gòu)物網(wǎng)站進(jìn)行,保證了購(gòu)物安全.
本文所研究的內(nèi)容主要體現(xiàn)在如下幾個(gè)方面:將網(wǎng)絡(luò)爬蟲(chóng)技術(shù)應(yīng)用于篩選用戶所需的商品信息中;搜索效率高,基于C++的Xapian技術(shù)在運(yùn)行速率上有著很大的優(yōu)勢(shì);信息真實(shí)率高,運(yùn)用改進(jìn)的DNS CacheSLASA技術(shù)抓取主流電商網(wǎng)頁(yè)中的商品數(shù)據(jù),對(duì)google和baidu等搜索引擎及pageRank算法進(jìn)行二次過(guò)濾,增強(qiáng)了信息的可靠性;數(shù)據(jù)信息查詢采用了自主設(shè)計(jì)的key-value型數(shù)據(jù)結(jié)構(gòu)(與簡(jiǎn)化版的NoSQL相似),且支持跨平臺(tái);通過(guò)判權(quán)算法篩選數(shù)據(jù),將選出的商品信息回饋給用戶,使用戶達(dá)到選取優(yōu)惠商品的目標(biāo).
圖2 網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu)模型示意圖
[1]陳實(shí).面向web視頻的網(wǎng)絡(luò)爬蟲(chóng)的研究與實(shí)現(xiàn)[D].四川:電子科技大學(xué),2012.
[2]趙艷.基于網(wǎng)絡(luò)爬蟲(chóng)的跨站腳本漏洞動(dòng)態(tài)檢測(cè)技術(shù)研究[D].陜西:西安交通大學(xué),2011.
[3]林曉春,王艷.一種基于圖像融合的紅外圖像增強(qiáng)新方法[J].紅外技術(shù),2004,26(2):48-50.
[4]何斌,馬天予.Visual C++數(shù)字圖像處理[M].2版.北京:人民郵電出版社,2002:199-200.
[5]孟時(shí),王彥.Larbin網(wǎng)絡(luò)爬蟲(chóng)的體系結(jié)構(gòu)[J].電腦學(xué)習(xí),2010(4):80-81.
[6]王鋒,王偉,張璟.基于Linux的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)[J].計(jì)算機(jī)工程,2010,36(1):280-282.
[7]王芳,陳海建.深入解析 Web主題爬蟲(chóng)的關(guān)鍵性原理[J].微型電腦應(yīng)用,2011,27(7):32-34.
[8]王凡毓.網(wǎng)絡(luò)蜘蛛Larbin的設(shè)計(jì)和優(yōu)化[J].科技創(chuàng)業(yè)月刊,2008,21(2):145-147.
[9]張帆,李琳娜.基于Web的智能信息采集及處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007,33(18):265-267.