本發(fā)明涉及大數(shù)據(jù),特別涉及一種基于互聯(lián)網(wǎng)的用戶興趣采集方法。
背景技術(shù):
社交網(wǎng)絡(luò)中用戶是信息的發(fā)布者,用戶如果對(duì)某方面的信息感興趣,該用戶需要做的是同發(fā)布這方面信息的用戶建立鏈接,構(gòu)建自己的社交網(wǎng)絡(luò),實(shí)時(shí)的相關(guān)信息就會(huì)通過社交網(wǎng)絡(luò)傳播到該用戶那里。社交網(wǎng)絡(luò)中傳播的信息,例如,在微博中,用戶的轉(zhuǎn)發(fā)行為引發(fā)了微博信息在網(wǎng)絡(luò)中傳播,用于市場(chǎng)營銷、廣告投放和謠言控制等多個(gè)方面。由此可見,信息在社交網(wǎng)絡(luò)中的傳播對(duì)幫助用戶獲取信息起著至關(guān)重要的作用?,F(xiàn)有技術(shù)中的信息傳播跟蹤方法通常只考慮了比較單一的影響信息傳播的因素,方法中虛擬的參數(shù)通常是任意指定的,不具備預(yù)測(cè)信息傳播的能力。此外,當(dāng)給定一個(gè)社交網(wǎng)絡(luò)后,對(duì)于如何在社交網(wǎng)絡(luò)上選取一個(gè)指定規(guī)模的節(jié)點(diǎn)集合以達(dá)到影響力最大化的效果方面,已有方法只適用于小型網(wǎng)絡(luò),對(duì)于大規(guī)模的社交網(wǎng)絡(luò),只能得到近似的較優(yōu)結(jié)果。
技術(shù)實(shí)現(xiàn)要素:
為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種基于互聯(lián)網(wǎng)的用戶興趣采集方法,包括:
爬取節(jié)點(diǎn)中的待爬取隊(duì)列暫存爬取事務(wù)即待爬取的url;
從待爬取隊(duì)列中獲取一個(gè)url,對(duì)該url進(jìn)行預(yù)處理;
模擬瀏覽器建立與待爬取站點(diǎn)的網(wǎng)址的連接,獲取對(duì)應(yīng)的網(wǎng)頁,并將待爬取網(wǎng)站的域名地址進(jìn)行緩存,用于后續(xù)爬取時(shí)直接使用;
通過應(yīng)用url散列函數(shù),將域名散列到域名地址的散列隊(duì)列中,生成一個(gè)特定的編號(hào),通過域名地址的解析過程,來獲取索引的相關(guān)內(nèi)容;
解析成功后,將索引的相關(guān)內(nèi)容寫入相關(guān)的數(shù)據(jù)庫中進(jìn)行存儲(chǔ),索引的內(nèi)容通過相應(yīng)的網(wǎng)頁ip實(shí)現(xiàn)寫入對(duì)應(yīng)的數(shù)據(jù)庫中。
優(yōu)選地,還包括:獲取相關(guān)內(nèi)容實(shí)現(xiàn)更新域名池信息,若該域名己經(jīng)解析了相關(guān)的對(duì)應(yīng)ip,通過對(duì)域名進(jìn)行相應(yīng)使用頻率的加權(quán),并且判斷優(yōu)先處理規(guī)則;
通過實(shí)現(xiàn)權(quán)值相關(guān)的信息映射出相應(yīng)的ip,并且通過這些具體信息的解析,實(shí)現(xiàn)這些域名的url的排序,具體的解析信息通過相應(yīng)的處理實(shí)現(xiàn)相應(yīng)的關(guān)聯(lián)與維護(hù);
域名在排序時(shí),以線性指針鏈索引遍歷所有存在域名的相關(guān)使用權(quán)值,需要改變相關(guān)的域名順序時(shí)通過交換相關(guān)的域名指針信息,實(shí)現(xiàn)這些信息的域與權(quán)值域的排序。
優(yōu)選地,當(dāng)輸入了一個(gè)待爬取url,對(duì)url進(jìn)行多線程的網(wǎng)頁解析,多個(gè)線程循環(huán)下載網(wǎng)頁的相關(guān)數(shù)據(jù),通過這個(gè)url解析相應(yīng)的內(nèi)容,并且將這些url存儲(chǔ)在相關(guān)隊(duì)列中;對(duì)所有的隊(duì)列實(shí)現(xiàn)加鎖處理,每一個(gè)線程在任意一個(gè)時(shí)間段只有一種線程鎖。
本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
本發(fā)明提出了一種基于互聯(lián)網(wǎng)的用戶興趣采集方法,實(shí)現(xiàn)了并行網(wǎng)頁爬取,提高采集和存儲(chǔ)效率,廣泛適用于大規(guī)模的社交網(wǎng)絡(luò)。
附圖說明
圖1是根據(jù)本發(fā)明實(shí)施例的基于互聯(lián)網(wǎng)的用戶興趣采集方法的流程圖。
具體實(shí)施方式
下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種基于互聯(lián)網(wǎng)的用戶興趣采集方法。圖1是根據(jù)本發(fā)明實(shí)施例的基于互聯(lián)網(wǎng)的用戶興趣采集方法流程圖。
分布式爬取整體架構(gòu)包括爬取節(jié)點(diǎn)、控制節(jié)點(diǎn)以及云文件系統(tǒng)三部分??刂乒?jié)點(diǎn)負(fù)責(zé)協(xié)調(diào)爬取節(jié)點(diǎn)之間的爬取,爬取節(jié)點(diǎn)負(fù)責(zé)爬取網(wǎng)頁,爬取的網(wǎng)頁存儲(chǔ)在云文件系統(tǒng)中。控制節(jié)點(diǎn)啟動(dòng)各個(gè)爬取節(jié)點(diǎn)、事務(wù)的分發(fā)、管理爬取節(jié)點(diǎn)狀態(tài)、管理url以及爬取節(jié)點(diǎn)是否終止??刂乒?jié)點(diǎn)根據(jù)自身的配置信息獲取已部署多少個(gè)爬取節(jié)點(diǎn),由控制節(jié)點(diǎn)遠(yuǎn)程登錄的方式啟動(dòng)爬取節(jié)點(diǎn);爬取節(jié)點(diǎn)啟動(dòng)后向控制節(jié)點(diǎn)發(fā)送一個(gè)就緒狀態(tài)信息,表明該爬取節(jié)點(diǎn)已經(jīng)做好準(zhǔn)備,可以接受爬取事務(wù)了;控制節(jié)點(diǎn)收到爬取節(jié)點(diǎn)的就緒信息后,生成一個(gè)初始事務(wù),即封裝了一些待爬取的網(wǎng)頁的url,并以文件的形式發(fā)送到爬取節(jié)點(diǎn)某個(gè)特定的路徑下。如果控制節(jié)點(diǎn)發(fā)現(xiàn)當(dāng)前數(shù)據(jù)庫中無數(shù)據(jù)而且系統(tǒng)中還有爬取節(jié)點(diǎn)在爬取,它就會(huì)向該爬取節(jié)點(diǎn)發(fā)送等待信息,爬取節(jié)點(diǎn)根據(jù)收到運(yùn)行信息,到相應(yīng)的路徑下,裝載待爬取url到爬取隊(duì)列,在當(dāng)前爬取完之后繼續(xù)爬取下一次事務(wù)。爬取節(jié)點(diǎn)若收到等待信息,爬完當(dāng)前事務(wù)后,保持等待狀態(tài),直到控制節(jié)點(diǎn)將其喚醒;在爬取網(wǎng)頁的過程中,抽取出的url達(dá)到預(yù)定量后,封裝成一個(gè)數(shù)據(jù)文件,爬取節(jié)點(diǎn)將其發(fā)送到控制節(jié)點(diǎn)的特定路徑下,控制節(jié)點(diǎn)到指定路徑下裝載數(shù)據(jù)至數(shù)據(jù)庫中;當(dāng)爬取節(jié)點(diǎn)即將完成本次爬取事務(wù)的時(shí)候,同樣向控制節(jié)點(diǎn)發(fā)送就緒狀態(tài)信息。
控制節(jié)點(diǎn)包括狀態(tài)管理器、數(shù)據(jù)裝載器、過濾器、事務(wù)管理器、數(shù)據(jù)庫。狀態(tài)管理器負(fù)責(zé)判斷爬取節(jié)點(diǎn)發(fā)送的狀態(tài)類型,如果狀態(tài)是數(shù)據(jù)爬取,則狀態(tài)管理器將其提交數(shù)據(jù)裝載器;如果是事務(wù)請(qǐng)求狀態(tài),則將其交給事務(wù)管理器。數(shù)據(jù)裝載器到指定的路徑下以文件的形式讀取爬取節(jié)點(diǎn)發(fā)送的url,然后將這些數(shù)據(jù)交給過濾器。過濾器對(duì)數(shù)據(jù)進(jìn)行去重,將經(jīng)過處理的數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)庫中。數(shù)據(jù)庫存儲(chǔ)待爬取的url以及爬取節(jié)點(diǎn)的管理信息。事務(wù)管理器生成、發(fā)送爬取事務(wù)以及爬取節(jié)點(diǎn)控制信息,并將爬取事務(wù)和控制信息發(fā)送給請(qǐng)求的爬取節(jié)點(diǎn)。
對(duì)于數(shù)據(jù)去重處理,通過md5算法來生成散列函數(shù):首先構(gòu)造一個(gè)bit數(shù)組,大小為224,用于保存已經(jīng)處理過url的歷史記錄;構(gòu)成散列函數(shù)構(gòu)造分成兩部分,即全局散列和局部散列,具體構(gòu)造過程如下:獲得一個(gè)關(guān)于url的md5值的字符串形式,將字符串轉(zhuǎn)換成一個(gè)128位的byte值,并對(duì)224求余,使之映射到0~224的范圍內(nèi);將這128位的md5值去掉其中的高8位,剩下其余的120位;這120位每24位分成一組,形成五組。每一組值的取值范圍為
進(jìn)行url去重的過程為:首先初始化224的位數(shù)組,每個(gè)位置為0。當(dāng)有url輸入時(shí),計(jì)算該url的散列值,得出一個(gè)關(guān)于當(dāng)前url的一個(gè)128位的字符串表示,將此字符串按上述散列過程分別得到全局散列值和局部散列值;依次檢測(cè)所有散列值為是否都為1,如果有一個(gè)不為1,則通過該過濾器過濾。判別url結(jié)束之后,將所有散列值對(duì)應(yīng)的位置為1。
控制節(jié)點(diǎn)初始化事務(wù)分發(fā)時(shí),向各個(gè)爬取節(jié)點(diǎn)發(fā)送爬取事務(wù)??刂乒?jié)點(diǎn)首先探測(cè)各個(gè)爬取節(jié)點(diǎn)的連通性。將物理上無法連通的主機(jī)的信息從數(shù)據(jù)庫中刪除,然后進(jìn)入事務(wù)分發(fā)階段。當(dāng)爬取節(jié)點(diǎn)返回url時(shí),控制節(jié)點(diǎn)再給請(qǐng)求的爬取節(jié)點(diǎn)發(fā)送事務(wù)。爬取過程中對(duì)于從爬取的網(wǎng)頁抽取的url則返回給控制節(jié)點(diǎn),由控制節(jié)點(diǎn)統(tǒng)一調(diào)度??刂乒?jié)點(diǎn)以固定個(gè)數(shù)的url不斷向請(qǐng)求事務(wù)的爬取節(jié)點(diǎn)發(fā)送事務(wù)。
爬取節(jié)點(diǎn)中的待爬取隊(duì)列暫存本次控制節(jié)點(diǎn)發(fā)送的爬取事務(wù),即待爬取的url。預(yù)取單元從待爬取隊(duì)列中獲取一個(gè)url,獲取之后對(duì)該url進(jìn)行預(yù)處理,處理之后交給抓取單元。抓取單元模擬瀏覽器建立與待爬取站點(diǎn)的網(wǎng)址的連接,獲取對(duì)應(yīng)的網(wǎng)頁,并將其交給抽取單元,然后將待爬取網(wǎng)站的域名地址進(jìn)行緩存,用于后續(xù)爬取時(shí)直接使用域名地址緩存。通過url散列函數(shù)的相關(guān)應(yīng)用,將這些域名散列到域名地址的散列隊(duì)列中,通過這些規(guī)則生成一個(gè)特定的編號(hào),通過這些域名地址的解析過程,來獲取索引的相關(guān)內(nèi)容。解析這些信息成功后,將這些信息寫入相關(guān)的數(shù)據(jù)庫中進(jìn)行存儲(chǔ),這些索引的內(nèi)容通過相應(yīng)的網(wǎng)頁ip實(shí)現(xiàn)寫入對(duì)應(yīng)的數(shù)據(jù)庫中,通過獲取相關(guān)內(nèi)容實(shí)現(xiàn)更新域名池信息,若該域名己經(jīng)解析了相關(guān)的對(duì)應(yīng)ip,通過對(duì)這些域名進(jìn)行相應(yīng)使用頻率的加權(quán),并且判斷優(yōu)先處理規(guī)則。通過實(shí)現(xiàn)權(quán)值相關(guān)的信息映射出相應(yīng)的ip,并且通過這些具體信息的解析,實(shí)現(xiàn)這些域名的url的排序,具體的解析信息通過相應(yīng)的處理實(shí)現(xiàn)相應(yīng)的關(guān)聯(lián)與維護(hù)。這些域名在排序時(shí),以線性指針鏈索引遍歷所有存在域名的相關(guān)使用權(quán)值,需要改變相關(guān)的域名順序時(shí)通過交換相關(guān)的域名指針信息,實(shí)現(xiàn)這些信息的域與權(quán)值域的排序。
抽取單元使用正則表達(dá)式,抽取符合預(yù)定算法類型的網(wǎng)址。經(jīng)過抽取單元處理的網(wǎng)頁接下來由索引單元處理,而抽取的網(wǎng)址則由后處理單元處理。索引單元將本地文件寫入到本地磁盤的緩存路徑。將每個(gè)網(wǎng)頁寫入到本地大文件中,在寫完文件之后,將文件路徑添加到指定的機(jī)構(gòu)。后處理單元在發(fā)送前對(duì)url進(jìn)行過濾,濾除非文本類型的網(wǎng)頁,即發(fā)送url到云端。
在云平臺(tái)環(huán)境下,通過mapreduce逐條解析出相應(yīng)的待爬取url,并且判斷這些url的相關(guān)合法性,并將這些合法的url并且,通過去重處理,將這些信息更新到網(wǎng)頁數(shù)據(jù)庫中。使得數(shù)據(jù)庫的爬取網(wǎng)址內(nèi)容得到更新,將url的集合實(shí)現(xiàn)格式化和過濾處理,排除非法與重復(fù)的url,將這些url下載并設(shè)定url狀態(tài),按照算法將這些url進(jìn)行初始化分值;對(duì)url進(jìn)行合并,重復(fù)數(shù)據(jù)不再進(jìn)行存儲(chǔ)操作;將獲取的相關(guān)url存儲(chǔ)在數(shù)據(jù)庫,對(duì)原來存儲(chǔ)在數(shù)據(jù)庫中重復(fù)的執(zhí)行替換操作,新的代替以前的url。執(zhí)行map函數(shù)實(shí)現(xiàn)爬取時(shí),將在文件的url作為參數(shù)傳入,通過與檢索信息的匹配,確認(rèn)爬取信息網(wǎng)頁;接下來實(shí)現(xiàn)參數(shù)的格式化,根據(jù)正則表達(dá)式對(duì)一些特定的字符串進(jìn)行識(shí)別和規(guī)格化。獲取己經(jīng)符合需求的url,將這些url的狀態(tài)標(biāo)示為爬取狀態(tài),然后實(shí)現(xiàn)爬取。然后通過reduce將處理好的url進(jìn)行用舊url替換新的url操作。處理好的url的集合作為一個(gè)整體參數(shù),判斷該url是否存在,如果不存在這個(gè)url信息則將該url收集起來,最后輸出相關(guān)url信息。經(jīng)過相應(yīng)的map和reduce函數(shù)及算法的計(jì)算與處理后,就會(huì)得到個(gè)待爬取url。
當(dāng)輸入了一個(gè)待爬取url,對(duì)url進(jìn)行多線程的網(wǎng)頁解析,多個(gè)線程循環(huán)下載網(wǎng)頁的相關(guān)數(shù)據(jù),通過這個(gè)url解析相應(yīng)的內(nèi)容,并且將這些url存儲(chǔ)在相關(guān)隊(duì)列中。對(duì)所有的隊(duì)列實(shí)現(xiàn)加鎖處理,能夠避免這些url訪問沖突,或者重復(fù)獲取這些url,每一個(gè)線程在任意一個(gè)時(shí)間段只可以有一種線程鎖。
在數(shù)據(jù)下載過程中,保存網(wǎng)頁的元數(shù)據(jù),包括下載時(shí)間、網(wǎng)頁的url以及所在主機(jī)的ip地址。在網(wǎng)頁的尾部追加一個(gè)信息標(biāo)簽,標(biāo)簽內(nèi)的文本即為該網(wǎng)頁的元數(shù)據(jù)。爬取節(jié)點(diǎn)運(yùn)行時(shí),首先輸入爬取節(jié)點(diǎn)獲取的網(wǎng)頁,用標(biāo)簽抓取模塊抽取所有的標(biāo)簽,并將它們提交給網(wǎng)頁結(jié)構(gòu)向量生成器:同時(shí),標(biāo)簽抓取模塊將網(wǎng)頁的標(biāo)題標(biāo)簽和所有網(wǎng)址標(biāo)簽提交給網(wǎng)址相關(guān)性判斷模塊;網(wǎng)頁結(jié)構(gòu)向量生成器將生成的網(wǎng)頁結(jié)構(gòu)向量交給主題關(guān)聯(lián)度計(jì)算模塊。主題關(guān)聯(lián)度計(jì)算模塊結(jié)合主題結(jié)構(gòu)抓取模塊提供的網(wǎng)站的標(biāo)準(zhǔn)主題結(jié)構(gòu)向量以及主題字典來判斷該網(wǎng)頁是否主題相關(guān),并將網(wǎng)頁關(guān)聯(lián)度交給網(wǎng)址相關(guān)性判斷模塊處理,同時(shí)將主題相關(guān)網(wǎng)頁輸出。最后,根據(jù)標(biāo)題標(biāo)簽、網(wǎng)頁主題關(guān)聯(lián)度以及網(wǎng)址錨文本的關(guān)聯(lián)度來判斷各個(gè)url的主題關(guān)聯(lián)度,將主題相關(guān)的網(wǎng)址輸出。
主題結(jié)構(gòu)抓取模塊獲取待抓網(wǎng)站的典型網(wǎng)頁作為訓(xùn)練集。讀取訓(xùn)練集中的網(wǎng)頁,獲取網(wǎng)頁中的同時(shí)出現(xiàn)標(biāo)簽。初始化一個(gè)n維0向量,記為a,n為同時(shí)出現(xiàn)標(biāo)簽的數(shù)量,每個(gè)向量的維度代表一個(gè)標(biāo)簽出現(xiàn)的個(gè)數(shù)。依次讀取訓(xùn)練集中的每個(gè)網(wǎng)頁,抽取每個(gè)標(biāo)簽,在向量a中相應(yīng)的維度位置處加上相應(yīng)標(biāo)簽出現(xiàn)的次數(shù),表示該網(wǎng)頁貢獻(xiàn)出相應(yīng)標(biāo)簽的數(shù)量。此時(shí)的a向量中的各個(gè)維的值表示訓(xùn)練集中的相應(yīng)標(biāo)簽的總數(shù)。接下來對(duì)每一維做除商操作,除訓(xùn)練集中的網(wǎng)頁個(gè)數(shù),從而得出一個(gè)標(biāo)準(zhǔn)向量b。b向量即為描述該網(wǎng)頁結(jié)構(gòu)的向量表示。然后主題結(jié)構(gòu)抓取模塊將結(jié)果向量b發(fā)給主題關(guān)聯(lián)度計(jì)算模塊。
主題關(guān)聯(lián)度的計(jì)算由兩部分組成,分別是網(wǎng)頁內(nèi)容關(guān)聯(lián)度和結(jié)構(gòu)關(guān)聯(lián)度。首先計(jì)算網(wǎng)頁結(jié)構(gòu)關(guān)聯(lián)度,如果網(wǎng)頁結(jié)構(gòu)關(guān)聯(lián)度小于閾值r0,則確定該網(wǎng)頁與主題不相關(guān);如果大于r0,則認(rèn)為該網(wǎng)頁是主題相關(guān)的,在結(jié)構(gòu)上主題相關(guān)的網(wǎng)頁,等待判斷內(nèi)容關(guān)聯(lián)度,如果出現(xiàn)關(guān)鍵詞,則確定內(nèi)容相關(guān)。綜合這兩部分得出該網(wǎng)頁的整體主題關(guān)聯(lián)度r:
r=a×rcon+b×rthm
rcon表示網(wǎng)頁結(jié)構(gòu)關(guān)聯(lián)度,rthm表示網(wǎng)頁內(nèi)容關(guān)聯(lián)度;a、b分別表示二者的權(quán)重。
其中xi為主題結(jié)構(gòu)抓取模塊中產(chǎn)生的標(biāo)準(zhǔn)主題向量,而yi為待檢測(cè)網(wǎng)頁的結(jié)構(gòu)向量。rthm即是判定該網(wǎng)頁中是否出現(xiàn)領(lǐng)域關(guān)鍵詞,如果出現(xiàn)則為1,否則,則為0。
網(wǎng)址相關(guān)性計(jì)算模塊實(shí)現(xiàn)過濾和生成網(wǎng)址。通過對(duì)url標(biāo)簽進(jìn)行打分,根據(jù)每個(gè)標(biāo)簽的得分情況來判斷是否主題相關(guān),進(jìn)而濾除那些與主題無關(guān)的標(biāo)簽。生成網(wǎng)址具體包括從url標(biāo)簽中抽取每個(gè)url;判斷每個(gè)url的類型,如果是相對(duì)地址,則將其拼接成一個(gè)絕對(duì)地址。
綜上所述,本發(fā)明提出了一種基于互聯(lián)網(wǎng)的用戶興趣采集方法,實(shí)現(xiàn)了并行網(wǎng)頁爬取,提高采集和存儲(chǔ)效率,廣泛適用于大規(guī)模的社交網(wǎng)絡(luò)。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算系統(tǒng)來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算系統(tǒng)上,或者分布在多個(gè)計(jì)算系統(tǒng)所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算系統(tǒng)可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)系統(tǒng)中由計(jì)算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
應(yīng)當(dāng)理解的是,本發(fā)明的上述具體實(shí)施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構(gòu)成對(duì)本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。