本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體地說,是涉及一種網(wǎng)頁爬蟲操作方法和系統(tǒng)。
背景技術(shù):搜索引擎,是指根據(jù)一定的策略、運用特定的計算機程序從互聯(lián)網(wǎng)上搜集信息,在對信息進行組織和處理后,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)。對于所述搜索引擎從互聯(lián)網(wǎng)上搜集信息的過程,依賴于網(wǎng)絡(luò)爬蟲對相關(guān)網(wǎng)站信息的爬取。所述網(wǎng)絡(luò)爬蟲,是一種自動獲取網(wǎng)頁內(nèi)容的程序,是搜索引擎的重要組成部分。在現(xiàn)有技術(shù)中,對于普通的所搜引擎,傳統(tǒng)爬蟲從一個或若干初始網(wǎng)頁的URL開始,獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統(tǒng)的一定停止條件。目前現(xiàn)有技術(shù)中網(wǎng)絡(luò)爬蟲對網(wǎng)頁內(nèi)容的分析能力較差,只能通過機械式的不斷抓取網(wǎng)站信息,經(jīng)常并發(fā)幾十個或上百個請求循環(huán)重復(fù)抓取,其爬取頻率和爬取壓力非常高,從而大量消耗網(wǎng)站資源,對網(wǎng)站造成負擔甚至造成網(wǎng)站崩潰。同時,網(wǎng)絡(luò)爬蟲不能準確、高效地爬取出網(wǎng)站中的有用信息。因此,如何解決現(xiàn)有技術(shù)中網(wǎng)絡(luò)爬蟲對網(wǎng)站造成過大額外負擔以及不能準確、高效獲取網(wǎng)站信息,便成為亟待解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是提供一種網(wǎng)頁爬蟲操作方法和系統(tǒng),以解決現(xiàn)有技術(shù)中網(wǎng)絡(luò)爬蟲對網(wǎng)站造成過大額外負擔以及不能準確、高效獲取網(wǎng)站信息的問題。為解決上述技術(shù)問題,本發(fā)明提供了一種網(wǎng)頁爬蟲操作方法,其特征在于,包括:通過預(yù)設(shè)方式的參數(shù)抓取網(wǎng)站的URL并添加到內(nèi)存隊列;所述內(nèi)存隊列判斷其內(nèi)存儲的URL是否與剛添加進入的URL存在重疊,如有,則忽略該URL;如無,則對該URL下的網(wǎng)頁抓取數(shù)據(jù)以及遍歷該網(wǎng)頁中所涉及的下層鏈接URL,并判斷該下層鏈接URL是否存在重疊,如有,則忽略;如無,則對該下層鏈接URL下的網(wǎng)頁抓取數(shù)據(jù),然后所述內(nèi)存隊列判斷是否存在未處理的URL,如無,則將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件進行解析并抽取傳遞至數(shù)據(jù)處理隊列;所述數(shù)據(jù)處理隊列對該數(shù)據(jù)與已有數(shù)據(jù)進行對比分析,并根據(jù)分析結(jié)果信息修改所述預(yù)設(shè)方式的參數(shù)。優(yōu)選地,其中,所述預(yù)設(shè)方式的參數(shù),進一步包括:初始抓取地址、抓取頻率、網(wǎng)頁頁面的抓取延時條件以及網(wǎng)頁中數(shù)據(jù)存放隊列條件。優(yōu)選地,其中,所述預(yù)設(shè)條件,進一步包括:解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù)。優(yōu)選地,其中,所述通過預(yù)設(shè)方式的參數(shù)抓取網(wǎng)站的URL并添加到內(nèi)存隊列,進一步還包括:根據(jù)所在系統(tǒng)的初始化環(huán)境、服務(wù)器性能、網(wǎng)絡(luò)寬帶情況、以及抓取進程數(shù)量來設(shè)置一預(yù)設(shè)模版,通過該預(yù)設(shè)模版對預(yù)設(shè)方式中的參數(shù)進行設(shè)置,通過所述預(yù)設(shè)方式的參數(shù)抓取網(wǎng)站的URL并添加到內(nèi)存隊列。優(yōu)選地,其中,所述將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件進行解析并抽取傳遞至數(shù)據(jù)處理隊列,進一步為:將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件中的解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù),進行解析并抽取出信息,對該信息進行封裝后,傳遞至數(shù)據(jù)處理隊列。優(yōu)選地,其中,所述根據(jù)分析結(jié)果信息修改所述預(yù)設(shè)方式的參數(shù),進一步為:根據(jù)分析結(jié)果信息通過修改預(yù)設(shè)模版中的內(nèi)容,并通過該預(yù)設(shè)模版修改所述預(yù)設(shè)方式的參數(shù)中的抓取頻率。為解決上述技術(shù)問題,本發(fā)明還提供了一種網(wǎng)頁爬蟲操作系統(tǒng),其特征在于,包括:抓取模塊、內(nèi)存模塊和數(shù)據(jù)分析處理模塊;其特征在于,所述抓取模塊,用于通過預(yù)設(shè)方式的參數(shù)抓取網(wǎng)站的URL,將該URL傳送添加到所述內(nèi)存模塊中的內(nèi)存隊列;所述內(nèi)存模塊,用于接收所述抓取模塊傳送的網(wǎng)站URL存儲于其內(nèi)的內(nèi)存 隊列中,判斷所述內(nèi)存隊列內(nèi)存儲的URL是否與剛添加進入的URL存在重疊,如有,則忽略該URL;如無,則對該URL下的網(wǎng)頁抓取數(shù)據(jù)以及遍歷該網(wǎng)頁中所涉及的下層鏈接URL,并判斷該下層鏈接URL是否存在重疊,如有,則忽略;如無,則對該下層鏈接URL下的網(wǎng)頁抓取數(shù)據(jù),然后所述內(nèi)存隊列判斷是否存在未處理的URL,如無,則將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件進行解析并抽取傳遞至所述數(shù)據(jù)分析處理模塊;所述數(shù)據(jù)分析處理模塊,用于接收所述內(nèi)存模塊傳送的經(jīng)過抽取后的數(shù)據(jù)放入其內(nèi)部的數(shù)據(jù)處理隊列中,所述數(shù)據(jù)處理隊列對該數(shù)據(jù)與已有數(shù)據(jù)進行對比分析,并根據(jù)分析結(jié)果信息修改所述抓取模塊中預(yù)設(shè)方式的參數(shù)。優(yōu)選地,其中,所述抓取模塊中預(yù)設(shè)方式的參數(shù),進一步包括:初始抓取地址、抓取頻率、網(wǎng)頁頁面的抓取延時條件以及網(wǎng)頁中數(shù)據(jù)存放隊列條件。優(yōu)選地,其中,所述內(nèi)存模塊中預(yù)設(shè)條件,進一步包括:解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù)。優(yōu)選地,其中,所述抓取模塊,進一步還用于根據(jù)所在系統(tǒng)的初始化環(huán)境、服務(wù)器性能、網(wǎng)絡(luò)寬帶情況、以及抓取進程數(shù)量來設(shè)置一預(yù)設(shè)模版,通過該預(yù)設(shè)模版對預(yù)設(shè)方式中的參數(shù)進行設(shè)置。優(yōu)選地,其中,所述內(nèi)存模塊,進一步還用于將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件中的解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù),進行解析并抽取出信息,對該信息進行封裝后,傳遞至所述數(shù)據(jù)分析處理模塊中的數(shù)據(jù)處理隊列。優(yōu)選地,其中,所述數(shù)據(jù)分析處理模塊,進一步還用于根據(jù)分析結(jié)果信息通過修改所述抓取模塊中所述預(yù)設(shè)模版中的內(nèi)容,并通過該預(yù)設(shè)模版修改所述預(yù)設(shè)方式的參數(shù)中的抓取頻率。與現(xiàn)有技術(shù)相比,本發(fā)明所述的一種網(wǎng)頁爬蟲操作方法和系統(tǒng),達到了如下效果:1)本發(fā)明降低了網(wǎng)絡(luò)爬蟲的爬取頻率和爬取壓力,有效減少了對網(wǎng)站造成的過大額外負擔。2)本發(fā)明實現(xiàn)了大規(guī)模的分布式并發(fā)采集,極大提高了數(shù)據(jù)采集的效率及任務(wù)定制的高效性。3)本發(fā)明采用云技術(shù),實現(xiàn)了對需求內(nèi)容獲取的高準確性。附圖說明此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:圖1為本發(fā)明實施例一所述的一種網(wǎng)頁爬蟲操作方法的流程示意框圖;圖2為本發(fā)明實施例二所述的一種網(wǎng)頁爬蟲操作系統(tǒng)的具體結(jié)構(gòu)框圖。具體實施方式如在說明書及權(quán)利要求當中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準則。如在通篇說明書及權(quán)利要求當中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”。“大致”是指在可接受的誤差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實施本發(fā)明的較佳實施方式,然所述描述乃以說明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護范圍當視所附權(quán)利要求所界定者為準。以下結(jié)合附圖對本發(fā)明作進一步詳細說明,但不作為對本發(fā)明的限定。實施例一如圖1所示,是本發(fā)明實施例一所述的一種網(wǎng)頁爬蟲操作方法流程。步驟101,通過預(yù)設(shè)方式的參數(shù)抓取網(wǎng)站的URL(Uniform/UniversalResourceLocator,網(wǎng)頁地址)并添加到內(nèi)存隊列;步驟102,所述內(nèi)存隊列判斷其內(nèi)存儲的URL是否與剛添加進入的URL存在重疊,如有,則忽略該URL;如無,則對該URL下的網(wǎng)頁抓取數(shù)據(jù)以及遍歷該網(wǎng)頁中所涉及的下層鏈接URL,并判斷該下層鏈接URL是否存在重疊,如有, 則忽略;如無,則對該下層鏈接URL下的網(wǎng)頁抓取數(shù)據(jù),然后所述內(nèi)存隊列判斷是否存在未處理的URL,如無,則將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件進行解析并抽取傳遞至數(shù)據(jù)處理隊列;其中,對該URL下的網(wǎng)頁抓取數(shù)據(jù)以及遍歷該網(wǎng)頁中所涉及的下層鏈接URL,是根據(jù)預(yù)設(shè)條件來解析出該URL下的網(wǎng)頁中所涉及的下層鏈接,并根據(jù)預(yù)設(shè)條件中的遍歷深度值進行遍歷查找。后續(xù)相同內(nèi)容不再贅述。步驟103,所述數(shù)據(jù)處理隊列對該數(shù)據(jù)與已有數(shù)據(jù)進行對比分析,并根據(jù)分析結(jié)果信息修改所述預(yù)設(shè)方式的參數(shù)中的抓取頻率。(在本發(fā)明實施例一以及后面實施例中是對抓取頻率的修改,當然并不限于此參數(shù)還可以修改預(yù)設(shè)方式所包括的其他參數(shù),后面不再贅述)。步驟101中的所述預(yù)設(shè)方式的參數(shù),包括:初始抓取地址、抓取頻率、網(wǎng)頁頁面的抓取延時條件以及網(wǎng)頁中數(shù)據(jù)存放隊列條件。進一步,所述預(yù)設(shè)方式的設(shè)置過程是:根據(jù)所在系統(tǒng)的初始化環(huán)境、服務(wù)器性能、網(wǎng)絡(luò)寬帶情況、以及抓取進程數(shù)量來設(shè)置一預(yù)設(shè)模版,通過該預(yù)設(shè)模版對預(yù)設(shè)方式中的參數(shù)進行設(shè)置。所述步驟103中根據(jù)分析結(jié)果信息修改預(yù)設(shè)方式中的抓取頻率,進一步為:根據(jù)分析結(jié)果信息通過修改預(yù)設(shè)模版中的內(nèi)容,并通過該預(yù)設(shè)模版修改所述預(yù)設(shè)方式的參數(shù)中的抓取頻率。進一步地,所述內(nèi)存隊列在本實施例中也可以稱為去重隊列,對于本領(lǐng)域技術(shù)人員來說完全可以理解所述去重隊列和內(nèi)存隊列所表達的含義是一致的,后續(xù)不再贅述。進一步地,所述步驟102中所述的預(yù)設(shè)條件,包括:解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù)。所述步驟102中將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件進行解析并抽取傳遞至數(shù)據(jù)處理隊列,進一步為:將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件中的解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù),進 行解析并抽取出信息(包括數(shù)據(jù)信息、圖片和/或flash等二進制文件),對該信息進行封裝后,傳遞至數(shù)據(jù)處理隊列。在步驟103中進行對本分析的目的是分析該網(wǎng)站數(shù)據(jù)的變更頻度,來修正抓取頻率,從而達到解決現(xiàn)有技術(shù)中網(wǎng)絡(luò)爬蟲對網(wǎng)站造成過大額外負擔以及不能準確、高效獲取網(wǎng)站信息的問題。本發(fā)明實施例一的具體操作可以為:首先,根據(jù)所在系統(tǒng)的初始化環(huán)境、服務(wù)器性能、網(wǎng)絡(luò)寬帶情況、以及抓取進程數(shù)量來設(shè)置一預(yù)設(shè)模版,通過該預(yù)設(shè)模版對預(yù)設(shè)方式中的參數(shù)進行設(shè)置,設(shè)置同時并發(fā)抓取的進程數(shù)量和網(wǎng)站數(shù)量,將抓取進程平均分配至每個網(wǎng)站,這樣既可以合理抓取網(wǎng)站,避免爬蟲對被抓取網(wǎng)站帶來密集訪問的壓力,又不失效率;其次,通過預(yù)設(shè)方式的參數(shù)抓取網(wǎng)站的URL并添加到內(nèi)存隊列,由于網(wǎng)站有多個頁面,在未設(shè)置模版前,爬蟲將抓取網(wǎng)站中所有的頁面,但并不是每一頁面都對用戶有用,從而造成網(wǎng)絡(luò)資源的浪費,所以,通過預(yù)設(shè)模板,爬蟲只抓取用戶感興趣的數(shù)據(jù),其中,所述預(yù)設(shè)方式的參數(shù),包括:初始抓取地址、抓取頻率、網(wǎng)頁頁面的抓取延時條件以及網(wǎng)頁中數(shù)據(jù)存放隊列條件;再次,所述內(nèi)存隊列判斷其內(nèi)存儲的URL是否與剛添加進入的URL存在重疊,如有,則忽略該URL;如無,則對該URL下的網(wǎng)頁抓取數(shù)據(jù)以及遍歷該網(wǎng)頁中所涉及的下層鏈接URL,并判斷該下層鏈接URL是否存在重疊,如有,則忽略;如無,則對該下層鏈接URL下的網(wǎng)頁抓取數(shù)據(jù),然后所述內(nèi)存隊列判斷是否存在未處理的URL,如無,則將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件(所述的預(yù)設(shè)條件,包括:解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù))進行解析并抽取出信息(包括數(shù)據(jù)信息、圖片和/或flash等二進制文件),對該信息進行封裝后,傳遞至數(shù)據(jù)處理隊列;最后,所述數(shù)據(jù)處理隊列對該數(shù)據(jù)與已有數(shù)據(jù)進行對比分析,根據(jù)分析結(jié)果信息通過修改預(yù)設(shè)模版中的內(nèi)容,并通過該預(yù)設(shè)模版修改所述預(yù)設(shè)方式的參數(shù)中的抓取頻率。實施例二如圖2所示,是本發(fā)明實施例二所述的一種網(wǎng)頁爬蟲操作系統(tǒng),包括:抓取模塊201、內(nèi)存模塊202以及數(shù)據(jù)分析處理模塊203;其中,所述抓取模塊201,與所述內(nèi)存模塊202和數(shù)據(jù)分析處理模塊203相耦接,用于通過預(yù)設(shè)方式的參數(shù)抓取網(wǎng)站的URL(Uniform/UniversalResourceLocator,網(wǎng)頁地址),將該URL傳送添加到所述內(nèi)存模塊202中的內(nèi)存隊列。所述內(nèi)存模塊202,與所述抓取模塊201和數(shù)據(jù)分析處理模塊203相耦接,用于接收所述抓取模塊201傳送的網(wǎng)站URL存儲于其內(nèi)的內(nèi)存隊列中,之后,判斷所述內(nèi)存隊列內(nèi)存儲的URL是否與剛添加進入的URL存在重疊,如有,則忽略該URL;如無,則對該URL下的網(wǎng)頁抓取數(shù)據(jù)以及遍歷該網(wǎng)頁中所涉及的下層鏈接URL,并判斷該下層鏈接URL是否存在重疊,如有,則忽略;如無,則對該下層鏈接URL下的網(wǎng)頁抓取數(shù)據(jù),然后所述內(nèi)存隊列判斷是否存在未處理的URL,如無,則將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件進行解析并抽取傳遞至所述數(shù)據(jù)分析處理模塊203的數(shù)據(jù)處理隊列。其中,所述預(yù)設(shè)條件,進一步包括:解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù)。進一步地,所述內(nèi)存模塊202將抓取出的所述數(shù)據(jù)根據(jù)預(yù)設(shè)條件中的解析支持類Jquery語法的DOM數(shù)據(jù),解析支持json數(shù)據(jù)和/或解析支持script腳本的數(shù)據(jù),進行解析并抽取出信息(包括數(shù)據(jù)信息、圖片和/或flash等二進制文件),對該信息進行封裝后,傳遞至所述數(shù)據(jù)分析處理模塊203中的數(shù)據(jù)處理隊列。所述數(shù)據(jù)分析處理模塊203,與所述抓取模塊201和內(nèi)存模塊202相耦接,用于接收所述內(nèi)存模塊202傳送的經(jīng)過抽取后的數(shù)據(jù)放入其內(nèi)部的數(shù)據(jù)處理隊列中,所述數(shù)據(jù)處理隊列對該數(shù)據(jù)與已有數(shù)據(jù)進行對比分析,并根據(jù)分析結(jié)果信息修改所述抓取模塊201預(yù)設(shè)方式的參數(shù)中的抓取頻率。在本實施例中,所述預(yù)設(shè)方式的參數(shù),進一步包括:初始抓取地址、抓取頻率、網(wǎng)頁頁面的抓取延時條件以及網(wǎng)頁中數(shù)據(jù)存放隊列條件。其中,對于所述預(yù)設(shè)方式的設(shè)置過程,進一步為:所述抓取模塊201根據(jù)所 在系統(tǒng)的初始化環(huán)境、服務(wù)器性能、網(wǎng)絡(luò)寬帶情況、以及抓取進程數(shù)量來設(shè)置一預(yù)設(shè)模版,通過該預(yù)設(shè)模版對預(yù)設(shè)方式中的參數(shù)進行設(shè)置。進一步地,所述數(shù)據(jù)分析處理模塊203根據(jù)分析結(jié)果信息通過修改所述抓取模塊201中所述預(yù)設(shè)模版中的內(nèi)容,并通過該預(yù)設(shè)模版修改所述預(yù)設(shè)方式的參數(shù)中的抓取頻率。上述傳輸及采集過程可通過云技術(shù)實現(xiàn),從而可進行大規(guī)模的分布式并發(fā)采集,提高數(shù)據(jù)采集效率,對需求內(nèi)容準確獲取,最大限度的方便了任務(wù)的高效定制;同時,所述網(wǎng)頁爬蟲操作系統(tǒng)通過配置模板,靈活采集所有瀏覽器能看到的結(jié)構(gòu)化內(nèi)容,支持各種頁面類型,包含新聞、論壇、博客、圖片等。與現(xiàn)有技術(shù)相比,本發(fā)明所述的一種網(wǎng)頁爬蟲操作方法和系統(tǒng),達到了如下效果:1)本發(fā)明降低了網(wǎng)絡(luò)爬蟲的爬取頻率和爬取壓力,有效減少了對網(wǎng)站造成的過大額外負擔。2)本發(fā)明實現(xiàn)了大規(guī)模的分布式并發(fā)采集,極大提高了數(shù)據(jù)采集的效率及任務(wù)定制的高效性。3)本發(fā)明采用云技術(shù),實現(xiàn)了對需求內(nèi)容獲取的高準確性。上述說明示出并描述了本發(fā)明的若干優(yōu)選實施例,但如前所述,應(yīng)當理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。