專利名稱:網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容抓取方法及網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容爬蟲系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)爬蟲技術(shù),特別是一種可以抓取網(wǎng)頁中的特定內(nèi)容的網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容抓取方法及網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容爬蟲系統(tǒng)。
背景技術(shù):
網(wǎng)絡(luò)的飛速發(fā)展,使互聯(lián)網(wǎng)成為大量重要信息的載體。如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。目前能夠幫助人們訪問互聯(lián)網(wǎng)信息的手段主要包括傳統(tǒng)搜索引擎、垂直搜索引擎,以及聚焦爬蟲。但是它們都存在著一定的局限性,應(yīng)用范圍不夠?qū)W?,無法完成新聞編輯、網(wǎng)絡(luò)內(nèi)容監(jiān)看等實(shí)際生產(chǎn)領(lǐng)域的業(yè)務(wù)需要,主要體現(xiàn)在以下方面。
傳統(tǒng)搜索引擎的局限性I.返回的結(jié)果包含大量用戶不關(guān)心的網(wǎng)頁;及2.有限的搜索引擎服務(wù)器資源與無限的網(wǎng)絡(luò)數(shù)據(jù)資源之間的矛盾。垂直搜索引擎的局限性I.抓取的數(shù)據(jù)傾向于結(jié)構(gòu)化數(shù)據(jù)及元數(shù)據(jù),根本上是一種服務(wù)于特定行業(yè)的搜索引擎,需要關(guān)鍵字來指導(dǎo)搜索所提供的服務(wù)方向。是通過對抓取的數(shù)據(jù)進(jìn)行再分類、分詞索引達(dá)到信息精準(zhǔn)的目標(biāo)。也就是說,只有在關(guān)鍵詞、及行業(yè)信息被明確后(如房地產(chǎn)、找工作等抓取目標(biāo))才能驅(qū)動(dòng)抓取。2.需要對抓取的內(nèi)容添加標(biāo)簽和屬性才能完成最終的檢索服務(wù)。用戶在使用時(shí),也只能查看到與某關(guān)鍵詞,或是某行業(yè)內(nèi)容有關(guān)的搜索結(jié)果。同時(shí),由于垂直搜索的這一工作特點(diǎn),無法及時(shí)跟蹤頁面內(nèi)容變換。聚焦爬蟲的局限性I.雖然能夠在一定程度上進(jìn)行對抓取目標(biāo)的描述和定義,但是過濾內(nèi)容的顆粒度不夠細(xì)膩;2.只是停留在對URL的搜索匹配,無法深入到頁面內(nèi)容本身;3.難以真正實(shí)現(xiàn)聚焦效果,受自身搜索策略限制 '及4.搜索結(jié)果以網(wǎng)頁為最小單元,而不是以內(nèi)容為最終抓取目標(biāo)。此外,隨著網(wǎng)絡(luò)新聞、博客、微博等技術(shù)的發(fā)展,網(wǎng)頁中的動(dòng)態(tài)內(nèi)容在互聯(lián)網(wǎng)上呈現(xiàn)出爆炸式增長,然而面向頁面和URL或由關(guān)鍵字驅(qū)動(dòng)的現(xiàn)有搜索引擎和爬蟲無法定制抓取網(wǎng)頁中指定區(qū)域中的內(nèi)容,且不能及時(shí)地抓取到滾動(dòng)新聞等動(dòng)態(tài)內(nèi)容的更新。因此,現(xiàn)有技術(shù)中需要一種能夠有效地對網(wǎng)頁內(nèi)部的動(dòng)態(tài)內(nèi)容進(jìn)行抓取并及時(shí)跟蹤頁面中動(dòng)態(tài)內(nèi)容變換的網(wǎng)絡(luò)爬蟲系統(tǒng)及方法。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中的上述問題,本發(fā)明提供一種新型網(wǎng)絡(luò)內(nèi)容抓取技術(shù)(Social-Spider技術(shù))。它通過多種先進(jìn)的發(fā)明技術(shù)組合,彌補(bǔ)了傳統(tǒng)網(wǎng)絡(luò)爬蟲無法定制
權(quán)利要求
1.一種網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容抓取方法,其特征在于,所述方法包括下述步驟 (1)向目標(biāo)網(wǎng)站提交訪問請求,獲取包含一項(xiàng)或多項(xiàng)動(dòng)態(tài)內(nèi)容的目標(biāo)網(wǎng)頁; (2)提取所獲取的目標(biāo)網(wǎng)頁中的指定區(qū)域中的動(dòng)態(tài)內(nèi)容; (3)對于提取到的每一項(xiàng)動(dòng)態(tài)內(nèi)容,判斷其是否存在于緩存中,若存在則不對該項(xiàng)動(dòng)態(tài)內(nèi)容進(jìn)行處理,若不存在則前進(jìn)至下一步驟以抓取該項(xiàng)動(dòng)態(tài)內(nèi)容; (4)將所述動(dòng)態(tài)內(nèi)容通過渲染固化到本地,以生成與所述動(dòng)態(tài)內(nèi)容的當(dāng)前內(nèi)容對應(yīng)的靜態(tài)內(nèi)容; (5)對所述靜態(tài)內(nèi)容進(jìn)行解析,提取目標(biāo)內(nèi)容并將其保存到本地,并將該項(xiàng)動(dòng)態(tài)內(nèi)容緩存至緩存中。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述動(dòng)態(tài)內(nèi)容是動(dòng)態(tài)滾動(dòng)內(nèi)容。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述目標(biāo)網(wǎng)頁是帶有Ajax代碼或引用外部Javascript腳本的動(dòng)態(tài)網(wǎng)頁。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述指定區(qū)域是通過選擇器指定的目標(biāo)網(wǎng)頁中的網(wǎng)頁片段或區(qū)塊。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述緩存為抓取層緩存。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,通過比較提取到的動(dòng)態(tài)內(nèi)容生成的緩存文件是否存在于緩存中,通過比較提取到的動(dòng)態(tài)內(nèi)容的網(wǎng)頁片段是否存在于緩存中,或者通過比較提取到的動(dòng)態(tài)內(nèi)容經(jīng)渲染后得到的內(nèi)容是否存在于緩存內(nèi)部的樹狀結(jié)構(gòu)中,來判斷其是否存在于緩存中,其中緩存內(nèi)部采用樹狀結(jié)構(gòu),動(dòng)態(tài)內(nèi)容經(jīng)渲染后在緩存中的樹狀結(jié)構(gòu)進(jìn)行查找,通過樹是否存在該節(jié)點(diǎn)來判斷內(nèi)容是否存在于緩存,進(jìn)而判斷該內(nèi)容是否為更新內(nèi)容。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,如果所述動(dòng)態(tài)滾動(dòng)內(nèi)容為網(wǎng)頁鏈接,則在上述步驟(4)中將所述網(wǎng)頁鏈接指向的網(wǎng)頁通過渲染固化到本地,以生成與所述動(dòng)態(tài)滾動(dòng)內(nèi)容的鏈接所指向的網(wǎng)頁的當(dāng)前內(nèi)容對應(yīng)的靜態(tài)內(nèi)容。
8.根據(jù)權(quán)利要求1-7中的任一項(xiàng)所述的方法,其特征在于,還包括下述步驟 (6)根據(jù)設(shè)定的更新頻率,重復(fù)執(zhí)行上述步驟(I)至(5),以使保存到本地的目標(biāo)內(nèi)容與目標(biāo)網(wǎng)頁中的動(dòng)態(tài)滾動(dòng)內(nèi)容保持同步。
9.一種網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容爬蟲系統(tǒng),其特征在于,包括執(zhí)行抓取任務(wù)的核心抓取引擎,所述核心抓取引擎包括 渲染器,其將動(dòng)態(tài)網(wǎng)頁中包含的數(shù)據(jù)通過渲染固化到本地,以生成與所述數(shù)據(jù)的當(dāng)前內(nèi)容對應(yīng)的靜態(tài)數(shù)據(jù); 內(nèi)置模擬瀏覽器,其模擬一臺或多臺客戶端瀏覽器與服務(wù)器通信; 解析器,其根據(jù)選擇器的運(yùn)行期請求對網(wǎng)頁或網(wǎng)頁片段進(jìn)行解析; 選擇器,其定位網(wǎng)頁內(nèi)容在網(wǎng)頁或網(wǎng)頁片段中的位置; 其中所述模擬瀏覽器向目標(biāo)網(wǎng)站提交訪問請求,獲取包含一項(xiàng)或多項(xiàng)動(dòng)態(tài)內(nèi)容的目標(biāo)網(wǎng)頁; 所述解析器提取所獲取的目標(biāo)網(wǎng)頁中的指定區(qū)域中的動(dòng)態(tài)內(nèi)容; 所述爬蟲系統(tǒng)對于提取到的每一項(xiàng)動(dòng)態(tài)內(nèi)容,判斷其是否存在于緩存中,若存在則不對該項(xiàng)動(dòng)態(tài)內(nèi)容進(jìn)行處理,若不存在則使用所述渲染器抓取該項(xiàng)動(dòng)態(tài)內(nèi)容;所述渲染器將所述動(dòng)態(tài)內(nèi)容通過渲染固化到本地,以生成與所述動(dòng)態(tài)內(nèi)容的當(dāng)前內(nèi)容對應(yīng)的靜態(tài)內(nèi)容; 所述解析器對所述靜態(tài)內(nèi)容進(jìn)行解析,提取目標(biāo)內(nèi)容并將其保存到本地,所述核心抓取引擎還將該項(xiàng)動(dòng)態(tài)內(nèi)容緩存至緩存中。
10.根據(jù)權(quán)利要求9所述的爬蟲系統(tǒng),其特征在于,還包括 任務(wù)組管理器,用于將一組具有相同屬性的抓取任務(wù)歸類到一個(gè)任務(wù)組中,并統(tǒng)一為該任務(wù)組中的任務(wù)分配運(yùn)行期資源; 任務(wù)調(diào)度器,用于對抓取任務(wù)生命周期進(jìn)行管理 '及 任務(wù)加載器; 其中在抓取多個(gè)目標(biāo)網(wǎng)站上的包含一項(xiàng)或多項(xiàng)動(dòng)態(tài)內(nèi)容的目標(biāo)網(wǎng)頁時(shí),所述任務(wù)調(diào)度·器為每個(gè)目標(biāo)網(wǎng)站分配一個(gè)定時(shí)器,所述定時(shí)器控制任務(wù)加載器訪問目標(biāo)網(wǎng)站的時(shí)間;任務(wù)加載器根據(jù)配置文件中的描述,向目標(biāo)網(wǎng)站提交訪問請求,并比較目標(biāo)網(wǎng)站的響應(yīng)與本地緩存,以確定目標(biāo)網(wǎng)頁中的一項(xiàng)或多項(xiàng)動(dòng)態(tài)內(nèi)容是否有更新; 若判斷有更新,則任務(wù)加載器向核心抓取引擎提出抓取請求,且核心抓取引擎在接收到任務(wù)加載器的請求后,開始進(jìn)行抓取工作,將動(dòng)態(tài)內(nèi)容通過模擬瀏覽器和渲染器提取到本地,并將新提取到的目標(biāo)內(nèi)容保存到緩存中; 若判斷沒有更新,則任務(wù)加載器拋棄該抓取任務(wù),并修改自身狀態(tài)為閑置,等待任務(wù)調(diào)度器分配下一任務(wù)。
全文摘要
本發(fā)明涉及網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容抓取方法及網(wǎng)絡(luò)動(dòng)態(tài)內(nèi)容爬蟲系統(tǒng),其中該方法包括向目標(biāo)網(wǎng)站提交訪問請求,獲取包含一項(xiàng)或多項(xiàng)動(dòng)態(tài)內(nèi)容的目標(biāo)網(wǎng)頁;提取所獲取的目標(biāo)網(wǎng)頁中的指定區(qū)域中的動(dòng)態(tài)內(nèi)容;對于提取到的每一項(xiàng)動(dòng)態(tài)內(nèi)容,判斷其是否存在于緩存中,若存在則不對該項(xiàng)動(dòng)態(tài)內(nèi)容進(jìn)行處理,若不存在則前進(jìn)至下一步驟以抓取該項(xiàng)動(dòng)態(tài)內(nèi)容;將該動(dòng)態(tài)內(nèi)容通過渲染固化到本地,以生成與該動(dòng)態(tài)內(nèi)容的當(dāng)前內(nèi)容對應(yīng)的靜態(tài)內(nèi)容;對該靜態(tài)內(nèi)容進(jìn)行解析,提取目標(biāo)內(nèi)容并將其保存到本地,并將該項(xiàng)動(dòng)態(tài)內(nèi)容緩存至緩存中。本發(fā)明的網(wǎng)絡(luò)內(nèi)容抓取技術(shù)能夠定制抓取網(wǎng)頁中指定區(qū)域中的內(nèi)容,及時(shí)抓取滾動(dòng)新聞等動(dòng)態(tài)滾動(dòng)內(nèi)容,并可用作搜索引擎及其他外部應(yīng)用的內(nèi)容提供者。
文檔編號G06F17/30GK102880607SQ20111019503
公開日2013年1月16日 申請日期2011年7月15日 優(yōu)先權(quán)日2011年7月15日
發(fā)明者張振輝 申請人:輿情(香港)有限公司