網(wǎng)頁內(nèi)容爬取的方法和裝置的制造方法
【專利摘要】本公開提供一種網(wǎng)頁內(nèi)容爬取的方法和裝置,包括:調(diào)度爬取任務(wù);當(dāng)查詢到所述爬取任務(wù)有代理設(shè)置時,獲取代理IP隊列;進行資源管理處理;由數(shù)據(jù)抓取引擎采用多線程并行處理的方式進行數(shù)據(jù)抓?。桓鱾€線程對各自所抓取的數(shù)據(jù)交由解析引擎進行數(shù)據(jù)解析,并對解析數(shù)據(jù)進行持久化操作。本公開所述解決了一般網(wǎng)頁和需要登錄的網(wǎng)站的各個功能的爬取工作,爬取的任務(wù)由爬取組件完成,且實現(xiàn)了快速準(zhǔn)確,同時還能夠分析出目標(biāo)網(wǎng)站的層級關(guān)系,形成清晰的爬取目標(biāo)結(jié)構(gòu)圖,為爬取的數(shù)據(jù)建立起清晰的關(guān)系,通過反監(jiān)控管理實現(xiàn)了反爬技術(shù),為最終得到目標(biāo)數(shù)據(jù)掃清了障礙。
【專利說明】
網(wǎng)頁內(nèi)容爬取的方法和裝置
技術(shù)領(lǐng)域
[0001]本公開總體涉及網(wǎng)頁技術(shù)領(lǐng)域,具體而言,涉及一種網(wǎng)頁內(nèi)容爬取的方法和裝置。 【背景技術(shù)】
[0002]近年來,隨著Web信息爆炸式的增長,如何有效的在Web中獲取有用的信息已變得極其困難。目前互聯(lián)網(wǎng)網(wǎng)站爬蟲技術(shù)在豐富公司數(shù)據(jù)、獲取多源數(shù)據(jù)中扮演著重要的作用, 同時爬蟲技術(shù)也是數(shù)據(jù)挖掘不可缺少的工具。其中爬蟲技術(shù)在搜索引擎領(lǐng)域應(yīng)用非常廣泛,但是隨著網(wǎng)絡(luò)變得越來越復(fù)雜,這些通用的搜索引擎有時也會在信息領(lǐng)航中也會迷失方向,所以將爬蟲技術(shù)僅僅應(yīng)用于搜索引擎方向還是遠遠不夠的。
[0003]對于一個大規(guī)模的網(wǎng)頁內(nèi)容爬取系統(tǒng),常用的幾種通過網(wǎng)頁爬蟲進行爬取的策略各有優(yōu)缺點,網(wǎng)絡(luò)爬蟲也面臨兩個問題:一是網(wǎng)絡(luò)爬蟲需要解決的技術(shù)問題;二是網(wǎng)絡(luò)爬蟲存在的局限性。
[0004]為了高效的對頁面進行抓取,在進行并行抓取的同時,保證各進程間通信的問題, 讓各個組件之間進行高效的工作。URL的調(diào)度技術(shù)在網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計中起著關(guān)鍵的作用,提出了基于概率模型的啟發(fā)示度量規(guī)則,使網(wǎng)絡(luò)系統(tǒng)具有更加智能的路由功能,以便于始終可以向著用戶設(shè)定的主題進行頁面獲取?;W(wǎng)絡(luò)爬蟲系統(tǒng)基于概率模型的啟發(fā)示度量規(guī)則,另外還基于最佳優(yōu)先搜索的隧道技術(shù),用于克服對某個主題在進行抓取多次后,如果偏離了原先的主題,可以讓其迅速停止工作,從而在URL隊列中選取下一個URL作為下一次的頁面抓取出發(fā)點。
[0005]但是,現(xiàn)在爬蟲技術(shù)大部分是針對互聯(lián)網(wǎng)上單個網(wǎng)頁的爬取,遇到需要登錄后才能查詢相關(guān)信息的網(wǎng)站就無法進行爬取。
[0006]因此,需要一種新的網(wǎng)頁內(nèi)容爬取的方法和裝置。
[0007]在所述【背景技術(shù)】部分公開的上述信息僅用于加強對本公開的背景的理解,因此它可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
【發(fā)明內(nèi)容】
[0008]本公開提供一種網(wǎng)頁內(nèi)容爬取的方法和裝置,以解決現(xiàn)有技術(shù)中對于需要登錄后才能查詢相關(guān)信息的網(wǎng)站取法進行爬取的技術(shù)問題。
[0009]本公開的其他特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習(xí)得。
[0010]根據(jù)本公開的一方面,提供一種網(wǎng)頁內(nèi)容爬取的方法,包括:
[0011]調(diào)度爬取任務(wù);
[0012]當(dāng)查詢到所述爬取任務(wù)有代理設(shè)置時,獲取代理IP隊列;
[0013]進行資源管理處理;
[0014]由數(shù)據(jù)抓取引擎采用多線程并行處理的方式進行數(shù)據(jù)抓取;
[0015]各個線程對各自所抓取的數(shù)據(jù)交由解析引擎進行數(shù)據(jù)解析,并對解析數(shù)據(jù)進行持久化操作。
[0016]根據(jù)本公開的一實施方式,根據(jù)預(yù)設(shè)的時間周期定時地調(diào)度所述爬取任務(wù)。
[0017]根據(jù)本公開的一實施方式,所述當(dāng)查詢到所述爬取任務(wù)有代理設(shè)置時,獲取代理 IP隊列的步驟包括:
[0018]判斷所述爬取任務(wù)是否需要設(shè)置代理IP;
[0019]如果需要設(shè)置代理IP,則從配置表中查詢針對當(dāng)前系統(tǒng)已配置的代理IP地址隊列;
[0020]從所述已配置的代理IP地址隊列中取出一個IP地址;
[0021]檢測取出的IP地址是否能夠爬取通過,如果能夠通過則即為找到有效IP;
[0022]按照隊列順序采用輪循方式取出下一個IP地址進行檢測,所有爬取通過的有效IP 構(gòu)成所述代理IP隊列,以便對網(wǎng)頁內(nèi)容進行爬取。[〇〇23]根據(jù)本公開的一實施方式,通過模擬用戶登錄進行資源管理處理,包括初始化 cookie信息,具體包括:[0〇24] 判斷是否存在已有的cookie,如果存在已有的cookie則進一步判斷所述已有的 cookie是否有效;[0〇25] 如果沒有所述已有的cookie或者所述已有的cookie已失效,貝lj重新生成cookie。 [0〇26]根據(jù)本公開的一實施方式,還包括:[0〇27]如果所述已有的cookie仍有效,則使用所述已有的cookie或重新生成的cookie來獲取圖片驗證碼,當(dāng)圖片驗證獲取成功后組織登錄參數(shù);
[0028]動態(tài)拼裝所述登錄參數(shù)后請求登錄接口,如果通過所述登錄接口能夠成功登錄則更新所述已有的cookie,如果未能成功登錄則判斷是否繼續(xù)登錄,如果繼續(xù)登錄則重新所述初始化cookie信息。
[0029]根據(jù)本公開的一實施方式,所述進行數(shù)據(jù)抓取包括:
[0030]模擬瀏覽器打開目標(biāo)網(wǎng)站;
[0031]判斷是否成功打開所述目標(biāo)網(wǎng)站,如果沒有打開則結(jié)束;
[0032]如果成功打開則獲取所述目標(biāo)網(wǎng)站上的所有表單控件,并進行逐一賦值后提交表單數(shù)據(jù);[〇〇33]加載JS請求,并根據(jù)所述JS請求返回JS0N格式數(shù)據(jù)。
[0034]根據(jù)本公開的一實施方式,所述解析引擎結(jié)合解析規(guī)則針對不同類型的返回數(shù)據(jù)進行數(shù)據(jù)解析,所述返回數(shù)據(jù)的類型包括JS0N格式數(shù)據(jù)、HTML格式數(shù)據(jù)以及通過JS動態(tài)加載得到的數(shù)據(jù)。
[0035]根據(jù)本公開的一實施方式,所述方法還包括:
[0036]進行數(shù)據(jù)結(jié)構(gòu)化操作,從數(shù)據(jù)源中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,并按照預(yù)先定義好的數(shù)據(jù)模型,將清洗后的數(shù)據(jù)加載到數(shù)據(jù)模型中。
[0037]根據(jù)本公開的再一方面,還提供一種網(wǎng)頁內(nèi)容爬取的裝置,包括:
[0038]任務(wù)調(diào)度模塊,用于調(diào)度爬取任務(wù);[〇〇39] 代理IP模塊,用于當(dāng)查詢到所述爬取任務(wù)有代理設(shè)置時,獲取代理IP隊列;[〇〇4〇]資源管理模塊,用于進行資源管理處理;
[0041]數(shù)據(jù)抓取模塊,用于由數(shù)據(jù)抓取引擎采用多線程并行處理的方式進行數(shù)據(jù)抓取;
[0042]數(shù)據(jù)持久化模塊,用于各個線程對各自所抓取的數(shù)據(jù)交由解析引擎進行數(shù)據(jù)解析,并對解析數(shù)據(jù)進行持久化操作。
[0043]根據(jù)本公開的一實施方式,所述任務(wù)調(diào)度模塊根據(jù)預(yù)設(shè)的時間周期定時地調(diào)度所述爬取任務(wù)。
[0044]根據(jù)本公開的一實施方式,所述代理IP模塊包括:
[0045]判斷子模塊,用于判斷所述爬取任務(wù)是否需要設(shè)置代理IP;
[0046]查詢子模塊,用于當(dāng)所述判斷子模塊的判斷結(jié)構(gòu)為需要設(shè)置代理IP時,從配置表中查詢針對當(dāng)前系統(tǒng)已配置的代理IP地址隊列;[〇〇47] 取出IP地址子模塊,用于從所述已配置的代理IP地址隊列中取出一個IP地址;
[0048]檢測子模塊,用于檢測取出的IP地址是否能夠爬取通過,如果能夠通過則即為找到有效IP;
[0049]輪循子模塊,用于按照隊列順序采用輪循方式取出下一個IP地址進行檢測,所有爬取通過的有效IP構(gòu)成所述代理IP隊列,以便對網(wǎng)頁內(nèi)容進行爬取。
[0050]根據(jù)本公開的一實施方式,所述資源管理模塊包括:[0051 ]初始化子模塊,用于初始化cookie信息,判斷是否存在已有的cookie,如果存在已有的cookie則進一步判斷所述已有的cookie是否有效;當(dāng)沒有所述已有的cookie或者所述已有的cookie已失效時,重新生成cookie。[〇〇52]根據(jù)本公開的一實施方式,所述資源管理模塊還包括:
[0053]圖片驗證子模塊,用于當(dāng)所述已有的cookie仍有效時,使用所述已有的cookie或重新生成的cookie來獲取圖片驗證碼,當(dāng)圖片驗證獲取成功后組織登錄參數(shù);動態(tài)拼裝所述登錄參數(shù)后請求登錄接口,如果通過所述登錄接口能夠成功登錄則更新所述已有的 cookie,如果未能成功登錄則判斷是否繼續(xù)登錄,如果繼續(xù)登錄則重復(fù)所述初始化子模塊。 [〇〇54]根據(jù)本公開的一實施方式,所述數(shù)據(jù)抓取模塊包括:
[0055]模擬打開網(wǎng)站子模塊,用于模擬瀏覽器打開目標(biāo)網(wǎng)站;
[0056]打開成功判斷子模塊,用于判斷是否成功打開所述目標(biāo)網(wǎng)站,如果沒有打開則結(jié)束;如果成功打開則轉(zhuǎn)至提交表單數(shù)據(jù)子模塊;[〇〇57]提交表單數(shù)據(jù)子模塊,用于獲取所述目標(biāo)網(wǎng)站上的所有表單控件,并進行逐一賦值后提交表單數(shù)據(jù);[〇〇58]加載JS請求子模塊,用于加載JS請求,并根據(jù)所述JS請求返回JS0N格式數(shù)據(jù)。
[0059]根據(jù)本公開的一實施方式,所述數(shù)據(jù)持久化模塊通過解析引擎結(jié)合解析規(guī)則針對不同類型的返回數(shù)據(jù)進行數(shù)據(jù)解析,所述返回數(shù)據(jù)的類型包括JS0N格式數(shù)據(jù)、HTML格式數(shù)據(jù)以及通過JS動態(tài)加載得到的數(shù)據(jù)。
[0060]根據(jù)本公開的一實施方式,所述裝置還包括:
[0061]數(shù)據(jù)結(jié)構(gòu)化模塊,用于進行數(shù)據(jù)結(jié)構(gòu)化操作,從數(shù)據(jù)源中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,并按照預(yù)先定義好的數(shù)據(jù)模型,將清洗后的數(shù)據(jù)加載到數(shù)據(jù)模型中。[〇〇62]根據(jù)本公開的技術(shù)方案,能夠得到以下技術(shù)效果:
[0063]本公開所述解決了一般網(wǎng)頁和需要登錄的網(wǎng)站的各個功能的爬取工作,爬取的任務(wù)由爬取組件完成,且實現(xiàn)了快速準(zhǔn)確,同時還能夠分析出目標(biāo)網(wǎng)站的層級關(guān)系,形成清晰的爬取目標(biāo)結(jié)構(gòu)圖,為爬取的數(shù)據(jù)建立起清晰的關(guān)系,通過反監(jiān)控管理實現(xiàn)了反爬技術(shù),為最終得到目標(biāo)數(shù)據(jù)掃清了障礙。
[0064]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性的,并不能限制本公開?!靖綀D說明】
[0065]通過參照附圖詳細描述其示例實施例,本公開的上述和其它目標(biāo)、特征及優(yōu)點將變得更加顯而易見。
[0066]圖1示出根據(jù)本公開一實施例中提供的一種網(wǎng)頁內(nèi)容爬取的方法的步驟流程圖。 [〇〇67]圖2示出根據(jù)本公開一實施例獲取代理IP隊列的步驟流程圖。[〇〇68]圖3示出根據(jù)本公開一實施例動態(tài)代理IP設(shè)置以及輪循的步驟由反監(jiān)控組件完成的原理示意圖。
[0069]圖4示出根據(jù)本公開一實施例模擬用戶登錄的步驟流程圖。
[0070]圖5示出根據(jù)本公開一實施例中模擬用戶登錄流程的原理示意圖。[〇〇71]圖6示出根據(jù)本公開一實施例中進行抓取數(shù)據(jù)的步驟流程圖。
[0072]圖7示出根據(jù)本公開另一實施例中提供的一種網(wǎng)頁內(nèi)容爬取的方法的步驟流程圖。
[0073]圖8示出實現(xiàn)本公開實施例提供的網(wǎng)頁內(nèi)容爬取的方法的平臺的總體架構(gòu)圖。
[0074]圖9示出圖8所示平臺的功能組件圖。
[0075]圖10示出根據(jù)本公開實施例提供的平臺中檢索引擎工作的原理示意圖。[〇〇76]圖11示出根據(jù)本公開調(diào)度分發(fā)器組件里的重定向處理流程圖。
[0077]圖12示出根據(jù)本公開一實施例提供的一種網(wǎng)頁內(nèi)容爬取的裝置的示意圖。[〇〇78]圖13示出根據(jù)本公開一實施例中代理IP模塊的組成示意圖。[〇〇79]圖14示出根據(jù)本公開一實施例中資源管理模塊的組成示意圖。[〇〇8〇]圖15示出根據(jù)本公開一實施例中數(shù)據(jù)抓取模塊的組成示意圖?!揪唧w實施方式】
[0081]現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實施方式使得本公開將更加全面和完整,并將示例實施方式的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。
[0082]此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施方式中。在下面的描述中,提供許多具體細節(jié)從而給出對本公開的實施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本公開的技術(shù)方案而省略所述特定細節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知結(jié)構(gòu)、方法、裝置、實現(xiàn)、材料或者操作以避免喧賓奪主而使得本公開的各方面變得模糊。[〇〇83]附圖中所示的一些方框圖是功能實體,不一定必須與物理或邏輯上獨立的實體相對應(yīng)。可以采用軟件形式來實現(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。
[0084]圖1示出本公開一實施例中提供的一種網(wǎng)頁內(nèi)容爬取的方法的步驟流程圖,該方法主要針對基于網(wǎng)站內(nèi)容爬取領(lǐng)域,尤其是需要登錄的網(wǎng)站(圖形驗證碼識別和密碼加解密)的爬取。
[0085]如圖1所示,在步驟S10中,調(diào)度爬取任務(wù),在調(diào)度爬取任務(wù)的同時根據(jù)預(yù)設(shè)的時間周期定時地進行調(diào)度。[〇〇86] 如圖1所示,在步驟S20中,當(dāng)查詢到爬取任務(wù)有代理設(shè)置時,獲取代理IP隊列。
[0087]圖2示出獲取代理IP隊列的步驟流程圖,如圖2所示,在步驟S21中,判斷爬取任務(wù)是否需要設(shè)置代理IP。[〇〇88] 如圖2所示,在步驟S22中,如果需要設(shè)置代理IP,則從配置表中查詢針對當(dāng)前系統(tǒng)已配置的代理IP地址隊列,如果不需要設(shè)置代理IP,則結(jié)束。[〇〇89] 如圖2所示,在步驟S23中,從已配置的代理IP地址隊列中取出一個IP地址。
[0090]如圖2所示,在步驟S24中,檢測取出的IP地址是否能夠爬取通過,如果能夠通過則即為找到有效IP,如果不通過則說明當(dāng)前IP是無效IP,還要判斷是否已經(jīng)到達已配置的代理IP地理隊列的最后一個,如果是最后一個則結(jié)束,不是最后一個就取下一條IP地址繼續(xù)配置到config配置文件中并進行檢測,即繼續(xù)步驟S25。
[0091]如圖2所示,在步驟S25中,按照隊列順序采用輪循方式取出下一個IP地址進行檢測,循環(huán)操作直至找到有效IP,如果循環(huán)到最后一條IP地址都未找到有效的IP地址,則直接結(jié)束任務(wù)所有爬取通過的有效IP構(gòu)成代理IP隊列,以便對網(wǎng)頁內(nèi)容進行爬取。[〇〇92] 上述進行動態(tài)代理IP設(shè)置以及輪循的步驟由反監(jiān)控組件完成,原理示意如圖3所示,當(dāng)創(chuàng)建httpclient(客戶端編程工具包)時,查詢配置表針對當(dāng)前爬取任務(wù)是否需要設(shè)置代理IP,如果需要的話,查詢針對當(dāng)前系統(tǒng)配置的代理IP地址隊列,一般都配置5-10條, 按照隊列順序首先取出一條去設(shè)置到config配置文件中,然后檢測該IP是否能爬取通過, 如果能通過就進行后續(xù)的爬取任務(wù),如果當(dāng)前IP是無效IP,則按照隊列索引指針(index++) 的方式輪循隊列,取下一條繼續(xù)配置到config配置文件中并進行檢測,循環(huán)操作直至找到有效IP,如果循環(huán)到最后一條都未找到有效IP,則直接結(jié)束任務(wù)。[〇〇93] 如圖1所示,在步驟S30中,進行資源管理處理,主要是登錄賬號、密碼、會話保持和一些必要參數(shù)的設(shè)置以及控制。
[0094]其中圖4示出模擬用戶登錄的步驟流程圖,如圖4所示,初始化cookie信息,即在步驟S31中,判斷是否存在已有的cookie,如果存在已有的cookie則進一步判斷已有的cookie 是否有效。[〇〇95] 如圖4所示,在步驟S32中,如果沒有已有的cookie或者已有的cookie已失效,則重新生成cookie。[〇〇96] 如圖4所示,在步驟S33中,如果已有的cookie仍有效,則使用已有的cookie或重新生成的cookie來獲取圖片驗證碼,當(dāng)圖片驗證獲取成功后組織登錄參數(shù)。
[0097] 如圖4所示,在步驟S34中,動態(tài)拼裝登錄參數(shù)后請求登錄接口,如果通過登錄接口能夠成功登錄則更新已有的cookie,如果未能成功登錄則判斷是否繼續(xù)登錄,如果繼續(xù)登錄則重新初始化cookie信息。
[0098]上述模擬用戶登錄流程的原理示意如圖5所示,首先初始化cookie信息,判斷是否有之前的cookie信息,如果有的話,需要進一步判斷cookie是否失效,失效時間根據(jù)不同網(wǎng)站失效時間來配置,如果沒有cookie或者cookie已失效,則重新產(chǎn)生一個cookie并保存入庫,如果未失效的話,則使用當(dāng)前cookie獲取圖片驗證碼,圖片驗證獲取成功后,組織登錄參數(shù),有的網(wǎng)站需要對登錄名和密碼進行加密,具體加密邏輯跟網(wǎng)站保持一致,動態(tài)拼裝登錄參數(shù)后請求登錄接口,登錄成功后更新最新的cookie,后續(xù)爬取操作基于登錄成功后的 cookie進行,如果登錄失敗,則判斷是否要繼續(xù)登錄,如果嘗試?yán)^續(xù)登錄重復(fù)整個流程,如果不嘗試則結(jié)束。[〇〇99]如圖1所示,在步驟S40中,由數(shù)據(jù)抓取引擎采用多線程并行處理的方式進行數(shù)據(jù)抓取。由上一步驟S30進行資源管理處理的數(shù)據(jù)交給數(shù)據(jù)抓取引擎來抓取數(shù)據(jù),采用多線程并行處理的方式。
[0100]圖6示出本公開一實施例提供的方法中進行數(shù)據(jù)抓取的步驟流程圖。
[0101]如圖6所示,在步驟S41中,模擬瀏覽器打開目標(biāo)網(wǎng)站。
[0102]如圖6所示,在步驟S42中,判斷是否成功打開目標(biāo)網(wǎng)站,如果沒有打開則結(jié)束。 [〇1〇3]如圖6所示,在步驟S43中,如果成功打開則獲取目標(biāo)網(wǎng)站上的所有表單控件,并進行逐一賦值后提交表單數(shù)據(jù)。
[0104]如圖6所示,在步驟S44中,加載JS請求,并根據(jù)JS請求返回JS0N格式數(shù)據(jù)。[〇1〇5]如圖1所示,在步驟S50中,各個線程對各自所抓取的數(shù)據(jù)交由解析引擎進行數(shù)據(jù)解析,并對解析數(shù)據(jù)進行持久化操作。其中解析引擎結(jié)合解析規(guī)則針對不同類型的返回數(shù)據(jù)進行數(shù)據(jù)解析,返回數(shù)據(jù)的類型包括JS0N格式數(shù)據(jù)、HTML格式數(shù)據(jù)以及通過JS動態(tài)加載得到的數(shù)據(jù)。得到的數(shù)據(jù)包括文本、圖片、文件流等等,保存邏輯會判斷是全量更新還是增量更新進行保存操作。
[0106]另外,圖7還示出一種網(wǎng)頁內(nèi)容爬取的方法,除了包括上述步驟S10?S50,還包括:
[0107]步驟S60,進行數(shù)據(jù)結(jié)構(gòu)化操作,從數(shù)據(jù)源中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,并按照預(yù)先定義好的數(shù)據(jù)模型,將清洗后的數(shù)據(jù)加載到數(shù)據(jù)模型中。數(shù)據(jù)結(jié)構(gòu)化操作即數(shù)據(jù)的清洗、過濾、匯總等。
[0108]圖7所示的方法整個流程分為六個主要步驟,各個步驟相互銜接又最大化的保持獨立,這樣保證了整個工作流的順利流轉(zhuǎn)。
[0109]本實施例中提供的方法需要基于一個平臺來實現(xiàn),該平臺可以用于網(wǎng)站內(nèi)容爬取、自定義輿情監(jiān)測和內(nèi)部用戶UI集成化測試的平臺,該平臺的總體架構(gòu)圖如圖8所示,該平臺主要包括:數(shù)據(jù)源、組件服務(wù)、源數(shù)據(jù)、數(shù)據(jù)倉庫、主題數(shù)據(jù)庫以及應(yīng)用六部分。
[0110]數(shù)據(jù)源是爬取數(shù)據(jù)的來源,目標(biāo)系統(tǒng)提供業(yè)務(wù)所需要數(shù)據(jù),例如包括目標(biāo)數(shù)據(jù)A、 目標(biāo)數(shù)據(jù)B、目標(biāo)數(shù)據(jù)C、目標(biāo)數(shù)據(jù)D……。
[0111]組件服務(wù)通過兩臺或者多臺服務(wù)器構(gòu)建爬蟲集群針對目標(biāo)源進行爬取,每臺服務(wù)器上部署爬蟲程序,包括調(diào)度管理、配置管理、模板管理、任務(wù)管理、反監(jiān)控管理、檢索引擎管理等等。多個節(jié)點爬取能提高爬取效率、存儲和帶寬資源,構(gòu)建高效、均衡、可靠、大規(guī)模拓展的全分布式爬蟲集群。
[0112]源數(shù)據(jù)庫中包括多個子源數(shù)據(jù)庫,如源數(shù)據(jù)庫1、源數(shù)據(jù)庫2、源數(shù)據(jù)庫3以及其他源數(shù)據(jù)庫。數(shù)據(jù)存儲是抓取系統(tǒng)主流程的主要環(huán)節(jié)之一,它負責(zé)對解析結(jié)果的字段進行保存,以便后面提供其它處理過程進行處理。
[0113]數(shù)據(jù)倉庫對從源數(shù)據(jù)中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)模型,將數(shù)據(jù)加載到數(shù)據(jù)模型中去。在數(shù)據(jù)倉庫主要對來自源數(shù)據(jù)庫的數(shù)據(jù)進行ETL 處理,ETL是英文Extract-Transform-Load的縮寫,用來描述將數(shù)據(jù)從來源端經(jīng)過抽取 (extract)、轉(zhuǎn)換(transform)、加載(load)至目的端的過程。
[0114]主題數(shù)據(jù)庫也包括多個子主題數(shù)據(jù)庫,如主題數(shù)據(jù)庫1、主題數(shù)據(jù)庫2、主題數(shù)據(jù)庫 3以及其他主題數(shù)據(jù)庫。通過業(yè)務(wù)規(guī)則抽取數(shù)據(jù)倉庫中的數(shù)據(jù),形成以主題為模塊的數(shù)據(jù)庫,分類存儲。
[0115]最后一部分是應(yīng)用,主要是基于主題數(shù)據(jù)庫開發(fā)的各種應(yīng)用,比如:;評分、報告、 接口、報表、業(yè)務(wù)分析等等。
[0116]按照功能劃分的話,該平臺的功能組件圖如圖9所示,即分為控制層、組件層和存儲層。[〇117]控制層主要是通用可擴展的爬取集群,主要功能包括爬取線程池的管理、應(yīng)用連接池的管理和執(zhí)行隊列管理。主要完成底層的控制管理,比如爬取線程池管理,多線程的爬取可以提升爬取效率,連接池管理主要是解決應(yīng)用與數(shù)據(jù)源建立連接池管理,節(jié)約連接開銷資源,執(zhí)行隊列管理,對于資源或大量數(shù)據(jù)的爬取加載到隊列任務(wù)中去,排隊處理,減少服務(wù)器壓力。
[0118]組件層是整個爬取作業(yè)的核心,反監(jiān)控管理主要是解決被訪問網(wǎng)站禁止爬蟲訪問,如:新聞、媒體、未公開(需登錄)等;會給爬取數(shù)據(jù)帶來障礙,需要通過反監(jiān)控策略來避開檢測,從而達到反監(jiān)控效果;抓取任務(wù)調(diào)度器根據(jù)爬取內(nèi)容制定爬取優(yōu)先級,因為先后順序,如:一級域名和二級域名內(nèi)容;數(shù)據(jù)源抓取規(guī)則根據(jù)數(shù)據(jù)源配置不同的爬取規(guī)則,客戶化管理配置;檢索引擎根據(jù)爬取內(nèi)容做分詞檢索、索引檢索、輿情分析和內(nèi)容過濾等;解析引擎根據(jù)爬取內(nèi)容調(diào)用不同內(nèi)容解析器:圖片、文本或視頻等文件處理;如果重復(fù)抓取會浪費資源,如果不抓需要一個海量的去重判斷緩存。判斷抓不抓,抓了后存不存,并且這個緩存需要快速讀寫。常見的做法有BL00MFILTER、相似度聚合、分類海明距離判斷,對于臨時爬取或計算數(shù)據(jù)可放入緩存中,便于資源回收和浪費,監(jiān)控管理指不管什么系統(tǒng)都可能出問題,如果對方服務(wù)器宕機、網(wǎng)頁改版、更換地址等我們需要第一時間知道,這時監(jiān)控系統(tǒng)就起到出現(xiàn)了問題及時發(fā)現(xiàn)并通知聯(lián)系人,資源管理服務(wù)主要是對網(wǎng)站分類體系、網(wǎng)站、網(wǎng)站訪問URL、賬號等基本資源的管理維護;[〇119]如圖9所示,組件層主要功能包括數(shù)據(jù)源爬取規(guī)則的配置管理、檢索引擎管理、解析引擎管理、抓取任務(wù)調(diào)度分發(fā)器管理、反監(jiān)控管理、數(shù)據(jù)去重過濾管理、緩存管理、爬取監(jiān)控管理、資源服務(wù)管理,主要包括賬號池和代理池管理,以下逐一進行說明。
[0120]配置管理,分為可視化配置和智能化配置兩種。
[0121]檢索引擎管理,其中主要是分詞器、所引器、鏈接關(guān)系、信息過濾器、輿情分析器。 檢索引擎組件里的模擬瀏覽器動態(tài)加載通過JS請求的數(shù)據(jù),請求開始通過WebClient對象的getPage方法模擬打開Url網(wǎng)址,判斷打開結(jié)果是否成功,如果打開失敗,則結(jié)束任務(wù);打開成功則通過獲取的HtmlPage對象獲取網(wǎng)站上的所有表單控件,對表單逐一賦值后提交表單數(shù)據(jù),提交后加載JS請求,對JS請求返回的JS0N數(shù)據(jù)交給解析引擎處理,模擬瀏覽器動態(tài)加載JS數(shù)據(jù)就結(jié)束,檢索引擎上述工作原理如圖10所示。
[0122]解析引擎管理,其中主要是鏈接解析、圖片、文本、文件以及國際化等。
[0123]抓取任務(wù)調(diào)度分發(fā)器管理,主要包括API的管理、視頻管理、音頻管理、網(wǎng)頁管理等。調(diào)度分發(fā)器組件里的重定向處理流程圖如圖11所示,首先發(fā)送請求,判斷返回狀態(tài)碼是否為302,如果為302則獲取response請求中的locat1n地址重新請求,如果還是返回302則循環(huán)操作,直到返回200結(jié)束,將返回的內(nèi)容交給解析引擎處理,有的網(wǎng)站需要對返回的 locat1n做判斷處理,例如有的網(wǎng)站返回的locat1n只有包含main字符時才發(fā)請求,所以具體發(fā)送條件要根據(jù)具體網(wǎng)站來判斷。
[0124]反監(jiān)控管理,主要包括反監(jiān)控規(guī)則管理、異常規(guī)則管理、異?;謴?fù)策略管理、抓取頻度策略管理、模擬用戶訪問、虛擬瀏覽器訪問。
[0125]數(shù)據(jù)去重過濾管理,針對重復(fù)數(shù)據(jù)的過濾處理。
[0126]緩存管理,增加爬取效率把需要爬取的臨時數(shù)據(jù)存儲在緩存系統(tǒng)中,把需要最終數(shù)據(jù)存儲到數(shù)據(jù)庫中。
[0127]爬取監(jiān)控管理,對爬取任務(wù)做監(jiān)控,對失敗問題進行恢復(fù)重新爬取。
[0128]資源服務(wù)管理,主要包括相關(guān)配置數(shù)據(jù)或資源做抽象管理,提供UI界面操作。
[0129]最后,存儲層的主要功能包括關(guān)系型數(shù)據(jù)存儲、非結(jié)構(gòu)化數(shù)據(jù)存儲。根據(jù)實際爬取數(shù)據(jù)源進行存儲適配。[〇13〇]本實施例提供的爬取網(wǎng)頁內(nèi)容的方法流程分為定時調(diào)度、代理IP、資源管理、數(shù)據(jù)抓取、數(shù)據(jù)持久化、數(shù)據(jù)結(jié)構(gòu)化六個部分,其中定時調(diào)度、代理IP、資源管理、數(shù)據(jù)抓取這四部分對應(yīng)組件層,數(shù)據(jù)持久化、數(shù)據(jù)結(jié)構(gòu)化這兩部分對應(yīng)存儲層。
[0131]本實施例提供的方法考慮到如何克服高度并發(fā)、以及對網(wǎng)絡(luò)帶寬的占用問題,提出了設(shè)計一個DNS解析器,以便于有效的利用網(wǎng)絡(luò)帶寬,減少網(wǎng)絡(luò)傳輸延時,可以用于網(wǎng)站內(nèi)容爬取、自定義輿情監(jiān)測和內(nèi)部用戶UI集成化測試的平臺。通常爬蟲系統(tǒng)都是UI界面操作,本實施例解決無UI界面爬取系統(tǒng)。本實施例降低技術(shù)人員研發(fā)成本;系統(tǒng)可交由運營人員使用;如果系統(tǒng)交易研發(fā)人員來維護必然會占用研發(fā)資源;解決自定義輿情監(jiān)測;監(jiān)測網(wǎng)站出現(xiàn)的關(guān)鍵字;還能夠幫助系統(tǒng)解決UI集成測試問題;快速完成功能測試。
[0132]綜上所述,本實施例提供的方法支持URL分層爬取,可自定義爬取網(wǎng)站層次深度; 在爬取網(wǎng)站內(nèi)容時往往會碰到很多超鏈接;針對連接做集合分層處理;解決網(wǎng)站內(nèi)容實時抓取,根據(jù)自定義關(guān)鍵字爬取網(wǎng)站檢索內(nèi)容,過濾網(wǎng)頁數(shù)據(jù);針對自定義網(wǎng)站爬取內(nèi)容做脫敏處理,解決相關(guān)數(shù)據(jù)安全或信息泄露;分詞處理:解決網(wǎng)站爬取內(nèi)容過濾和篩選;通過分詞器對爬取內(nèi)容做分詞和個性化標(biāo)簽儲存處理;頁面信息的提取:實現(xiàn)符合W3C標(biāo)準(zhǔn)的解析頁面引擎,使得開發(fā)人員更容易理解和快速開發(fā);針對需要登錄的網(wǎng)站抓取:實現(xiàn)圖形驗證碼識別和密碼的加解密管理;模擬用戶登錄網(wǎng)站并維持網(wǎng)站的cookie會話保持。
[0133]圖12還示出本實施例另一實施例提供的一種網(wǎng)頁內(nèi)容爬取的裝置的示意圖,該裝置100包括:任務(wù)調(diào)度模塊110、代理IP模塊120、資源管理模塊130、數(shù)據(jù)抓取模塊140、數(shù)據(jù)持久化模塊150以及數(shù)據(jù)結(jié)構(gòu)化模塊160。
[0134]任務(wù)調(diào)度模塊110用于調(diào)度爬取任務(wù);代理IP模塊120用于判斷爬取任務(wù)是否有代理設(shè)置,并當(dāng)查詢到爬取任務(wù)有代理設(shè)置時,獲取代理IP隊列;資源管理模塊130用于進行資源管理處理;數(shù)據(jù)抓取模塊140用于由數(shù)據(jù)抓取引擎采用多線程并行處理的方式進行數(shù)據(jù)抓取;數(shù)據(jù)持久化模塊150用于各個線程對各自所抓取的數(shù)據(jù)交由解析引擎進行數(shù)據(jù)解析,并對解析數(shù)據(jù)進行持久化操作。數(shù)據(jù)結(jié)構(gòu)化模塊160用于進行數(shù)據(jù)結(jié)構(gòu)化操作,從數(shù)據(jù)源中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,并按照預(yù)先定義好的數(shù)據(jù)模型,將清洗后的數(shù)據(jù)加載到數(shù)據(jù)模型中。
[0135]在本實施例中,任務(wù)調(diào)度模塊110根據(jù)預(yù)設(shè)的時間周期定時地調(diào)度爬取任務(wù)。
[0136]在本實施例中,代理IP模塊120的組成示意圖如圖13所示,該代理IP模塊120包括: 判斷子模塊121、查詢子模塊122、取出IP地址子模塊123、檢測子模塊124和輪循子模塊125。
[0137]判斷子模塊121用于判斷爬取任務(wù)是否需要設(shè)置代理IP;查詢子模塊122用于當(dāng)判斷子模塊的判斷結(jié)構(gòu)為需要設(shè)置代理IP時,從配置表中查詢針對當(dāng)前系統(tǒng)已配置的代理IP 地址隊列;取出IP地址子模塊123用于從已配置的代理IP地址隊列中取出一個IP地址;檢測子模塊124用于檢測取出的IP地址是否能夠爬取通過,如果能夠通過則即為找到有效IP;輪循子模塊125用于按照隊列順序采用輪循方式取出下一個IP地址進行檢測,所有爬取通過的有效IP構(gòu)成代理IP隊列,以便對網(wǎng)頁內(nèi)容進行爬取。
[0138]在本實施例中,資源管理模塊130的組成示意圖如圖14所示,該資源管理模塊130 包括:包括:初始化子模塊131和圖片驗證子模塊132。
[0139]初始化子模塊131用于初始化cookie信息,判斷是否存在已有的cookie,如果存在已有的cookie則進一步判斷已有的cookie是否有效;當(dāng)沒有已有的cookie或者已有的 cookie已失效時,重新生成cookie。圖片驗證子模塊132用于當(dāng)已有的cookie仍有效時,使用已有的cookie或重新生成的cookie來獲取圖片驗證碼,當(dāng)圖片驗證獲取成功后組織登錄參數(shù);動態(tài)拼裝登錄參數(shù)后請求登錄接口,如果通過登錄接口能夠成功登錄則更新已有的 cookie,如果未能成功登錄則判斷是否繼續(xù)登錄,如果繼續(xù)登錄則重復(fù)初始化子模塊131。
[0140]本實施例中,數(shù)據(jù)抓取模塊140的組成示意圖如圖15所示,包括:模擬打開網(wǎng)站子模塊141、打開成功判斷子模塊142、提交表單數(shù)據(jù)子模塊143以及加載JS請求子模塊144。
[0141]模擬打開網(wǎng)站子模塊141用于模擬瀏覽器打開目標(biāo)網(wǎng)站;打開成功判斷子模塊142 用于判斷是否成功打開所述目標(biāo)網(wǎng)站,如果沒有打開則結(jié)束;如果成功打開則轉(zhuǎn)至提交表單數(shù)據(jù)子模塊;提交表單數(shù)據(jù)子模塊143用于獲取所述目標(biāo)網(wǎng)站上的所有表單控件,并進行逐一賦值后提交表單數(shù)據(jù);加載JS請求子模塊144用于加載JS請求,并根據(jù)所述JS請求返回 JS0N格式數(shù)據(jù)。
[0142]在本實施例中,數(shù)據(jù)持久化模塊150通過解析引擎結(jié)合解析規(guī)則針對不同類型的返回數(shù)據(jù)進行數(shù)據(jù)解析,返回數(shù)據(jù)的類型包括JS0N格式數(shù)據(jù)、HTML格式數(shù)據(jù)以及通過JS動態(tài)加載得到的數(shù)據(jù)。
[0143]在本實施例中,任務(wù)調(diào)度模塊110即組件層中的抓取任務(wù)調(diào)度分發(fā)器模塊,爬蟲任務(wù)的啟動就靠任務(wù)調(diào)度來管理及分配,此模塊為爬蟲流程中的核心模塊之一。平臺調(diào)度任務(wù)分為定時調(diào)度和動態(tài)調(diào)度兩種,針對爬蟲采用定時調(diào)度。任務(wù)調(diào)度是整個抓取系統(tǒng)的啟動點,所有的抓取任務(wù)都是由調(diào)度發(fā)起、調(diào)度結(jié)束,是整個抓取流程的控制點,目前按月爬取,后面可根據(jù)實際爬取效果調(diào)整任務(wù)時間。
[0144]代理IP模塊120歸屬于組件層中的反監(jiān)控模塊,反監(jiān)控方式有多種,本公開采用代理IP來規(guī)避對方系統(tǒng)監(jiān)控,通過設(shè)置代理來請求目標(biāo)系統(tǒng),能有效的防止直接訪問目標(biāo)系統(tǒng)造成的封IP情況,任務(wù)啟動后循環(huán)調(diào)用代理服務(wù),當(dāng)能獲取到有效代理后返回并且進行下一步,當(dāng)請求不通或者返回時間超過指定時間,則換下一個代理服務(wù)。
[0145]資源管理模塊130即組件層中的資源管理服務(wù),資源管理模塊負責(zé)整個抓取系統(tǒng)的公共資源及參數(shù)配置,整個功能以WEB方式提供,包括幾大部分,S卩:首頁、參數(shù)設(shè)定、站點基本參數(shù)、站點擴展參數(shù)、統(tǒng)計與查詢、其它工具等幾大項。
[0146]數(shù)據(jù)抓取模塊140抓取數(shù)據(jù)后進行數(shù)據(jù)解析,其中數(shù)據(jù)解析是由組件層中的解析引擎來實現(xiàn),數(shù)據(jù)解析配合解析規(guī)則來具體實現(xiàn)不同類型的返回數(shù)據(jù),例如有的返回是 JS0N格式數(shù)據(jù),有的返回HTML格式數(shù)據(jù),有的返回結(jié)果數(shù)據(jù)是通過JS動態(tài)加載數(shù)據(jù),這就分別采用JS0N解析引擎、HTML解析引擎、HTTPUNIT解析引擎來處理。根據(jù)模板解析頁面內(nèi)容, 調(diào)用插件進行處理,而后調(diào)用保存服務(wù)保存結(jié)果,調(diào)用任務(wù)返回處理服務(wù)。
[0147]數(shù)據(jù)持久化模塊150即存儲層中的數(shù)據(jù)存儲,是將解析的靜態(tài)或動態(tài)頁面數(shù)據(jù)保存起來,也就是將內(nèi)存數(shù)據(jù)模型轉(zhuǎn)換為存儲模型,數(shù)據(jù)模型是針對具體接口設(shè)計的,包括解析返回的XML、文件流、JS0N等等數(shù)據(jù)。
[0148]數(shù)據(jù)結(jié)構(gòu)化模塊160對應(yīng)總體架構(gòu)中的數(shù)據(jù)倉庫和主題數(shù)據(jù)庫,從數(shù)據(jù)源中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)模型,將數(shù)據(jù)加載到數(shù)據(jù)模型中去,轉(zhuǎn)換過程中需要注意:
[0149]空值處理:可捕獲字段空值,進行加載或替換為其他含義數(shù)據(jù),并可根據(jù)字段空值實現(xiàn)分流加載到不同目標(biāo)庫。
[0150]規(guī)范化數(shù)據(jù)格式:可實現(xiàn)字段格式約束定義,對于數(shù)據(jù)源中時間、數(shù)值、字符等數(shù)據(jù),可自定義加載格式。
[0151]拆分?jǐn)?shù)據(jù):依據(jù)業(yè)務(wù)需求對字段可進行分解。[〇152]驗證數(shù)據(jù)正確性:根據(jù)業(yè)務(wù)規(guī)則配置數(shù)據(jù)校驗規(guī)則,對數(shù)據(jù)進行校驗。
[0153]數(shù)據(jù)替換:對于因業(yè)務(wù)因素,可實現(xiàn)無效數(shù)據(jù)、缺失數(shù)據(jù)的替換。
[0154]建立ETL過程的主外鍵約束:對無依賴性的非法數(shù)據(jù),可替換或?qū)С龅藉e誤數(shù)據(jù)文件中,保證主鍵唯一記錄的加載。
[0155]總之,通過本公開所述解決了一般網(wǎng)頁和需要登錄的網(wǎng)站的各個功能的爬取工作,爬取的任務(wù)由爬取組件完成,且實現(xiàn)了快速準(zhǔn)確,同時還能夠分析出目標(biāo)網(wǎng)站的層級關(guān)系,形成清晰的爬取目標(biāo)結(jié)構(gòu)圖,為爬取的數(shù)據(jù)建立起清晰的關(guān)系,通過反監(jiān)控管理實現(xiàn)了反爬技術(shù),為最終得到目標(biāo)數(shù)據(jù)掃清了障礙。[〇156]應(yīng)清楚地理解,本公開描述了如何形成和使用特定示例,但本公開的原理不限于這些示例的任何細節(jié)。相反,基于本公開公開的內(nèi)容的教導(dǎo),這些原理能夠應(yīng)用于許多其它實施方式。
[0157]以上具體地示出和描述了本公開的示例性實施方式。應(yīng)可理解的是,本公開不限于這里描述的詳細結(jié)構(gòu)、設(shè)置方式或?qū)崿F(xiàn)方法;相反,本公開意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效設(shè)置。
【主權(quán)項】
1.一種網(wǎng)頁內(nèi)容爬取的方法,其特征在于,包括:調(diào)度爬取任務(wù);當(dāng)查詢到所述爬取任務(wù)有代理設(shè)置時,獲取代理IP隊列;進行資源管理處理;由數(shù)據(jù)抓取引擎采用多線程并行處理的方式進行數(shù)據(jù)抓??;各個線程對各自所抓取的數(shù)據(jù)交由解析引擎進行數(shù)據(jù)解析,并對解析數(shù)據(jù)進行持久化 操作。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)預(yù)設(shè)的時間周期定時地調(diào)度所述爬取任務(wù)。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)查詢到所述爬取任務(wù)有代理設(shè)置 時,獲取代理IP隊列的步驟包括:判斷所述爬取任務(wù)是否需要設(shè)置代理IP;如果需要設(shè)置代理IP,則從配置表中查詢針對當(dāng)前系統(tǒng)已配置的代理IP地址隊列; 從所述已配置的代理IP地址隊列中取出一個IP地址;檢測取出的IP地址是否能夠爬取通過,如果能夠通過則即為找到有效IP;按照隊列順序采用輪循方式取出下一個IP地址進行檢測,所有爬取通過的有效IP構(gòu)成 所述代理IP隊列,以便對網(wǎng)頁內(nèi)容進行爬取。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過模擬用戶登錄進行資源管理處理,包 括初始化cookie信息,具體包括:判斷是否存在已有的cookie,如果存在已有的cookie則進一步判斷所述已有的cookie 是否有效;如果沒有所述已有的cookie或者所述已有的cookie已失效,貝lj重新生成cookie。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括:如果所述已有的cookie仍有效,則使用所述已有的cookie或重新生成的cookie來獲取 圖片驗證碼,當(dāng)圖片驗證獲取成功后組織登錄參數(shù);動態(tài)拼裝所述登錄參數(shù)后請求登錄接口,如果通過所述登錄接口能夠成功登錄則更新 所述已有的cookie,如果未能成功登錄則判斷是否繼續(xù)登錄,如果繼續(xù)登錄則重新所述初 始化cookie信息。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述進行數(shù)據(jù)抓取包括:模擬瀏覽器打開目標(biāo)網(wǎng)站;判斷是否成功打開所述目標(biāo)網(wǎng)站,如果沒有打開則結(jié)束;如果成功打開則獲取所述目標(biāo)網(wǎng)站上的所有表單控件,并進行逐一賦值后提交表單數(shù) 據(jù);加載JS請求,并根據(jù)所述JS請求返回JS0N格式數(shù)據(jù)。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述解析引擎結(jié)合解析規(guī)則針對不同類型 的返回數(shù)據(jù)進行數(shù)據(jù)解析,所述返回數(shù)據(jù)的類型包括JS0N格式數(shù)據(jù)、HTML格式數(shù)據(jù)以及通 過JS動態(tài)加載得到的數(shù)據(jù)。8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:進行數(shù)據(jù)結(jié)構(gòu)化操作,從數(shù)據(jù)源中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,并按照預(yù)先定義好的數(shù)據(jù)模型,將清洗后的數(shù)據(jù)加載到數(shù)據(jù)模型中。9.一種網(wǎng)頁內(nèi)容爬取的裝置,其特征在于,包括:任務(wù)調(diào)度模塊,用于調(diào)度爬取任務(wù);代理IP模塊,用于當(dāng)查詢到所述爬取任務(wù)有代理設(shè)置時,獲取代理IP隊列;資源管理模塊,用于進行資源管理處理;數(shù)據(jù)抓取模塊,用于由數(shù)據(jù)抓取引擎采用多線程并行處理的方式進行數(shù)據(jù)抓?。粩?shù)據(jù)持久化模塊,用于各個線程對各自所抓取的數(shù)據(jù)交由解析引擎進行數(shù)據(jù)解析,并 對解析數(shù)據(jù)進行持久化操作。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述任務(wù)調(diào)度模塊根據(jù)預(yù)設(shè)的時間周期 定時地調(diào)度所述爬取任務(wù)。11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述代理IP模塊包括:判斷子模塊,用于判斷所述爬取任務(wù)是否需要設(shè)置代理IP;查詢子模塊,用于當(dāng)所述判斷子模塊的判斷結(jié)構(gòu)為需要設(shè)置代理IP時,從配置表中查 詢針對當(dāng)前系統(tǒng)已配置的代理IP地址隊列;取出IP地址子模塊,用于從所述已配置的代理IP地址隊列中取出一個IP地址;檢測子模塊,用于檢測取出的IP地址是否能夠爬取通過,如果能夠通過則即為找到有 效IP;輪循子模塊,用于按照隊列順序采用輪循方式取出下一個IP地址進行檢測,所有爬取 通過的有效IP構(gòu)成所述代理IP隊列,以便對網(wǎng)頁內(nèi)容進行爬取。12.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述資源管理模塊包括:初始化子模塊,用于初始化cookie信息,判斷是否存在已有的cookie,如果存在已有的 cookie則進一步判斷所述已有的cookie是否有效;當(dāng)沒有所述已有的cookie或者所述已有 的cookie已失效時,重新生成cookie。13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述資源管理模塊還包括:圖片驗證子模塊,用于當(dāng)所述已有的cookie仍有效時,使用所述已有的cookie或重新 生成的cookie來獲取圖片驗證碼,當(dāng)圖片驗證獲取成功后組織登錄參數(shù);動態(tài)拼裝所述登 錄參數(shù)后請求登錄接口,如果通過所述登錄接口能夠成功登錄則更新所述已有的cookie, 如果未能成功登錄則判斷是否繼續(xù)登錄,如果繼續(xù)登錄則重復(fù)所述初始化子模塊。14.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)抓取模塊包括:模擬打開網(wǎng)站子模塊,用于模擬瀏覽器打開目標(biāo)網(wǎng)站;打開成功判斷子模塊,用于判斷是否成功打開所述目標(biāo)網(wǎng)站,如果沒有打開則結(jié)束;如 果成功打開則轉(zhuǎn)至提交表單數(shù)據(jù)子模塊;提交表單數(shù)據(jù)子模塊,用于獲取所述目標(biāo)網(wǎng)站上的所有表單控件,并進行逐一賦值后 提交表單數(shù)據(jù);加載JS請求子模塊,用于加載JS請求,并根據(jù)所述JS請求返回JS0N格式數(shù)據(jù)。15.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)持久化模塊通過解析引擎結(jié)合 解析規(guī)則針對不同類型的返回數(shù)據(jù)進行數(shù)據(jù)解析,所述返回數(shù)據(jù)的類型包括JS0N格式數(shù) 據(jù)、HTML格式數(shù)據(jù)以及通過JS動態(tài)加載得到的數(shù)據(jù)。16.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括:數(shù)據(jù)結(jié)構(gòu)化模塊,用于進行數(shù)據(jù)結(jié)構(gòu)化操作,從數(shù)據(jù)源中抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù) 清洗,并按照預(yù)先定義好的數(shù)據(jù)模型,將清洗后的數(shù)據(jù)加載到數(shù)據(jù)模型中。
【文檔編號】G06F17/30GK105956175SQ201610350395
【公開日】2016年9月21日
【申請日】2016年5月24日
【發(fā)明人】孔祥旭, 張澤斌, 周勇
【申請人】考拉征信服務(wù)有限公司