亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

網(wǎng)頁爬取方法和裝置與流程

文檔序號:11155110閱讀:379來源:國知局
網(wǎng)頁爬取方法和裝置與制造工藝

本申請涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種網(wǎng)頁爬取方法和裝置。



背景技術(shù):

傳統(tǒng)的搜索引擎優(yōu)化(Search Engine Optimization,簡稱為SEO)業(yè)務(wù)中,通常需要幫助用戶分析關(guān)鍵詞在搜索引擎中的排名。通常,用戶會預(yù)設(shè)一組關(guān)鍵詞,定期通過網(wǎng)絡(luò)爬蟲去爬取這些關(guān)鍵詞在搜索引擎中的排名,即通過網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,其中,關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁是指在搜索引擎(例如,百度,搜狗等搜索引擎)中輸入關(guān)鍵詞后顯示的搜索結(jié)果頁面。

但是,搜索引擎為了防止機(jī)器人(例如,網(wǎng)絡(luò)爬蟲)訪問,或者減少非正常訪問流量,往往會對單個(gè)IP地址的搜索速度或者搜索次數(shù)進(jìn)行限制(即反爬蟲策略),而通常用戶指定的關(guān)鍵詞累計(jì)起來會達(dá)到一個(gè)非常大的數(shù)量,因此,僅通過單臺機(jī)器或者IP地址進(jìn)行關(guān)鍵詞搜索引擎結(jié)果頁的爬取不僅爬取效率較低,而且容易因搜索引擎的反爬蟲策略導(dǎo)致無法爬取所有關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

針對相關(guān)技術(shù)中通過單臺服務(wù)器的網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁時(shí)效率較低的問題,目前尚未提出有效的解決方案。



技術(shù)實(shí)現(xiàn)要素:

本申請的主要目的在于提供一種網(wǎng)頁爬取方法和裝置,以解決相關(guān)技術(shù)中通過單臺服務(wù)器的網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞搜索引擎結(jié)果頁時(shí)效率較低的問題。

為了實(shí)現(xiàn)上述目的,根據(jù)本申請的一個(gè)方面,提供了一種網(wǎng)頁爬取方法。該方法包括:多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞;以及多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

進(jìn)一步地,多臺服務(wù)器包括第一服務(wù)器,多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組包括第一服務(wù)器從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,第一服務(wù)器從任務(wù)隊(duì)列中獲取關(guān)鍵詞組包括:第一服務(wù)器檢測任務(wù)隊(duì)列中是否存在待爬取的關(guān)鍵詞組;第一服務(wù)器在檢測出任務(wù)隊(duì)列中存在待爬取的關(guān)鍵詞組時(shí),鎖定任務(wù)隊(duì)列,其中,鎖定的任務(wù)隊(duì)列僅能夠被第一服務(wù)器讀??;以及第一服務(wù)器從鎖定的任務(wù)隊(duì)列中獲取關(guān)鍵詞組,并釋放 任務(wù)隊(duì)列,其中,釋放后的任務(wù)隊(duì)列能夠被多臺服務(wù)器中任意一臺服務(wù)器讀取。

進(jìn)一步地,多臺服務(wù)器包括第一服務(wù)器,第一服務(wù)器獲取的關(guān)鍵詞組為第一關(guān)鍵詞組,第一服務(wù)器的網(wǎng)絡(luò)爬蟲為第一網(wǎng)絡(luò)爬蟲,多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁包括第一服務(wù)器通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,第一服務(wù)器通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁包括:遍歷第一關(guān)鍵詞組,通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁;判斷第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁是否成功;以及在判斷出存在爬取第一關(guān)鍵詞組中的關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁失敗的情況時(shí),將第一關(guān)鍵詞組中爬取失敗的關(guān)鍵詞添加至失敗列表。

進(jìn)一步地,在將第一關(guān)鍵詞組中爬取失敗的關(guān)鍵詞添加至失敗列表之后,該方法還包括:將失敗列表中的關(guān)鍵詞打包為新的關(guān)鍵詞組;以及將新的關(guān)鍵詞組添加至任務(wù)隊(duì)列中。

進(jìn)一步地,將失敗列表中的關(guān)鍵詞打包為新的關(guān)鍵詞組包括:獲取失敗列表中關(guān)鍵詞的重試次數(shù);判斷失敗列表中關(guān)鍵詞的重試次數(shù)是否小于預(yù)設(shè)值;以及在判斷出失敗列表中關(guān)鍵詞的重試次數(shù)小于預(yù)設(shè)值時(shí),將失敗列表中關(guān)鍵詞打包為新的關(guān)鍵詞組。

進(jìn)一步地,在多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組之前,方法還包括:按照預(yù)設(shè)規(guī)則對多個(gè)關(guān)鍵詞進(jìn)行分組,得到多個(gè)組別的關(guān)鍵詞組;以及將多個(gè)組別的關(guān)鍵詞組按照優(yōu)先級存儲于任務(wù)隊(duì)列中。

為了實(shí)現(xiàn)上述目的,根據(jù)本申請的另一方面,提供了一種網(wǎng)頁爬取裝置。該裝置包括:獲取單元,用于使多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞;以及爬取單元,用于使多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

進(jìn)一步地,多臺服務(wù)器包括第一服務(wù)器,獲取單元包括:檢測模塊,用于使第一服務(wù)器檢測任務(wù)隊(duì)列中是否存在待爬取的關(guān)鍵詞組;鎖定模塊,用于使第一服務(wù)器在檢測出任務(wù)隊(duì)列中存在待爬取的關(guān)鍵詞組時(shí),鎖定任務(wù)隊(duì)列,其中,鎖定的任務(wù)隊(duì)列僅能夠被第一服務(wù)器讀?。灰约矮@取模塊,用于使第一服務(wù)器從鎖定的任務(wù)隊(duì)列中獲取關(guān)鍵詞組,并釋放任務(wù)隊(duì)列,其中,釋放后的任務(wù)隊(duì)列能夠被多臺服務(wù)器中任意一臺服務(wù)器讀取。

進(jìn)一步地,多臺服務(wù)器包括第一服務(wù)器,第一服務(wù)器獲取的關(guān)鍵詞組為第一關(guān)鍵 詞組,第一服務(wù)器的網(wǎng)絡(luò)爬蟲為第一網(wǎng)絡(luò)爬蟲,爬取單元包括:爬取模塊,用于遍歷第一關(guān)鍵詞組,通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁;判斷模塊,判斷第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁是否成功;以及添加模塊,用于在判斷出存在爬取第一關(guān)鍵詞組中的關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁失敗的情況時(shí),將第一關(guān)鍵詞組中爬取失敗的關(guān)鍵詞添加至失敗列表。

進(jìn)一步地,該裝置還包括:打包單元,用于將失敗列表中的關(guān)鍵詞打包為新的關(guān)鍵詞組;以及添加單元,用于將新的關(guān)鍵詞組添加至任務(wù)隊(duì)列中。

本申請通過多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞;以及多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,本申請通過多臺服務(wù)器分布式地爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,從而可以提高爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的效率,也可以降低觸發(fā)搜索引擎反爬蟲策略的可能性,解決了相關(guān)技術(shù)中通過單臺服務(wù)器的網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞搜索引擎結(jié)果頁時(shí)效率較低的問題,進(jìn)而達(dá)到了提高爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的效率效果。

附圖說明

構(gòu)成本申請的一部分的附圖用來提供對本申請的進(jìn)一步理解,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:

圖1是根據(jù)本申請實(shí)施例的網(wǎng)頁爬取方法的流程圖;

圖2是根據(jù)本申請實(shí)施例的分布式爬取網(wǎng)頁的示意圖;以及

圖3是根據(jù)本申請實(shí)施例的網(wǎng)頁爬取裝置的示意圖。

具體實(shí)施方式

需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請。

為了使本技術(shù)領(lǐng)域的人員更好地理解本申請方案,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分的實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。

需要說明的是,本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請的實(shí)施例。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

為了便于描述,以下對本申請涉及的一些概念進(jìn)行說明:

搜索引擎優(yōu)化,即Search Engine Optimization,簡稱為SEO。搜索引擎優(yōu)化是一種利用搜索引擎的搜索規(guī)則來提高目標(biāo)網(wǎng)站在有關(guān)搜索引擎內(nèi)的排名的方式。

隊(duì)列,是一種特殊的線性表,其只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,亦稱作先進(jìn)先出(First In First Out)的線性表,簡稱為FIFO表,本申請實(shí)施例的隊(duì)列的形式可以是分布式隊(duì)列組件,也可以采用數(shù)據(jù)庫的形式。

網(wǎng)絡(luò)爬蟲:又被稱為網(wǎng)頁蜘蛛或網(wǎng)絡(luò)機(jī)器人,是一種按照預(yù)設(shè)規(guī)則自動抓取萬維網(wǎng)信息的程序或者腳本。

根據(jù)本申請實(shí)施例,提供了一種網(wǎng)頁爬取方法。圖1是根據(jù)本申請實(shí)施例的網(wǎng)頁爬取方法的流程圖,如圖1所示,該方法包括如下的步驟S102至步驟S104:

步驟S102,多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞。

具體地,可以通過調(diào)度器將用戶預(yù)設(shè)的多個(gè)關(guān)鍵詞進(jìn)行分組,并將分組后得到的關(guān)鍵詞組放置于任務(wù)隊(duì)列中。優(yōu)選地,為了保證優(yōu)先爬取重要程度高的關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,在多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組之前,該方法還包括:按照預(yù)設(shè)規(guī)則對多個(gè)關(guān)鍵詞進(jìn)行分組,得到多個(gè)組別的關(guān)鍵詞組;以及將多個(gè)組別的關(guān)鍵詞組按照優(yōu)先級存儲于任務(wù)隊(duì)列中。

具體地,本申請實(shí)施例可以對多個(gè)關(guān)鍵詞按照重要程度(例如,需要優(yōu)選處理的關(guān)鍵詞重要程度高)進(jìn)行排序,并按照排序依次取預(yù)設(shè)數(shù)量的關(guān)鍵詞組成一組,例如,總共300個(gè)關(guān)鍵詞,將這300個(gè)關(guān)鍵詞按照重要程度進(jìn)行排序,并按照這300個(gè)關(guān)鍵詞的排序,依次取50個(gè)關(guān)鍵詞組成一個(gè)關(guān)鍵詞組,可以得到6個(gè)關(guān)鍵詞組,并將這6個(gè)關(guān)鍵詞組按照優(yōu)先級添加至任務(wù)隊(duì)列中,其中,重要程度高的關(guān)鍵詞組優(yōu)先級高,重要程度低的關(guān)鍵詞組優(yōu)先級低。

本申請實(shí)施例的多個(gè)服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組進(jìn)行網(wǎng)頁爬取任務(wù),如圖2所示,所有關(guān)鍵詞通過調(diào)度器分為N組,即關(guān)鍵詞組1至關(guān)鍵詞組N,三臺服務(wù)器(即服務(wù)器1、服務(wù)器2和服務(wù)器3)依次從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,例如,服務(wù)器1獲取關(guān)鍵詞組1、服務(wù)器2獲取關(guān)鍵詞組2、服務(wù)器3獲取關(guān)鍵詞組3,每個(gè)服務(wù)器在處理獲取到的關(guān)鍵詞組的爬取任務(wù)時(shí),會將當(dāng)前關(guān)鍵詞組的狀態(tài)進(jìn)行記錄,例如,記錄當(dāng)前關(guān)鍵詞組的任務(wù)狀態(tài)(例如,爬取成功、爬取失敗、等待、爬取中等)、重試次數(shù)(例如,可以將其初始值設(shè)為0,在爬取失敗時(shí)重試次數(shù)加1)等。在處理完獲取到的關(guān)鍵詞組中每一個(gè)關(guān)鍵詞的爬取任務(wù)時(shí),重新從任務(wù)隊(duì)列中獲取新的關(guān)鍵詞組進(jìn)行處理,以此類推。

需要說明的是,本申請實(shí)施例可以對多個(gè)關(guān)鍵詞中相同的關(guān)鍵詞進(jìn)行合并,以減少爬取總量。本申請實(shí)施例也可以采用多個(gè)任務(wù)隊(duì)列,以匹配不同的爬取策略(例如,不同的搜索引擎、爬取限度等),例如,任務(wù)隊(duì)列1用于存儲基于百度搜索的關(guān)鍵詞,任務(wù)隊(duì)列2用于存儲基于搜狗搜索的關(guān)鍵詞。

可選地,多臺服務(wù)器包括第一服務(wù)器,多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組包括第一服務(wù)器從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,第一服務(wù)器從任務(wù)隊(duì)列中獲取關(guān)鍵詞組包括:第一服務(wù)器檢測任務(wù)隊(duì)列中是否存在待爬取的關(guān)鍵詞組;第一服務(wù)器在檢測出任務(wù)隊(duì)列中存在待爬取的關(guān)鍵詞組時(shí),鎖定任務(wù)隊(duì)列,其中,鎖定的任務(wù)隊(duì)列僅能夠被第一服務(wù)器讀?。灰约暗谝环?wù)器從鎖定的任務(wù)隊(duì)列中獲取關(guān)鍵詞組,并釋放任務(wù)隊(duì)列,其中,釋放后的任務(wù)隊(duì)列能夠被多臺服務(wù)器中任意一臺服務(wù)器讀取。

本申請實(shí)施例的第一服務(wù)器可以是多臺服務(wù)器中任意一臺服務(wù)器。具體地,第一服務(wù)器可以先檢測任務(wù)隊(duì)列中是否存在待爬取的關(guān)鍵詞組,在檢測到任務(wù)隊(duì)列中不存在待爬取的關(guān)鍵詞組時(shí),則等待預(yù)設(shè)時(shí)間后重新檢測任務(wù)隊(duì)列中是否存在待爬取的關(guān)鍵詞組,在檢測到任務(wù)隊(duì)列中存在待爬取的關(guān)鍵詞組時(shí),則鎖定任務(wù)隊(duì)列,從而使得其他服務(wù)器此時(shí)無法訪問該任務(wù)隊(duì)列,以避免多線程同時(shí)讀取任務(wù)隊(duì)列發(fā)生沖突,在第一服務(wù)器從任務(wù)隊(duì)列中讀取到關(guān)鍵詞組之后,釋放任務(wù)隊(duì)列(即對任務(wù)隊(duì)列進(jìn)行解鎖),使得所有的服務(wù)器均可以對該任務(wù)隊(duì)列進(jìn)行訪問。

步驟S104,多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

本申請實(shí)施例的多臺服務(wù)器均設(shè)置有網(wǎng)絡(luò)爬蟲,在多臺服務(wù)器分別獲取到關(guān)鍵詞組后,多臺服務(wù)器通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,其中,關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁是指在搜索引擎(例如,百度,搜狗等搜索引擎)中輸入關(guān)鍵詞后顯示的搜索結(jié)果頁面。以圖2所示為例進(jìn)行說明,服務(wù)器1在獲取到關(guān)鍵詞組1后,服務(wù)器1通過其網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞組1中各個(gè)關(guān)鍵 詞對應(yīng)的搜索引擎結(jié)果頁,服務(wù)器2和服務(wù)器3爬取網(wǎng)頁過程同服務(wù)器1。

本申請實(shí)施例通過多臺服務(wù)器分布式的處理多個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的爬取任務(wù),一方面可以提高爬取多個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的效率,另一方面在關(guān)鍵詞數(shù)量過多時(shí),可以降低觸發(fā)搜索引擎的反爬蟲策略的可能性,以保證獲取到所有關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

本申請實(shí)施例通過多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞;以及多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,本申請實(shí)施例通過多臺服務(wù)器分布式地爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,從而可以提高爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的效率,也可以降低觸發(fā)搜索引擎反爬蟲策略的可能性,解決了相關(guān)技術(shù)中通過單臺服務(wù)器的網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞搜索引擎結(jié)果頁時(shí)效率較低的問題,進(jìn)而達(dá)到了提高爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的效率效果。

優(yōu)選地,為了避免爬取失敗的關(guān)鍵詞被遺漏,多臺服務(wù)器包括第一服務(wù)器,第一服務(wù)器獲取的關(guān)鍵詞組為第一關(guān)鍵詞組,第一服務(wù)器的網(wǎng)絡(luò)爬蟲為第一網(wǎng)絡(luò)爬蟲,多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁包括第一服務(wù)器通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,第一服務(wù)器通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁包括:遍歷第一關(guān)鍵詞組,通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁;判斷第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁是否成功;以及在判斷出存在爬取第一關(guān)鍵詞組中的關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁失敗的情況時(shí),將第一關(guān)鍵詞組中爬取失敗的關(guān)鍵詞添加至失敗列表。

本申請實(shí)施例以第一服務(wù)器為例進(jìn)行說明,具體地,第一服務(wù)器遍歷第一關(guān)鍵詞組中的每一個(gè)關(guān)鍵詞,并通過其網(wǎng)絡(luò)爬蟲(即第一網(wǎng)絡(luò)爬蟲)爬取每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,但是,由于網(wǎng)絡(luò)異常、服務(wù)器異常、數(shù)據(jù)解析異常和觸發(fā)反爬蟲等原因會造成網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁失敗,即未能成功獲取到關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。因此,本申請實(shí)施例對網(wǎng)絡(luò)爬蟲的爬取結(jié)果進(jìn)行檢測,如果網(wǎng)絡(luò)爬蟲成功爬取到關(guān)鍵詞組中每一個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,記錄該關(guān)鍵詞組的出狀態(tài)為成功,如果存在爬取關(guān)鍵詞組中某個(gè)或某些關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁失敗時(shí),則將爬取失敗的關(guān)鍵詞添加至失敗列表中,以進(jìn)行獲取失敗的關(guān)鍵詞的標(biāo)識,并將該關(guān)鍵詞組的處理狀態(tài)記錄為失敗,并且重試次數(shù)加1。本申請實(shí)施例通過對爬取失敗的關(guān)鍵詞進(jìn)行記錄,可以避免爬取失敗的關(guān)鍵詞被遺漏。

需要說明的是,在某個(gè)服務(wù)器爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁失敗時(shí),可以讓該服務(wù)器休眠預(yù)設(shè)時(shí)間后再重新執(zhí)行爬取任務(wù)。

優(yōu)選地,在將第一關(guān)鍵詞組中爬取失敗的關(guān)鍵詞添加至失敗列表之后,該方法還包括:將失敗列表中的關(guān)鍵詞打包為新的關(guān)鍵詞組;以及將新的關(guān)鍵詞組添加至任務(wù)隊(duì)列中。

本申請實(shí)施例在將爬取失敗的關(guān)鍵詞添加至失敗列表之后,從失敗列表中獲取爬取失敗的關(guān)鍵詞,并將爬取失敗的關(guān)鍵詞重新打包為一個(gè)新的關(guān)鍵詞組存入至任務(wù)隊(duì)列中,從而該爬取失敗的關(guān)鍵詞可以再次被爬取,從而可以避免爬取失敗的關(guān)鍵詞對應(yīng)的數(shù)據(jù)不被遺漏,即可以保證爬取到全部關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

優(yōu)選地,將失敗列表中的關(guān)鍵詞打包為新的關(guān)鍵詞組包括:獲取失敗列表中關(guān)鍵詞的重試次數(shù);判斷失敗列表中關(guān)鍵詞的重試次數(shù)是否小于預(yù)設(shè)值;以及在判斷出失敗列表中關(guān)鍵詞的重試次數(shù)小于預(yù)設(shè)值時(shí),將失敗列表中關(guān)鍵詞打包為新的關(guān)鍵詞組。

實(shí)際情況中,一些關(guān)鍵詞可能多次被爬取后仍未能成功獲取到其對應(yīng)的搜索引擎結(jié)果頁,為了節(jié)省系統(tǒng)資源,可以停止對這些關(guān)鍵詞的爬取任務(wù),通過手工等方式去獲取這些關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

具體地,本申請由于預(yù)先記錄了關(guān)鍵詞組的重試次數(shù)(即失敗次數(shù)),通過獲取失敗列表中關(guān)鍵詞的重試次數(shù)并與預(yù)設(shè)值進(jìn)行比較,如果重試次數(shù)小于預(yù)設(shè)值則對失敗列表中的關(guān)鍵詞進(jìn)行打包并存儲至任務(wù)隊(duì)列中,如果重試次數(shù)大于預(yù)設(shè)值則不進(jìn)行打包處理。

從以上的描述中,可以看出,本申請實(shí)施例對于大量的關(guān)鍵詞,通過化整為零的方式,分配到不同IP地址的機(jī)器(即服務(wù)器)上,達(dá)到分布式爬取的目的,同時(shí)可以降低觸發(fā)反爬蟲的可能性;在爬取失敗的情形下(通常是由于反爬蟲機(jī)制觸發(fā)),通過重組關(guān)鍵詞的方式,嘗試再次爬取,保證每個(gè)關(guān)鍵詞都能爬到數(shù)據(jù)而不會被遺漏;將關(guān)鍵詞分組,并添加到爬取隊(duì)列,隊(duì)列的形式可以是分布式隊(duì)列組件,也可以是數(shù)據(jù)庫的形式;爬蟲主動申請任務(wù),從而可以根據(jù)實(shí)際情況控制爬取速度;相同的關(guān)鍵詞可以合并,以減少爬取總量。

需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

根據(jù)本申請實(shí)施例的另一方面,提供了一種網(wǎng)頁爬取裝置,該網(wǎng)頁爬取裝置可以用于執(zhí)行本申請實(shí)施例的網(wǎng)頁爬取方法,本申請實(shí)施例的網(wǎng)頁爬取方法也可以通過本申請實(shí)施例的網(wǎng)頁爬取裝置來執(zhí)行。

圖3是根據(jù)本申請實(shí)施例的網(wǎng)頁爬取裝置的示意圖,如圖3所示,該裝置包括:獲取單元10和爬取單元20。

獲取單元10,用于使多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞。

可選地,多臺服務(wù)器包括第一服務(wù)器,獲取單元10包括:檢測模塊,用于使第一服務(wù)器檢測任務(wù)隊(duì)列中是否存在待爬取的關(guān)鍵詞組;鎖定模塊,用于使第一服務(wù)器在檢測出任務(wù)隊(duì)列中存在待爬取的關(guān)鍵詞組時(shí),鎖定任務(wù)隊(duì)列,其中,鎖定的任務(wù)隊(duì)列僅能夠被第一服務(wù)器讀?。灰约矮@取模塊,用于使第一服務(wù)器從鎖定的任務(wù)隊(duì)列中獲取關(guān)鍵詞組,并釋放任務(wù)隊(duì)列,其中,釋放后的任務(wù)隊(duì)列能夠被多臺服務(wù)器中任意一臺服務(wù)器讀取。

爬取單元20,用于使多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

可選地,多臺服務(wù)器包括第一服務(wù)器,第一服務(wù)器獲取的關(guān)鍵詞組為第一關(guān)鍵詞組,第一服務(wù)器的網(wǎng)絡(luò)爬蟲為第一網(wǎng)絡(luò)爬蟲,爬取單元20包括:爬取模塊,用于遍歷第一關(guān)鍵詞組,通過第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁;判斷模塊,判斷第一網(wǎng)絡(luò)爬蟲爬取第一關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁是否成功;以及添加模塊,用于在判斷出存在爬取第一關(guān)鍵詞組中的關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁失敗的情況時(shí),將第一關(guān)鍵詞組中爬取失敗的關(guān)鍵詞添加至失敗列表。

本申請實(shí)施例通過獲取單元10使多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞;以及爬取單元20使多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,本申請實(shí)施例通過多臺服務(wù)器分布式地爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁,從而可以提高爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的效率,也可以降低觸發(fā)搜索引擎反爬蟲策略的可能性,解決了相關(guān)技術(shù)中通過單臺服務(wù)器的網(wǎng)絡(luò)爬蟲爬取關(guān)鍵詞搜索引擎結(jié)果頁時(shí)效率較低的問題,進(jìn)而達(dá)到了提高爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁的效率效果。

優(yōu)選地,該裝置還包括:打包單元,用于將失敗列表中的關(guān)鍵詞打包為新的關(guān)鍵詞組;以及添加單元,用于將新的關(guān)鍵詞組添加至任務(wù)隊(duì)列中。

所述網(wǎng)頁爬取裝置包括處理器和存儲器,上述獲取單元和爬取單元等均作為程序單元存儲在存儲器中,由處理器執(zhí)行存儲在存儲器中的上述程序單元來實(shí)現(xiàn)相應(yīng)的功能。

處理器中包含內(nèi)核,由內(nèi)核去存儲器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個(gè)或以上,通過調(diào)整內(nèi)核參數(shù)來爬取關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

存儲器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM),存儲器包括至少一個(gè)存儲芯片。

本申請還提供了一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),適于執(zhí)行初始化有如下方法步驟的程序代碼:多臺服務(wù)器分別從任務(wù)隊(duì)列中獲取關(guān)鍵詞組,其中,任務(wù)隊(duì)列中存儲有多個(gè)待爬取的關(guān)鍵詞組,每個(gè)待爬取的關(guān)鍵詞組包含多個(gè)關(guān)鍵詞;以及多臺服務(wù)器分別通過各自的網(wǎng)絡(luò)爬蟲爬取獲取的關(guān)鍵詞組中每個(gè)關(guān)鍵詞對應(yīng)的搜索引擎結(jié)果頁。

上述本申請實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

在本申請的上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本申請各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM, Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述僅是本申請的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯拢€可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1