基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法
【專利摘要】本發(fā)明公開了基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,該方法在基于Storm平臺(tái)的采集系統(tǒng)進(jìn)行,該方法包括產(chǎn)品抓取模塊周期性的從網(wǎng)絡(luò)中抓取數(shù)據(jù),預(yù)處理模塊根據(jù)產(chǎn)品Id初始化產(chǎn)品的屬性參數(shù),調(diào)度模塊將數(shù)據(jù)封裝成Tuple發(fā)射到Storm集群中,更新檢測模塊檢查是否有新的評(píng)論產(chǎn)生,將其送到評(píng)論信息抓取模塊,評(píng)論信息抓取模塊檢測到有評(píng)論信息更新的產(chǎn)品進(jìn)行分布式抓取,訪問間隔調(diào)整模塊動(dòng)態(tài)調(diào)整產(chǎn)品下一次采集的時(shí)間等。本發(fā)明將傳統(tǒng)的網(wǎng)絡(luò)爬蟲與開源分布式流處理框架Storm相結(jié)合,使得傳統(tǒng)的網(wǎng)絡(luò)爬蟲能夠運(yùn)行在流處理平臺(tái)上,在實(shí)時(shí)信息采集性能上得到極大提高,具有很強(qiáng)的實(shí)際價(jià)值和現(xiàn)實(shí)意義。
【專利說明】
基于storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于網(wǎng)絡(luò)信息處理技術(shù)領(lǐng)域,具體設(shè)及基于storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采 集方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)用戶數(shù)量的迅速增長,網(wǎng)絡(luò)越來越成為人們生活中不可獲取的一部 分,特別是電子商務(wù)的發(fā)展,改變了人們消費(fèi)方式,使得人們的購物非常方便、快捷。消費(fèi)者 不會(huì)再為獨(dú)自一個(gè)人逛街而沮喪,不再為沒有時(shí)間逛街買東西而煩惱,更不用為了挑一件 商品而東跑西跑。在電子商務(wù)的消費(fèi)模式下,只需要一張銀行卡,一臺(tái)電腦,消費(fèi)者可W買 到任何的東西,不需要很多的時(shí)間,不需要很多的勞力。為了給消費(fèi)者提供更好的購物體 驗(yàn),大多數(shù)電子商務(wù)網(wǎng)站為消費(fèi)者提供相互交流的平臺(tái)來發(fā)表其針對(duì)某件產(chǎn)品或服務(wù)的評(píng) 論,作為一種新型的口碑傳播方式,產(chǎn)品的評(píng)論信息已經(jīng)成為用戶了解產(chǎn)品質(zhì)量和服務(wù)的 重要信息來源,顯然評(píng)論信息的好壞會(huì)對(duì)消費(fèi)者的購買決策產(chǎn)生很大影響。此外,對(duì)于商家 及時(shí)的處理商品的負(fù)面評(píng)論信息和解決消費(fèi)者反饋的問題,對(duì)保持商家的良好形象和商品 的銷量顯得尤為重要。因此,如何盡早的獲取電商網(wǎng)站中產(chǎn)品的評(píng)論信息,進(jìn)而實(shí)時(shí)的把握 商品輿情,無論對(duì)商家還是消費(fèi)者都顯得十分重要。
[0003] 然而,近些年來,實(shí)時(shí)信息采集的相關(guān)文獻(xiàn)也并不少,但在要求準(zhǔn)確的前提下去預(yù) 測產(chǎn)品下一次評(píng)論產(chǎn)生的時(shí)間是一個(gè)很困難的任務(wù),目前并沒有很好的預(yù)測模型和算法出 現(xiàn)。然而與實(shí)時(shí)抓取網(wǎng)頁相關(guān)的研究領(lǐng)域有很多,比如預(yù)測網(wǎng)頁的更新頻率,方法大致分為 W下幾類:
[0004] (1)基于泊松分布等數(shù)學(xué)模型來模擬網(wǎng)頁的更新行為,該思想的提出到經(jīng)歷的研 究時(shí)間也比較長,但運(yùn)很難有實(shí)質(zhì)性的進(jìn)展和突破,其次,該模型僅僅對(duì)粗粒度的時(shí)間預(yù)測 效果較好,而對(duì)于細(xì)粒度的時(shí)間預(yù)測效果比較差。
[0005] (2)用一個(gè)數(shù)學(xué)概率模型來模擬網(wǎng)頁修改的行為,用該數(shù)學(xué)模型近似預(yù)測網(wǎng)頁的 修改頻率,但是用運(yùn)種方式與網(wǎng)頁行為擬合的準(zhǔn)確率和穩(wěn)定性都不是很高。
[0006] (3)A.K. Sharma等人提出了比較新的思想,不需要網(wǎng)頁完整的歷史記錄,每次訪問 網(wǎng)頁后都會(huì)調(diào)整相應(yīng)網(wǎng)頁的下次更新時(shí)間,并根據(jù)不斷的抓取積累起來的網(wǎng)頁歷史修改頻 率的數(shù)據(jù)來對(duì)網(wǎng)頁下一次更新時(shí)間進(jìn)行預(yù)測,不足之處是過于關(guān)注網(wǎng)頁的更新頻率,而在 及時(shí)抓取新修改的網(wǎng)頁方面細(xì)節(jié)考慮的不周。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的在于提供一種基于storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,W提高實(shí) 時(shí)采集的準(zhǔn)確率和穩(wěn)定性。
[000引為實(shí)現(xiàn)上述目的,本發(fā)明采用W下技術(shù)方案:
[0009]本發(fā)明公開了基于storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,該方法在基于storm平臺(tái) 的采集系統(tǒng)進(jìn)行,所述的采集系統(tǒng)包括產(chǎn)品抓取模塊、預(yù)處理模塊、調(diào)度模塊、更新檢測模 塊、評(píng)論信息抓取模塊、皿as e數(shù)據(jù)存儲(chǔ)模塊、訪問間隔調(diào)整模塊;該方法包括:
[0010] a.產(chǎn)品抓取模塊由時(shí)間觸發(fā)服務(wù)器激活,周期性的從網(wǎng)絡(luò)中抓取數(shù)據(jù),獲取產(chǎn)品 的屬性參數(shù)并存入到皿ase數(shù)據(jù)存儲(chǔ)模塊中,同時(shí)檢查新抓取到的產(chǎn)品屬性Id是否已經(jīng)存 在待爬隊(duì)列,如果已經(jīng)存在則忽略,否則將其送到產(chǎn)品預(yù)處理模塊進(jìn)行預(yù)處理。
[0011] b.預(yù)處理模塊根據(jù)產(chǎn)品Id初始化產(chǎn)品的屬性參數(shù),將初始化后的產(chǎn)品Id經(jīng)過url 鏈接優(yōu)化處理后放入待爬隊(duì)列fetche;r_queue。
[0012] C.調(diào)度模塊不斷的從fetche;r_queue隊(duì)列中讀取數(shù)據(jù),并將數(shù)據(jù)封裝成化pie發(fā)射 Storm集群中。
[0013] d.更新檢測模塊檢查是否有新的評(píng)論產(chǎn)生,如果該產(chǎn)品有新評(píng)論產(chǎn)生,就將其送 到評(píng)論信息抓取模塊。
[0014] e.評(píng)論信息抓取模塊對(duì)更新檢測模塊檢測到有評(píng)論信息更新的產(chǎn)品進(jìn)行分布式 抓取。
[0015] f.訪問間隔調(diào)整模塊動(dòng)態(tài)調(diào)整產(chǎn)品下一次采集的時(shí)間,然后將其重新放入待爬隊(duì) 列 fetcher-queue 中。
[0016] 進(jìn)一步地,所述的訪問間隔調(diào)整模塊調(diào)整產(chǎn)品下一次采集的時(shí)間,包括W下步驟:
[0017] Sl.獲取產(chǎn)品歷史最小更新頻率fi、最大更新頻率fuW及采集間隔interval。
[0018] S2.獲取產(chǎn)品當(dāng)前的采集次數(shù)nt、評(píng)論信息發(fā)生更新次數(shù)nc,計(jì)算出產(chǎn)品當(dāng)前的更 新步頁率f C = HcAlt。
[0019] S3.根據(jù)下列公式來調(diào)整產(chǎn)品的采集間隔interval,
[0020] next-interval = Interval+ A t(公式 1)
[0021]
[0022]
[0023] S4.通過產(chǎn)品當(dāng)前的評(píng)論量n、最近一次評(píng)論信息產(chǎn)生的時(shí)間間隔tiW及最近一次 采集的產(chǎn)品評(píng)論信息的最大滯后時(shí)間t2作為其優(yōu)先級(jí)量化因子,分別對(duì)n、ti、t2做0~1區(qū)間 的歸一化操作,按下式計(jì)算該產(chǎn)品此時(shí)的優(yōu)先級(jí)P,重新放入待爬隊(duì)列f etche;r_queue;
[0024]
(公武苗。
[0025] 優(yōu)選地,預(yù)處理模塊對(duì)產(chǎn)品進(jìn)行預(yù)處理的步驟如下:
[0026] SI.獲取產(chǎn)品當(dāng)前的評(píng)論總數(shù)和最近一次評(píng)論時(shí)間,根據(jù)評(píng)論總數(shù)和最近一次評(píng) 論初始化其采集間隔interval。
[0027] S2.初始化產(chǎn)品的最大更新頻率f U和最小更新頻率fi,將產(chǎn)品Id經(jīng)過url鏈接優(yōu)化 模塊進(jìn)行處理,然后將該產(chǎn)品的采集間隔和優(yōu)化過的url鏈接放入頻率初始化隊(duì)列 打equency_init_queue;只要frequency_init_queue不為空,頻率初始化爬蟲打eCrawer即 W該產(chǎn)品的采集間隔對(duì)該產(chǎn)品進(jìn)行500次的采集,并記錄共發(fā)生更新的次數(shù)n。,采集結(jié)束 后,計(jì)算其更新頻率f c = nc/500,并用f C初始化產(chǎn)品的最大更新頻率fu和最小更新頻率f 1。
[0028] S3.將預(yù)處理過后的產(chǎn)品Id經(jīng)過url鏈接優(yōu)化模塊處理后放入待爬隊(duì)列fetcher_ queue O
[0029] 優(yōu)選地,更新檢測模塊獲取產(chǎn)品最新的評(píng)論總數(shù)current_total,然后和產(chǎn)品的歷 史評(píng)論總數(shù)OlcLtotal對(duì)比,如果大于歷史評(píng)論總數(shù),則更新產(chǎn)品的歷史評(píng)論總數(shù)、采集次 數(shù)、評(píng)論信息發(fā)生更新次數(shù)W及最近一次采集時(shí)間,并將該產(chǎn)品發(fā)送給評(píng)論信息抓取模塊 進(jìn)行評(píng)論信息采集,否則只更新產(chǎn)品的采集次數(shù)和最近一次采集時(shí)間。
[0030] 優(yōu)選地,所述的評(píng)論信息抓取模塊分布式抓取的步驟如下:
[0031 ] 81.獲取該產(chǎn)品的最近一次評(píng)論時(shí)間'6。6111:_(301111116]113_1:;[1116;
[0032] S2.根據(jù)更新檢測模塊的檢測的結(jié)果,下載相應(yīng)頁數(shù)的評(píng)論信息;
[0033] S3.對(duì)下載的評(píng)論信息做進(jìn)一步的清洗,找出對(duì)產(chǎn)品做出的最近一次評(píng)論時(shí)間,并 更新該產(chǎn)品最近一次評(píng)論時(shí)間;
[0034] S4.將抓取的新的產(chǎn)品評(píng)論信息發(fā)送到皿ase數(shù)據(jù)存儲(chǔ)模塊進(jìn)行存儲(chǔ)。
[0035] 采用上述技術(shù)方案后,本發(fā)明的有益效果在于:本發(fā)明將傳統(tǒng)的網(wǎng)絡(luò)爬蟲與開源 分布式流處理框架一Storm相結(jié)合,充分利用Storm分布式、高度容錯(cuò)性、無數(shù)據(jù)丟失、可擴(kuò) 展性強(qiáng)W及實(shí)時(shí)處理等優(yōu)勢,并通過動(dòng)態(tài)調(diào)整采集時(shí)間間隔算法和采集調(diào)度策略分別對(duì)采 集時(shí)間點(diǎn)和采集調(diào)度順序做了進(jìn)一步優(yōu)化,運(yùn)樣既減少了爬蟲的網(wǎng)絡(luò)請(qǐng)求次數(shù),而且還使 得每次請(qǐng)求更合理、有效,最后通過測試分析Storm集群的吞吐量和處理延遲等性能,結(jié)果 驗(yàn)證了 Storm能夠勝任對(duì)實(shí)時(shí)性要求較高場景下的網(wǎng)絡(luò)數(shù)據(jù)采集任務(wù)。
【附圖說明】
[0036] 圖1為本發(fā)明流程架構(gòu)圖。
[0037] 圖2為本發(fā)明評(píng)論信息分布式抓取架構(gòu)圖。 具體實(shí)施方案
[0038] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,W下結(jié)合附圖和實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。
[0039] 如圖1所示,本發(fā)明公開了基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法。本發(fā)明方法 在基于Storm平臺(tái)的采集系統(tǒng)進(jìn)行,采集系統(tǒng)包括產(chǎn)品抓取模塊、預(yù)處理模塊、調(diào)度模塊、更 新檢測模塊、評(píng)論信息抓取模塊、皿ase數(shù)據(jù)存儲(chǔ)模塊、訪問間隔調(diào)整模塊,W下對(duì)該系統(tǒng)進(jìn) 行評(píng)論信息實(shí)時(shí)采集方法進(jìn)行詳述:
[0040] a.產(chǎn)品抓取模塊
[0041] 由時(shí)間觸發(fā)服務(wù)器激活,周期性的從網(wǎng)絡(luò)中抓取數(shù)據(jù),獲取產(chǎn)品的屬性參數(shù)并存 入到皿ase數(shù)據(jù)存儲(chǔ)模塊中,同時(shí)檢查新抓取到的產(chǎn)品屬性Id是否已經(jīng)存在待爬隊(duì)列,如果 已經(jīng)存在則忽略,否則將其送到產(chǎn)品預(yù)處理模塊進(jìn)行預(yù)處理。
[0042] b.預(yù)處理模塊
[0043] 根據(jù)產(chǎn)品Id初始化產(chǎn)品的屬性參數(shù),將初始化后的產(chǎn)品Id經(jīng)過url鏈接優(yōu)化處理 后放入待爬隊(duì)列fetche;r_queue,其中待爬隊(duì)列fetche;r_queue是Beansta化d隊(duì)列中的一個(gè) 管道。具體步驟如下:
[0044] SI.獲取產(chǎn)品當(dāng)前的評(píng)論總數(shù)和最近一次評(píng)論時(shí)間,根據(jù)評(píng)論總數(shù)和最近一次評(píng) 論初始化其采集間隔interval。
[0045] S2.初始化產(chǎn)品的最大更新頻率f U和最小更新頻率fi,將產(chǎn)品Id經(jīng)過url鏈接優(yōu)化 模塊進(jìn)行處理,然后將該產(chǎn)品的采集間隔和優(yōu)化過的url鏈接放入頻率初始化隊(duì)列 打equency_init_queue;只要frequency_init_queue不為空,頻率初始化爬蟲打eCrawer即 W該產(chǎn)品的采集間隔對(duì)該產(chǎn)品進(jìn)行500次的采集,并記錄共發(fā)生更新的次數(shù)n。,采集結(jié)束 后,計(jì)算其更新頻率f c = nc/500,并用f C初始化產(chǎn)品的最大更新頻率fu和最小更新頻率f 1。
[0046] S3.將預(yù)處理過后的產(chǎn)品Id經(jīng)過url鏈接優(yōu)化模塊處理后放入待爬隊(duì)列fetcher_ queue O
[0047] c.調(diào)度模塊
[0048] 該模塊主要負(fù)責(zé)采集系統(tǒng)中產(chǎn)品的采集順序。由于該采集系統(tǒng)是基于Storm平臺(tái) 的,而Storm作為實(shí)時(shí)的流處理平臺(tái),只有源源不斷的為它提供數(shù)據(jù),它才能正常工作, Spout作為Storm的核屯、組件,它負(fù)責(zé)向Storm集群中發(fā)射數(shù)據(jù)流,因此,該模塊會(huì)不斷的被 Spout調(diào)用,從而不斷的從fetche;r_queue隊(duì)列中讀取數(shù)據(jù),并將數(shù)據(jù)封裝成化pie發(fā)射到 Storm集群中。
[0049] d.更新檢測模塊
[0050] 該模塊主要是用來檢測產(chǎn)品是否有新的評(píng)論產(chǎn)生。它根據(jù)產(chǎn)品的一些采集參數(shù)來 判斷產(chǎn)品是否有新的評(píng)論產(chǎn)生,如果該產(chǎn)品有新評(píng)論產(chǎn)生,就將其送到評(píng)論信息抓取模塊: 更新檢測模塊獲取產(chǎn)品最新的評(píng)論總數(shù)cu;rrent_total,然后和產(chǎn)品的歷史評(píng)論總數(shù)old_ total對(duì)比,如果大于歷史評(píng)論總數(shù),則更新產(chǎn)品的歷史評(píng)論總數(shù)、采集次數(shù)、評(píng)論信息發(fā)生 更新次數(shù)W及最近一次采集時(shí)間,并將該產(chǎn)品發(fā)送給評(píng)論信息抓取模塊進(jìn)行評(píng)論信息采 集,否則只更新產(chǎn)品的采集次數(shù)和最近一次采集時(shí)間。
[0051] e.評(píng)論信息抓取模塊
[0052] 該模塊是整個(gè)采集系統(tǒng)的核屯、。該模塊對(duì)更新檢測模塊檢測到有評(píng)論信息更新的 產(chǎn)品進(jìn)行分布式抓取。由于它運(yùn)行在Storm集群中,因此,可W實(shí)現(xiàn)對(duì)產(chǎn)品評(píng)論信息的分布 式抓取,分布式爬蟲架構(gòu)圖如圖2所示,架構(gòu)圖中評(píng)論信息抓取模塊包含下面組件:
[0053] (1 )Nimbus: Storm集群中的控制節(jié)點(diǎn),負(fù)責(zé)Storm集群中資源分配和任務(wù)調(diào)度。
[0054] ^Supervisor:Storm集群中的工作節(jié)點(diǎn),負(fù)責(zé)接受Nimbus分配的任務(wù),啟動(dòng)和停 止屬于自己管理的worker進(jìn)程。
[005日](3) Worker: Storm集群中運(yùn)行具體處理邏輯的進(jìn)程。
[0化6] (4化xecutor:同一個(gè)spout/bolt的task可能會(huì)共享一個(gè)物理線程,該線程稱為 Executor。
[0化7] (5)Task: worker 中每一個(gè) spout/bolt的線程稱為一個(gè) 1:ask。
[0化引 (G)Zooke邱er:是負(fù)責(zé)nimbus和supervisor之間協(xié)調(diào)的服務(wù)。
[0059] (7)皿ase:負(fù)責(zé)產(chǎn)品評(píng)論信息的存儲(chǔ)。
[0060] 評(píng)論信息抓取模塊分布式抓取的步驟如下:
[0061 ] Sl.獲取該產(chǎn)品的最近一次評(píng)論時(shí)間recent_comments_time。
[0062] S2.根據(jù)更新檢測模塊的檢測的結(jié)果,下載相應(yīng)頁數(shù)的評(píng)論信息。
[0063] S3.對(duì)下載的評(píng)論信息做進(jìn)一步的清洗,找出對(duì)產(chǎn)品做出的最近一次評(píng)論時(shí)間,并 更新該產(chǎn)品最近一次評(píng)論時(shí)間。
[0064] S4.將抓取的新的產(chǎn)品評(píng)論信息發(fā)送到皿ase數(shù)據(jù)存儲(chǔ)模塊進(jìn)行存儲(chǔ)。
[0065] f.訪問間隔調(diào)整模塊
[0066] 該模塊動(dòng)態(tài)調(diào)整產(chǎn)品下一次采集的時(shí)間,然后將其重新放入待爬隊(duì)列fetcher_ queue中。包括W下步驟:
[0067] Sl.獲取產(chǎn)品歷史最小更新頻率fi、最大更新頻率fuW及采集間隔interval。
[0068] S2.獲取產(chǎn)品當(dāng)前的采集次數(shù)nt、評(píng)論信息發(fā)生更新次數(shù)nc,計(jì)算出產(chǎn)品當(dāng)前的更 新步頁率f C = HcAlt。
[0069] S3.根據(jù)公式1、公式2來調(diào)整產(chǎn)品的采集間隔interval。
[0070] next-interval = Interval+ A t(公式 1)
[0071]
[0072]
[0073] 通過上面公式1、公式2分析可W發(fā)現(xiàn)對(duì)產(chǎn)品采集間隔的調(diào)整具體可W分為W下= 種情況:
[0074] (1).如果當(dāng)前計(jì)算的評(píng)論信息產(chǎn)生頻率fc介于下界fi和上界fu之間,無需調(diào)整,此 時(shí) At = Oo
[0075] (2).如果當(dāng)前計(jì)算的評(píng)論信息產(chǎn)生頻率f。小于下界fi,說明產(chǎn)品產(chǎn)生評(píng)論信息的 頻率變慢了,與歷史采集間隔相比需要增加,此時(shí)A t〉0,并重新設(shè)置下界fi和產(chǎn)品的采集 間隔。
[0076] (3).如果當(dāng)前計(jì)算的評(píng)論信息產(chǎn)生頻率fc大于上界fu,說明產(chǎn)品產(chǎn)生評(píng)論信息的 頻率變快了,與歷史采集間隔相比需要減少,此時(shí)A t<0,并重新設(shè)置上界fu和產(chǎn)品的采集 間隔。
[0077] S4.通過產(chǎn)品當(dāng)前的評(píng)論量n、最近一次評(píng)論信息產(chǎn)生的時(shí)間間隔tiW及最近一次 采集的產(chǎn)品評(píng)論信息的最大滯后時(shí)間t2作為其優(yōu)先級(jí)量化因子,分別對(duì)n、ti、t2做0~1區(qū)間 的歸一化操作,按公式3計(jì)算該產(chǎn)品此時(shí)的優(yōu)先級(jí)P,重新放入待爬隊(duì)列fetche;r_queue。
[007引
(忿式巧
[00巧]e.皿ase數(shù)據(jù)存儲(chǔ)模塊
[0080] 該模塊主要配合各模塊的運(yùn)行中對(duì)解析到的數(shù)據(jù)進(jìn)行存儲(chǔ)。數(shù)據(jù)傳統(tǒng)的關(guān)系型數(shù) 據(jù)庫對(duì)海量數(shù)據(jù)存儲(chǔ)已經(jīng)表現(xiàn)出乏力,因此,本發(fā)明采用新型的非關(guān)系數(shù)據(jù)庫皿ase來存儲(chǔ) 產(chǎn)品的基本屬性和產(chǎn)品的評(píng)論信息。
[0081] 綜上,本發(fā)明基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法將傳統(tǒng)的網(wǎng)絡(luò)爬蟲與開源 分布式流處理框架一Storm相結(jié)合,動(dòng)態(tài)調(diào)整采集時(shí)間間隔和采集調(diào)度策略,提高了實(shí)時(shí)采 集的準(zhǔn)確率和穩(wěn)定性。
[0082] W上所述,僅為本發(fā)明較佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明掲露的技術(shù)范圍內(nèi),可輕易想到的變化或替換, 都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,其特征在于:該方法在基于Storm平臺(tái)的 采集系統(tǒng)進(jìn)行,所述的采集系統(tǒng)包括產(chǎn)品抓取模塊、預(yù)處理模塊、調(diào)度模塊、更新檢測模塊、 評(píng)論信息抓取模塊、HBas e數(shù)據(jù)存儲(chǔ)模塊、訪問間隔調(diào)整模塊;該方法包括: a. 產(chǎn)品抓取模塊由時(shí)間觸發(fā)服務(wù)器激活,周期性的從網(wǎng)絡(luò)中抓取數(shù)據(jù),獲取產(chǎn)品的屬 性參數(shù)并存入到HBase數(shù)據(jù)存儲(chǔ)模塊中,同時(shí)檢查新抓取到的產(chǎn)品屬性Id是否已經(jīng)存在待 爬隊(duì)列,如果已經(jīng)存在則忽略,否則將其送到產(chǎn)品預(yù)處理模塊進(jìn)行預(yù)處理; b. 預(yù)處理模塊根據(jù)產(chǎn)品Id初始化產(chǎn)品的屬性參數(shù),將初始化后的產(chǎn)品Id經(jīng)過url鏈接 優(yōu)化處理后放入待爬隊(duì)列f etcher_queue; c. 調(diào)度模塊不斷的從fetcher_queue隊(duì)列中讀取數(shù)據(jù),并將數(shù)據(jù)封裝成Tuple發(fā)射到 Storm集群中; d. 更新檢測模塊檢查是否有新的評(píng)論產(chǎn)生,如果該產(chǎn)品有新評(píng)論產(chǎn)生,就將其送到評(píng) 論信息抓取模塊; e. 評(píng)論信息抓取模塊對(duì)更新檢測模塊檢測到有評(píng)論信息更新的產(chǎn)品進(jìn)行分布式抓取; f. 訪問間隔調(diào)整模塊動(dòng)態(tài)調(diào)整產(chǎn)品下一次采集的時(shí)間,然后將其重新放入待爬隊(duì)列 fetcher_queue 中。2. 如權(quán)利要求1所述的基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,其特征在于:所述的 訪問間隔調(diào)整模塊調(diào)整產(chǎn)品下一次采集的時(shí)間,包括以下步驟:51. 獲取產(chǎn)品歷史最小更新頻率fi、最大更新頻率fu以及采集間隔interval;52. 獲取產(chǎn)品當(dāng)前的采集次數(shù)nt、評(píng)論信息發(fā)生更新次數(shù)n。,計(jì)算出產(chǎn)品當(dāng)前的更新頻 率 fc = nc/nt;53. 根據(jù)下列公式來調(diào)整產(chǎn)品的采集間隔i n t er va 1,54. 通過產(chǎn)品當(dāng)前的評(píng)論量n、最近一次評(píng)論信息產(chǎn)生的時(shí)間間隔t以及最近一次采集 的產(chǎn)品評(píng)論信息的最大滯后時(shí)間〖2作為其優(yōu)先級(jí)量化因子,分別對(duì)~1區(qū)間的歸 一化操作,按下式計(jì)算該產(chǎn)品此時(shí)的優(yōu)先級(jí)P,重新放入待爬隊(duì)列f etcher_queue;(公式3)。3. 如權(quán)利要求2所述的基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,其特征在于,預(yù)處理 模塊對(duì)產(chǎn)品進(jìn)行預(yù)處理的步驟如下: SI.獲取產(chǎn)品當(dāng)前的評(píng)論總數(shù)和最近一次評(píng)論時(shí)間,根據(jù)評(píng)論總數(shù)和最近一次評(píng)論初 始化其采集間隔interval; S2 .初始化產(chǎn)品的最大更新頻率fu和最小更新頻率f 1,將產(chǎn)品Id經(jīng)過url鏈接優(yōu)化模塊 進(jìn)行處理,然后將該產(chǎn)品的采集間隔和優(yōu)化過的url鏈接放入頻率初始化隊(duì)列frequency_ init_queue;只要frequency_init_queue不為空,頻率初始化爬蟲freCrawer即以該產(chǎn)品的 采集間隔對(duì)該產(chǎn)品進(jìn)行500次的采集,并記錄共發(fā)生更新的次數(shù)n。,采集結(jié)束后,計(jì)算其更 新頻率£。= 1!。/500,并用£。初始化產(chǎn)品的最大更新頻率匕和最小更新頻率€1; S3 .將預(yù)處理過后的產(chǎn)品Id經(jīng)過url鏈接優(yōu)化模塊處理后放入待爬隊(duì)列f etcher_ queue〇4. 如權(quán)利要求3所述的基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,其特征在于,更新檢 測模塊獲取產(chǎn)品最新的評(píng)論總數(shù)current_total,然后和產(chǎn)品的歷史評(píng)論總數(shù)old_total對(duì) 比,如果大于歷史評(píng)論總數(shù),則更新產(chǎn)品的歷史評(píng)論總數(shù)、采集次數(shù)、評(píng)論信息發(fā)生更新次 數(shù)以及最近一次采集時(shí)間,并將該產(chǎn)品發(fā)送給評(píng)論信息抓取模塊進(jìn)行評(píng)論信息采集,否則 只更新產(chǎn)品的采集次數(shù)和最近一次采集時(shí)間。5. 如權(quán)利要求4所述的基于Storm的產(chǎn)品評(píng)論信息實(shí)時(shí)采集方法,其特征在于,所述的 評(píng)論信息抓取模塊分布式抓取的步驟如下:51. 獲取該產(chǎn)品的最近一次評(píng)論時(shí)間recent_comments_time;52. 根據(jù)更新檢測模塊的檢測的結(jié)果,下載相應(yīng)頁數(shù)的評(píng)論信息;53. 對(duì)下載的評(píng)論信息做進(jìn)一步的清洗,找出對(duì)產(chǎn)品做出的最近一次評(píng)論時(shí)間,并更新 該產(chǎn)品最近一次評(píng)論時(shí)間;54. 將抓取的新的產(chǎn)品評(píng)論信息發(fā)送到HBase數(shù)據(jù)存儲(chǔ)模塊進(jìn)行存儲(chǔ)。
【文檔編號(hào)】G06F17/30GK106021391SQ201610313091
【公開日】2016年10月12日
【申請(qǐng)日】2016年5月11日
【發(fā)明人】郝志峰, 駱魁永, 蔡瑞初, 陳炳豐, 袁琴
【申請(qǐng)人】廣東工業(yè)大學(xué)