本發(fā)明屬于網(wǎng)頁(yè)數(shù)據(jù)處理領(lǐng)域,尤其涉及一種定制數(shù)據(jù)爬取工作流的方法及系統(tǒng)。
背景技術(shù):
隨著internet的迅速發(fā)展,以及b/s架構(gòu)應(yīng)用的普及,海量的web信息資源數(shù)以百萬(wàn)、千萬(wàn)計(jì)地產(chǎn)生。這使得在這些海量信息中獲取到用戶所需的有用信息難度異常的大。為了快速獲取到有用信息,快速爬蟲(chóng)crawler的微型搜索引擎成為人們用于特定信息檢索的必備工具。然而,隨著人們對(duì)信息的多樣化需求,以及數(shù)據(jù)分析系統(tǒng)對(duì)數(shù)據(jù)的內(nèi)容和格式的要求,crawler獲取的信息全而不精、精而不通的特點(diǎn),已經(jīng)無(wú)法滿足人們的需要。
用戶越來(lái)越感覺(jué)到很難在短時(shí)間內(nèi)按照用戶所需的工作流程準(zhǔn)確篩選出需要的內(nèi)容,很難迅速地找到所需要的信息。因此,crawler服務(wù)需要細(xì)化,需要更加通用的工作流程、更加有效的定制化服務(wù)。
因此,很多基于不同領(lǐng)域的垂直爬蟲(chóng)應(yīng)運(yùn)而生,以數(shù)據(jù)主題相關(guān)性強(qiáng)、結(jié)構(gòu)化程度高的特點(diǎn),解決了用戶對(duì)特定領(lǐng)域垂直數(shù)據(jù)的抽取問(wèn)題,在電子商務(wù)、房產(chǎn)領(lǐng)域、教育新聞以及專利檢索等領(lǐng)域有所應(yīng)用。這類爬蟲(chóng)可以讓用戶在某一垂直領(lǐng)域,以流程化步驟的方式執(zhí)行爬取工作。
但是,目前的垂直爬蟲(chóng)存在嚴(yán)重不足。(1)當(dāng)出現(xiàn)一個(gè)新的領(lǐng)域主題時(shí),信息聚合能力較低,無(wú)法滿足用戶特殊需要,更加嚴(yán)重的是工作流的可定制化和通用性不強(qiáng)。(2)其次,抽取到的內(nèi)容存儲(chǔ)結(jié)構(gòu)混亂,無(wú)法對(duì)獲取到的信息進(jìn)行有效的管理。(3)另外,對(duì)變動(dòng)的業(yè)務(wù)需求也無(wú)法應(yīng)對(duì),擴(kuò)展性低,適用范圍很小,造成資源浪費(fèi)。
這些問(wèn)題導(dǎo)致了用戶或業(yè)務(wù)系統(tǒng)不能獲取到充分的、可用于分析的數(shù)據(jù)資源,如實(shí)驗(yàn)研究、輿情分析、商品信息比對(duì)等。這就需要構(gòu)建相應(yīng)的工作流可定制垂直爬蟲(chóng),來(lái)抽取領(lǐng)域信息。因此,通過(guò)實(shí)現(xiàn)垂直爬蟲(chóng)的工作流定制化功能來(lái)解決特定領(lǐng)域的特殊網(wǎng)頁(yè)的垂直流分析,快速地得到豐富的互聯(lián)網(wǎng)信息資源,提高互聯(lián)網(wǎng)信息聚合能力,使得垂直爬蟲(chóng)系統(tǒng)在數(shù)據(jù)抽取的工作流可定制性、通用性、靈活性方面的改進(jìn)成為一個(gè)關(guān)鍵技術(shù)研究點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
為了解決用戶或業(yè)務(wù)系統(tǒng)無(wú)法獲取到充分的可用于分析的數(shù)據(jù)資源的不足,本發(fā)明提供了一種定制數(shù)據(jù)爬取工作流的方法。
本發(fā)明的一種定制數(shù)據(jù)爬取工作流的方法,包括:
配置網(wǎng)頁(yè)的參數(shù)及存儲(chǔ)路徑,生成定制網(wǎng)頁(yè)并同步存儲(chǔ)至xml文件中;
采用dom方式來(lái)解析xml文件并生成爬蟲(chóng)樹(shù);
編譯運(yùn)行爬蟲(chóng)樹(shù),進(jìn)而抓取出相應(yīng)網(wǎng)頁(yè)數(shù)據(jù)。
進(jìn)一步的,該方法還包括:根據(jù)網(wǎng)頁(yè)的存儲(chǔ)路徑,構(gòu)建與存儲(chǔ)路徑中存儲(chǔ)位置相匹配的步驟節(jié)點(diǎn)。
本發(fā)明通過(guò)構(gòu)建與存儲(chǔ)路徑中存儲(chǔ)位置相匹配的步驟節(jié)點(diǎn),每個(gè)步驟節(jié)點(diǎn)與生成的爬蟲(chóng)樹(shù)中的節(jié)點(diǎn)相對(duì)應(yīng),而且這樣能夠加快生成有序的可流程化的執(zhí)行的爬蟲(chóng)樹(shù)的速度,且提高了生成爬蟲(chóng)樹(shù)的準(zhǔn)確性。
進(jìn)一步的,所述步驟節(jié)點(diǎn)中存儲(chǔ)的信息包括步驟節(jié)點(diǎn)屬性和執(zhí)行動(dòng)作信息;所述步驟節(jié)點(diǎn)屬性包括步驟父節(jié)點(diǎn)和步驟子節(jié)點(diǎn);執(zhí)行動(dòng)作信息包括下鉆步驟和存盤步驟。
對(duì)于圖片存盤,將圖片的url保存起來(lái);對(duì)于文字存盤,直接存儲(chǔ)在本步驟節(jié)點(diǎn)或者父節(jié)點(diǎn)所設(shè)定的存儲(chǔ)路徑。
進(jìn)一步的,構(gòu)建與存儲(chǔ)路徑中存儲(chǔ)位置相匹配的步驟節(jié)點(diǎn)的具體過(guò)程包括:
將網(wǎng)頁(yè)的存儲(chǔ)路徑中的初始存儲(chǔ)位置設(shè)置為步驟父節(jié)點(diǎn);
按照網(wǎng)頁(yè)的存儲(chǔ)路徑中存儲(chǔ)位置的變化,依次順序設(shè)置步驟父節(jié)點(diǎn)的步驟子節(jié)點(diǎn)以及步驟子節(jié)點(diǎn)的步驟子節(jié)點(diǎn),同時(shí)配置相應(yīng)步驟節(jié)點(diǎn)的執(zhí)行動(dòng)作信息。
進(jìn)一步的,配置的網(wǎng)頁(yè)參數(shù)包括圖片和文字,所述存盤步驟包括圖片存盤步驟和文字存盤步驟;當(dāng)步驟子節(jié)點(diǎn)內(nèi)的執(zhí)行動(dòng)作信息為存盤步驟,則根據(jù)配置的網(wǎng)頁(yè)參數(shù),構(gòu)建相應(yīng)步驟子節(jié)點(diǎn)的兄弟節(jié)點(diǎn)來(lái)執(zhí)行圖片存盤步驟或文字存盤步驟。
進(jìn)一步的,在編譯運(yùn)行爬蟲(chóng)樹(shù)的過(guò)程中,按照深度優(yōu)先搜索順序來(lái)遍歷爬蟲(chóng)樹(shù),最終抓取出相應(yīng)網(wǎng)頁(yè)數(shù)據(jù)。這樣能夠提高網(wǎng)頁(yè)數(shù)據(jù)抓取的準(zhǔn)確性。
當(dāng)抓取出網(wǎng)頁(yè)數(shù)據(jù)失敗時(shí),間隔預(yù)設(shè)時(shí)間后重新再抓取,記錄抓取次數(shù)直至預(yù)設(shè)最多次數(shù)值;若仍然失敗,任務(wù)失敗,則存儲(chǔ)相關(guān)失敗信息。這樣用來(lái)提高網(wǎng)頁(yè)數(shù)據(jù)抓取效率。
本發(fā)明還提供了一種定制數(shù)據(jù)爬取工作流的系統(tǒng)。
本發(fā)明的一種定制數(shù)據(jù)爬取工作流的系統(tǒng),包括:
網(wǎng)頁(yè)配置模塊,其用于配置網(wǎng)頁(yè)的參數(shù)及存儲(chǔ)路徑,生成定制網(wǎng)頁(yè)并同步存儲(chǔ)至xml文件中;
爬蟲(chóng)樹(shù)生成模塊,其用于采用dom方式來(lái)解析xml文件并生成爬蟲(chóng)樹(shù);
爬蟲(chóng)樹(shù)編譯模塊,其用于編譯運(yùn)行爬蟲(chóng)樹(shù),進(jìn)而抓取出相應(yīng)網(wǎng)頁(yè)數(shù)據(jù)。
進(jìn)一步的,該系統(tǒng)還包括:步驟節(jié)點(diǎn)構(gòu)建模塊,其用于根據(jù)網(wǎng)頁(yè)的存儲(chǔ)路徑,構(gòu)建與存儲(chǔ)路徑中存儲(chǔ)位置相匹配的步驟節(jié)點(diǎn);
優(yōu)選地,在爬蟲(chóng)樹(shù)編譯模塊中,按照深度優(yōu)先搜索順序來(lái)遍歷爬蟲(chóng)樹(shù),最終抓取出相應(yīng)網(wǎng)頁(yè)數(shù)據(jù)。
進(jìn)一步的,所述步驟節(jié)點(diǎn)中存儲(chǔ)的信息包括步驟節(jié)點(diǎn)屬性和執(zhí)行動(dòng)作信息;所述步驟節(jié)點(diǎn)屬性包括步驟父節(jié)點(diǎn)和步驟子節(jié)點(diǎn);執(zhí)行動(dòng)作信息包括下鉆步驟和存盤步驟。
進(jìn)一步的,所述步驟節(jié)點(diǎn)構(gòu)建模塊還用于:
將網(wǎng)頁(yè)的存儲(chǔ)路徑中的初始存儲(chǔ)位置設(shè)置為步驟父節(jié)點(diǎn);
按照網(wǎng)頁(yè)的存儲(chǔ)路徑中存儲(chǔ)位置的變化,依次順序設(shè)置步驟父節(jié)點(diǎn)的步驟子節(jié)點(diǎn)以及步驟子節(jié)點(diǎn)的步驟子節(jié)點(diǎn),同時(shí)配置相應(yīng)步驟節(jié)點(diǎn)的執(zhí)行動(dòng)作信息;
優(yōu)選地,配置的網(wǎng)頁(yè)參數(shù)包括圖片和文字,所述存盤步驟包括圖片存盤步驟和文字存盤步驟;當(dāng)步驟子節(jié)點(diǎn)內(nèi)的執(zhí)行動(dòng)作信息為存盤步驟,則根據(jù)配置的網(wǎng)頁(yè)參數(shù),構(gòu)建相應(yīng)步驟子節(jié)點(diǎn)的兄弟節(jié)點(diǎn)來(lái)執(zhí)行圖片存盤步驟或文字存盤步驟。
優(yōu)選地,在所述爬蟲(chóng)樹(shù)編譯模塊中,當(dāng)抓取出網(wǎng)頁(yè)數(shù)據(jù)失敗時(shí),間隔預(yù)設(shè)時(shí)間后重新再抓取,記錄抓取次數(shù)直至預(yù)設(shè)最多次數(shù)值;若仍然失敗,任務(wù)失敗,則存儲(chǔ)相關(guān)失敗信息。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
本發(fā)明通過(guò)實(shí)現(xiàn)垂直爬蟲(chóng)的定制化功能來(lái)解決特定領(lǐng)域的特殊網(wǎng)頁(yè)分析,快速地得到豐富的互聯(lián)網(wǎng)信息資源,提高互聯(lián)網(wǎng)信息聚合能力,以xml文件的方式存儲(chǔ)更加高效,且便于管理,而且采用dom方式來(lái)解析xml文件并生成爬蟲(chóng)樹(shù);編譯運(yùn)行爬蟲(chóng)樹(shù),進(jìn)而抓取出相應(yīng)網(wǎng)頁(yè)數(shù)據(jù),使得垂直爬蟲(chóng)系統(tǒng)在數(shù)據(jù)抽取的通用性、靈活性方面的得到巨大改進(jìn)。能夠讓用戶在短時(shí)間內(nèi)準(zhǔn)確的篩選出需要的內(nèi)容。
附圖說(shuō)明
構(gòu)成本申請(qǐng)的一部分的說(shuō)明書(shū)附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。
圖1是生成定制網(wǎng)頁(yè)并同步存儲(chǔ)至xml文件的流程圖;
圖2是采用dom方式來(lái)解析xml文件并生成爬蟲(chóng)樹(shù)的流程圖;
圖3是編譯運(yùn)行爬蟲(chóng)樹(shù)的流程圖。
具體實(shí)施方式
應(yīng)該指出,以下詳細(xì)說(shuō)明都是例示性的,旨在對(duì)本申請(qǐng)?zhí)峁┻M(jìn)一步的說(shuō)明。除非另有指明,本文使用的所有技術(shù)和科學(xué)術(shù)語(yǔ)具有與本申請(qǐng)所屬技術(shù)領(lǐng)域的普通技術(shù)人員通常理解的相同含義。
需要注意的是,這里所使用的術(shù)語(yǔ)僅是為了描述具體實(shí)施方式,而非意圖限制根據(jù)本申請(qǐng)的示例性實(shí)施方式。如在這里所使用的,除非上下文另外明確指出,否則單數(shù)形式也意圖包括復(fù)數(shù)形式,此外,還應(yīng)當(dāng)理解的是,當(dāng)在本說(shuō)明書(shū)中使用術(shù)語(yǔ)“包含”和/或“包括”時(shí),其指明存在特征、步驟、操作、器件、組件和/或它們的組合。
本發(fā)明針對(duì)不同的爬取網(wǎng)站和數(shù)據(jù)爬取需求,可以個(gè)性化定制爬取路徑、爬取邏輯以及爬取數(shù)據(jù)存儲(chǔ)等工作流程,并可檢測(cè)工作流的正確性以及合理性。數(shù)據(jù)爬取工作流一經(jīng)定義,數(shù)據(jù)爬取工作可按照預(yù)定義方式展開(kāi)。采用本發(fā)明,可以使得爬取過(guò)程流程化、定制化,可快速適應(yīng)不同的爬取需求。
具體來(lái)說(shuō):
一是用戶針對(duì)不同的爬取網(wǎng)站和數(shù)據(jù)爬取需求,通過(guò)網(wǎng)頁(yè)前端對(duì)爬取的相關(guān)架構(gòu)、步驟、參數(shù)、存儲(chǔ)方式等信息進(jìn)行個(gè)性化定制,對(duì)爬取數(shù)據(jù)進(jìn)行聚焦處理,定制自己所需的爬取流程。
二是用圖形方式管理。利用步驟管理對(duì)象定義步驟節(jié)點(diǎn),每個(gè)步驟節(jié)點(diǎn)是個(gè)步驟定義對(duì)象,可以是存盤步驟,也可以是下鉆步驟,可以遞歸進(jìn)一步定義下層步驟節(jié)點(diǎn)。
步驟定義中的動(dòng)作由爬取對(duì)象封裝,存盤步驟調(diào)用存儲(chǔ)對(duì)象進(jìn)行存儲(chǔ),而下鉆步驟將爬取結(jié)果列表作為下層節(jié)點(diǎn)的爬取范圍列表。
下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
本發(fā)明共有三大步驟:定制并創(chuàng)建xml文件、解析xml并生成爬蟲(chóng)樹(shù)、編譯運(yùn)行。
第一步:定制并創(chuàng)建xml文件,如圖1所示。
步驟101:將格式化的配置信息存儲(chǔ)在指定文件夾下,里面是程序所需要的一些基本的默認(rèn)參數(shù)。
步驟102:打開(kāi)定制系統(tǒng)網(wǎng)頁(yè)。
步驟103:從根節(jié)點(diǎn)開(kāi)始,配置每一個(gè)節(jié)點(diǎn)的參數(shù)。
其中,每一個(gè)節(jié)點(diǎn)的參數(shù)包括:節(jié)點(diǎn)名稱、爬取的目標(biāo)、用來(lái)匹配相關(guān)數(shù)據(jù)的正則表達(dá)式、節(jié)點(diǎn)完成的動(dòng)參數(shù)。
節(jié)點(diǎn)名稱為用戶自定義節(jié)點(diǎn)名稱,類似于注釋,和程序不相關(guān);
爬取的目標(biāo)為要爬取的網(wǎng)頁(yè)鏈接;
節(jié)點(diǎn)完成的動(dòng)作包括下鉆和存盤,存盤又包括保存文本、增加文本還是保存圖片。
步驟104:定義上述節(jié)點(diǎn)是否有子節(jié)點(diǎn),若有,進(jìn)行步驟105。若沒(méi)有,進(jìn)行步驟106。
步驟105:創(chuàng)建子節(jié)點(diǎn),即下鉆節(jié)點(diǎn),再進(jìn)行步驟103進(jìn)行配置節(jié)點(diǎn)參數(shù),進(jìn)行迭代。
步驟106:存盤節(jié)點(diǎn),保存相應(yīng)的存盤目錄以及文件名字。
步驟107:定義上述節(jié)點(diǎn)是否有兄弟節(jié)點(diǎn)(用來(lái)完成其它任務(wù)),若有,進(jìn)行步驟108。若沒(méi)有,進(jìn)行步驟109。
步驟108:創(chuàng)建兄弟節(jié)點(diǎn),再進(jìn)行步驟103進(jìn)行配置參數(shù),進(jìn)行迭代。
步驟109:配置信息完成。
步驟110:根據(jù)上述信息,生成所需要的xml文件。
第二步:下面以一個(gè)實(shí)施例對(duì)xml解析實(shí)施過(guò)程進(jìn)行具體的闡述,如圖2所示。
步驟201:讀取存儲(chǔ)爬蟲(chóng)樹(shù)的xml文件,然后用dom方式解析xml文件,并將整個(gè)xml文件解析內(nèi)容放入內(nèi)存中,供程序進(jìn)一步解析結(jié)構(gòu)。
步驟202:,然后用dom方式解析xml文件,并將整個(gè)xml解析內(nèi)容放入內(nèi)存中,供程序進(jìn)一步解析結(jié)構(gòu)。
分步驟1:首先實(shí)例化dom解析器的工廠documentbuilderfactory,然后從dom工廠獲得dom解析器。
分步驟2:把要解析的xml文檔轉(zhuǎn)化為輸入流,以便dom解析器解析它。
分步驟3:解析xml文檔的輸入流,得到一個(gè)document;根據(jù)document進(jìn)行進(jìn)一步解析。
步驟202:通過(guò)解析協(xié)議,根據(jù)步驟201得到的document可以獲得xml文件的結(jié)構(gòu)和節(jié)點(diǎn)(包括節(jié)點(diǎn)的子節(jié)點(diǎn))的定制內(nèi)容進(jìn)一步讀取xml。
步驟203:使用遞歸算法,以當(dāng)前節(jié)點(diǎn)為根按層次,層層解析,將xml中的定制爬取流內(nèi)容解析成所需要的爬取步驟節(jié)點(diǎn)的數(shù)據(jù)格式。
步驟204:按照預(yù)先設(shè)定的爬取爬蟲(chóng)樹(shù)的通用結(jié)構(gòu),來(lái)組合解析xml得到的步驟節(jié)點(diǎn),形成一個(gè)包含完整爬取工作流程的爬蟲(chóng)樹(shù)。
步驟205:將完整的爬蟲(chóng)樹(shù)加載到定制頁(yè)面中,可以重新對(duì)步驟節(jié)點(diǎn)進(jìn)行增添、刪除、修改操作,重新定制工作流。
將修改后的定制工作流寫回文件存儲(chǔ)。對(duì)于獲取到的樹(shù)形工作流,可正式按照深度搜索dfs順序,執(zhí)行爬取流,正常進(jìn)行爬取工作。
第三步:編譯運(yùn)行。如圖3所示:
步驟301:從根節(jié)點(diǎn)開(kāi)始,根節(jié)點(diǎn)的任務(wù)一般情況下是根據(jù)初始鏈接,抓取到網(wǎng)頁(yè)中最大頁(yè)數(shù),然后按照某種規(guī)則去構(gòu)造其余頁(yè)數(shù)的網(wǎng)頁(yè)鏈接,保存在一個(gè)列表中。循環(huán)地將此鏈接傳遞給所有的子節(jié)點(diǎn),將此鏈接作為子節(jié)點(diǎn)抓取的目標(biāo)對(duì)象。
步驟302:第二層節(jié)點(diǎn)根據(jù)根節(jié)點(diǎn)傳入的網(wǎng)頁(yè)鏈接,將此網(wǎng)頁(yè)當(dāng)中的所有數(shù)據(jù)(比如某一個(gè)手機(jī))的具體鏈接抓取到,存進(jìn)列表中。然后又循環(huán)將此鏈接傳遞給子節(jié)點(diǎn),作為子節(jié)點(diǎn)的抓取目標(biāo)。
步驟303:從第三層開(kāi)始,將開(kāi)始真正抓取所需要的數(shù)據(jù)。將可能有多層。每層也可能會(huì)有多個(gè)節(jié)點(diǎn),這些節(jié)點(diǎn)必須按照邏輯順序進(jìn)行排列。首先根據(jù)各種參數(shù)去抓取網(wǎng)頁(yè)中的數(shù)據(jù),存儲(chǔ)在一個(gè)列表中。
步驟304:然后根據(jù)其步驟名稱去進(jìn)行下鉆或者存盤,存盤的話,有多種行為,繼續(xù)根據(jù)行為名稱進(jìn)行保存文本、增添文本或者保存圖片等。
步驟305:下鉆節(jié)點(diǎn)的話,每一個(gè)節(jié)點(diǎn)都有子節(jié)點(diǎn)的基本屬性。遍歷其子節(jié)點(diǎn)。遞歸執(zhí)行步驟303。
步驟306:遍歷完所有節(jié)點(diǎn),抓取數(shù)據(jù)完畢。
同時(shí)針對(duì)爬取訪問(wèn)頻率的問(wèn)題,提供兩種解決方案:
a.一種是在每訪問(wèn)一個(gè)網(wǎng)頁(yè)結(jié)束,休息隨機(jī)時(shí)間x(x∈[0.5,1])秒,來(lái)解決訪問(wèn)頻率。
b.第二種是訪問(wèn)失敗時(shí),休息n秒,重新再訪問(wèn),記錄訪問(wèn)次數(shù),最多m次;若仍然失敗,任務(wù)失敗,相關(guān)失敗信息存儲(chǔ)在相關(guān)文本中。
針對(duì)兩種方案進(jìn)行效率分析結(jié)果如下:
訪問(wèn)一個(gè)網(wǎng)頁(yè)的時(shí)間是x(單位是秒,以下時(shí)間的單位都是秒),訪問(wèn)兩個(gè)網(wǎng)頁(yè)之間的時(shí)間間隔為ti,訪問(wèn)的網(wǎng)頁(yè)數(shù)為y頁(yè)。假設(shè)訪問(wèn)第n次的失敗率為hn%
那么采用第一種方案所耗時(shí)間為
采用第二種方案所耗時(shí)間為xy+hn%·n秒。
可以得出當(dāng)y→∞,第一種方案所耗費(fèi)的間隔平均時(shí)間為
根據(jù)實(shí)驗(yàn)情況,綜合考慮,第二種情況的效率更高,效率比例約是h%·n=t/2,因此本發(fā)明主要采用第二種解決方案來(lái)提高效率。
綜上所述通過(guò)本發(fā)明實(shí)施例,改進(jìn)現(xiàn)有的垂直爬蟲(chóng)技術(shù),更高效地實(shí)現(xiàn)信息資源的獲取能力。采用本發(fā)明,可以使爬取過(guò)程流程化、定制化,可快速適應(yīng)不同的爬取需求。快速地得到豐富的互聯(lián)網(wǎng)信息資源,提高互聯(lián)網(wǎng)信息聚合能力,使得垂直爬蟲(chóng)系統(tǒng)在數(shù)據(jù)抽取的通用性、靈活性方面得到極大改進(jìn)。
本發(fā)明的一種定制數(shù)據(jù)爬取工作流的系統(tǒng),包括:
(1)網(wǎng)頁(yè)配置模塊,其用于配置網(wǎng)頁(yè)的參數(shù)及存儲(chǔ)路徑,生成定制網(wǎng)頁(yè)并同步存儲(chǔ)至xml文件中。
在網(wǎng)頁(yè)配置模塊中,設(shè)置爬取數(shù)據(jù)的存儲(chǔ)路徑,設(shè)置文件名,以及對(duì)文件進(jìn)行存儲(chǔ)操作。以及用于對(duì)爬取步驟生成的xml進(jìn)行存儲(chǔ),并設(shè)置存儲(chǔ)路徑、文件名。
在該模塊中,還定制爬取網(wǎng)站的范圍、正則表達(dá)式的模版、爬取結(jié)果,以及對(duì)爬取的字符串結(jié)果進(jìn)行簡(jiǎn)單的處理。
(2)爬蟲(chóng)樹(shù)生成模塊,其用于采用dom方式來(lái)解析xml文件并生成爬蟲(chóng)樹(shù);
(3)爬蟲(chóng)樹(shù)編譯模塊,其用于編譯運(yùn)行爬蟲(chóng)樹(shù),進(jìn)而抓取出相應(yīng)網(wǎng)頁(yè)數(shù)據(jù);
在爬蟲(chóng)樹(shù)編譯模塊中,按照深度優(yōu)先搜索順序來(lái)遍歷爬蟲(chóng)樹(shù),最終抓取出相應(yīng)網(wǎng)頁(yè)數(shù)據(jù)。
在所述爬蟲(chóng)樹(shù)編譯模塊中,當(dāng)抓取出網(wǎng)頁(yè)數(shù)據(jù)失敗時(shí),間隔預(yù)設(shè)時(shí)間后重新再抓取,記錄抓取次數(shù)直至預(yù)設(shè)最多次數(shù)值;若仍然失敗,任務(wù)失敗,則存儲(chǔ)相關(guān)失敗信息。
進(jìn)一步的,該系統(tǒng)還包括:步驟節(jié)點(diǎn)構(gòu)建模塊,其用于根據(jù)網(wǎng)頁(yè)的存儲(chǔ)路徑,構(gòu)建與存儲(chǔ)路徑中存儲(chǔ)位置相匹配的步驟節(jié)點(diǎn);
步驟節(jié)點(diǎn)中存儲(chǔ)的信息包括步驟節(jié)點(diǎn)屬性和執(zhí)行動(dòng)作信息;所述步驟節(jié)點(diǎn)屬性包括步驟父節(jié)點(diǎn)和步驟子節(jié)點(diǎn);執(zhí)行動(dòng)作信息包括下鉆步驟和存盤步驟。
進(jìn)一步的,步驟節(jié)點(diǎn)構(gòu)建模塊還用于:
將網(wǎng)頁(yè)的存儲(chǔ)路徑中的初始存儲(chǔ)位置設(shè)置為步驟父節(jié)點(diǎn);
按照網(wǎng)頁(yè)的存儲(chǔ)路徑中存儲(chǔ)位置的變化,依次順序設(shè)置步驟父節(jié)點(diǎn)的步驟子節(jié)點(diǎn)以及步驟子節(jié)點(diǎn)的步驟子節(jié)點(diǎn),同時(shí)配置相應(yīng)步驟節(jié)點(diǎn)的執(zhí)行動(dòng)作信息;
配置的網(wǎng)頁(yè)參數(shù)包括圖片和文字,所述存盤步驟包括圖片存盤步驟和文字存盤步驟;當(dāng)步驟子節(jié)點(diǎn)內(nèi)的執(zhí)行動(dòng)作信息為存盤步驟,則根據(jù)配置的網(wǎng)頁(yè)參數(shù),構(gòu)建相應(yīng)步驟子節(jié)點(diǎn)的兄弟節(jié)點(diǎn)來(lái)執(zhí)行圖片存盤步驟或文字存盤步驟。
一個(gè)爬蟲(chóng)樹(shù)是根據(jù)步驟節(jié)點(diǎn)之間的關(guān)系和結(jié)構(gòu)生成的樹(shù)狀,來(lái)表達(dá)和執(zhí)行流程的結(jié)構(gòu)。最終執(zhí)行的是以完整的爬蟲(chóng)樹(shù)來(lái)執(zhí)行,按照深度優(yōu)先策略的順序執(zhí)行。
具體的,存儲(chǔ)爬蟲(chóng)樹(shù)方法,通過(guò)用戶在定制網(wǎng)頁(yè)上輸入的定制參數(shù)和結(jié)構(gòu),同步以xml文件方式進(jìn)行存儲(chǔ)。無(wú)須手動(dòng)定制xml的結(jié)構(gòu),本發(fā)明會(huì)自動(dòng)根據(jù)定制的爬蟲(chóng)樹(shù)的結(jié)構(gòu)來(lái)設(shè)計(jì)xml的結(jié)構(gòu)。之后,用戶可以重新加載xml,解析并重新對(duì)其進(jìn)行修改。
具體的,解析xml文件的方法,采用dom方式解析。根據(jù)節(jié)點(diǎn)的內(nèi)容來(lái)自動(dòng)生成爬取模塊、存儲(chǔ)模塊、步驟定義模塊,并轉(zhuǎn)換為一個(gè)treenode。根據(jù)xml各節(jié)點(diǎn)的關(guān)系,組合treenode,生成爬蟲(chóng)樹(shù)。
上述雖然結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行了描述,但并非對(duì)本發(fā)明保護(hù)范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動(dòng)即可做出的各種修改或變形仍在本發(fā)明的保護(hù)范圍以內(nèi)。