本發(fā)明涉及計算機網(wǎng)絡(luò)技術(shù),尤其涉及一種移動終端及網(wǎng)絡(luò)爬蟲的實現(xiàn)方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)信息爆炸式的增長,搜索引擎扮演著越來越重要的角色。搜索引擎技術(shù)中,網(wǎng)絡(luò)爬蟲是重要的組成部分。網(wǎng)絡(luò)爬蟲可以按照一定的規(guī)則,自動地抓取頁面信息。網(wǎng)絡(luò)爬蟲工作的基本步驟包括:將待抓取的URL(Uniform Resource Locator,統(tǒng)一資源定位符)放入待抓取隊列;從待抓取隊列中取出一個URL;從所述URL指向的網(wǎng)站上抓取相關(guān)頁面信息;將抓取到的頁面信息保存至頁面庫中;將已經(jīng)抓取完的URL放入已抓取URL隊列。在抓取網(wǎng)頁信息的過程中,根據(jù)網(wǎng)頁的抓取策略,不斷從當前頁面上抽取新的URL放入隊列,直到滿足某種停止條件。然后將抓取到的網(wǎng)頁信息存儲在搜索引擎的服務(wù)器中,從而可以加快用戶的搜索速度。
網(wǎng)絡(luò)爬蟲在進行信息抓取的時候,需要根據(jù)所要獲得的信息定制配置文件。配置文件中包含所要爬取信息的入口鏈接,劃定所要爬取的信息所在區(qū)域,表明所要爬取的信息如何進行翻頁擴展,如何從網(wǎng)頁中準確的獲取具體的每一項信息等等。也就是說,配置文件定義了網(wǎng)絡(luò)爬蟲進行抓取的流程,以及所要獲取的結(jié)果。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:
在現(xiàn)有網(wǎng)絡(luò)爬蟲的實現(xiàn)方法中,采用邊爬邊下載內(nèi)容的方式進行抓取,不支持多人協(xié)同爬取,執(zhí)行效率低下。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種移動終端及網(wǎng)絡(luò)爬蟲的實現(xiàn)方法,可以支持多人同時爬取,能夠提高執(zhí)行效率。
為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明實施例提供了一種移動終端,所述移動終端包括:確定單元和抓取單元;
所述確定單元,用于根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹;
所述抓取單元,用于根據(jù)所述平衡樹對所述種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
在上述實施例中,所述移動終端還包括:轉(zhuǎn)化單元和存儲單元;
所述轉(zhuǎn)化單元,用于將所述平衡樹轉(zhuǎn)化為二叉樹;
所述存儲單元,用于將二叉樹保存在本地文件中。
在上述實施例中,所述確定單元包括:選擇子單元和添加子單元;
所述選擇子單元,用于當所述種子節(jié)點序列不為空時,在所述種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點;
所述添加子單元,用于將所述當前種子節(jié)點生成的所有節(jié)點添加到所述平衡樹中。
在上述實施例中,所述添加子單元,具體用于將所述當前種子節(jié)點作為父節(jié)點,當所述父節(jié)點指向的子節(jié)點不為空時,在全部子節(jié)點中選擇一個子節(jié)點作為當前子節(jié)點;判斷所述當前子節(jié)點是否在所述平衡樹中;當所述當前子節(jié)點不在所述平衡樹中時,將所述當前子節(jié)點添加到所述平衡樹中,將所述當前子節(jié)點作為所述當前父節(jié)點,返回執(zhí)行上述操作。
在上述實施例中,所述添加子單元,還用于當所述當前子節(jié)點不在所述平衡樹中時,將所述當前子節(jié)點添加到所述種子節(jié)點序列對應(yīng)的有向有環(huán)圖中;當所述當前子節(jié)點在所述平衡樹中時,將所述當前子節(jié)點的碰撞次數(shù)加1,并將所述當前子節(jié)點添加到所述種子節(jié)點序列對應(yīng)的有向有環(huán)圖中。
本發(fā)明實施例還提供了一種網(wǎng)絡(luò)爬蟲的實現(xiàn)方法,所述方法包括:
根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹;
根據(jù)所述平衡樹對所述種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
在上述實施例中,所述方法還包括:
將所述平衡樹轉(zhuǎn)化為二叉樹;
將二叉樹保存在本地文件中。
在上述實施例中,所述根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹,包括:
當所述種子節(jié)點序列不為空時,在所述種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點;
將所述當前種子節(jié)點生成的所有節(jié)點添加到所述平衡樹中。
在上述實施例中,所述將所述當前種子節(jié)點生成的所有節(jié)點添加到所述平衡樹中,包括:
將所述當前種子節(jié)點作為父節(jié)點,當所述父節(jié)點指向的子節(jié)點不為空時,在全部子節(jié)點中選擇一個子節(jié)點作為當前子節(jié)點;
判斷所述當前子節(jié)點是否在所述平衡樹中;
當所述當前子節(jié)點不在所述平衡樹中時,將所述當前子節(jié)點添加到所述平衡樹中,將所述當前子節(jié)點作為所述當前父節(jié)點,返回執(zhí)行上述操作。
在上述實施例中,所述方法還包括:
當所述當前子節(jié)點不在所述平衡樹中時,將所述當前子節(jié)點添加到所述種子節(jié)點序列對應(yīng)的有向有環(huán)圖中;
當所述當前子節(jié)點在所述平衡樹中時,將所述當前子節(jié)點的碰撞次數(shù)加1,并將所述當前子節(jié)點添加到所述種子節(jié)點序列對應(yīng)的有向有環(huán)圖中。
本發(fā)明實施例提供的移動終端及網(wǎng)絡(luò)爬蟲的實現(xiàn)方法,先根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹;然后根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。而在現(xiàn)有技術(shù)中,大多采用有向有環(huán)圖,使用深度或者廣度或者兩者共用的方式進行抓取,因此,和現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的移動終端及網(wǎng)絡(luò)爬蟲的實現(xiàn)方法,可以支持多人同時爬取,能夠提高執(zhí)行效率;并且,本發(fā)明實施例的技術(shù)方案實現(xiàn)簡單方便、便于普及,適用范圍更廣。
附圖說明
圖1為本發(fā)明實施例提供的一種移動終端的硬件結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例提供的移動終端能夠操作的通信系統(tǒng)結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例一提供的移動終端的組成結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例二提供的移動終端的組成結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例中網(wǎng)絡(luò)爬蟲的實現(xiàn)方法的實現(xiàn)流程示意圖;
圖6為本發(fā)明實施例中確定種子節(jié)點序列對應(yīng)的平衡樹的實現(xiàn)方法流程示意圖;
圖7為本發(fā)明實施例中將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中的實現(xiàn)方法流程示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。
應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明的技術(shù)方案,并不用于限定本發(fā)明的保護范圍。
現(xiàn)在將參考附圖描述實現(xiàn)本發(fā)明各個實施例的移動終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身并沒有特定的意義。因此,“模塊”與“部件”可以混合地使用。
移動終端可以以各種形式來實施。例如,本發(fā)明中描述的終端可以包括諸如移動電話、智能電話、筆記本電腦、數(shù)字廣播接收器、個人數(shù)字助理(PDA)、平板電腦(PAD)、便攜式多媒體播放器(PMP)、導(dǎo)航裝置等的移動終端。
圖1為實現(xiàn)本發(fā)明各個實施例的移動終端100的硬件結(jié)構(gòu)示意,如圖1所示,移動終端100可以包括:無線通信單元110、用戶輸入單元120、感測單元130、輸出單元140、存儲器150、接口單元160、控制器170和電源單元180等。圖1示出了具有各種組件的移動終端100,但是應(yīng)理解的是,并不要求實施所有示出的組件??梢蕴娲貙嵤└嗷蚋俚慕M件。將在下面詳細描述移動終端100的元件。
無線通信單元110通常包括一個或多個組件,其允許移動終端100與無線通信系統(tǒng)或網(wǎng)絡(luò)之間的無線電通信。例如,無線通信單元110可以包括:移動通信模塊111、無線互聯(lián)網(wǎng)模塊112和短程通信模塊113中的至少一個。
移動通信模塊111將無線電信號發(fā)送到基站(例如,接入點、節(jié)點B等)、外部終端以及服務(wù)器中的至少一個和/或從其接收無線電信號。這樣的無線電信號可以包括語音通話信號、視頻通話信號、或者根據(jù)文本和/或多媒體消息發(fā)送和/或接收的各種類型的數(shù)據(jù)。
無線互聯(lián)網(wǎng)模塊112支持移動終端100的無線互聯(lián)網(wǎng)接入。無線互聯(lián)網(wǎng)模塊112可以內(nèi)部或外部地耦接到終端。無線互聯(lián)網(wǎng)模塊112所涉及的無線互聯(lián)網(wǎng)接入技術(shù)可以包括無線局域網(wǎng)(WLAN)、無線相容性認證(Wi-Fi)、無線寬帶(Wibro)、全球微波互聯(lián)接入(Wimax)、高速下行鏈路分組接入(HSDPA)等。
短程通信模塊113是用于支持短程通信的模塊。短程通信技術(shù)的一些示例包括藍牙TM、射頻識別(RFID)、紅外數(shù)據(jù)協(xié)會(IrDA)、超寬帶(UWB)、紫蜂TM等。
用戶輸入單元120可以根據(jù)用戶輸入的命令生成鍵輸入數(shù)據(jù)以控制移動終端100的各種操作。用戶輸入單元120允許用戶輸入各種類型的信息,并且可以包括鍵盤、鍋仔片、觸摸板(例如,檢測由于被接觸而導(dǎo)致的電阻、壓力、電容等的變化的觸敏組件)、滾輪、搖桿等。特別地,當觸摸板以層的形式疊加在顯示單元141上時,可以形成觸摸屏。
感測單元130檢測移動終端100的當前狀態(tài),(例如,移動終端100的打開或關(guān)閉狀態(tài))、移動終端100的位置、用戶對于移動終端100的接觸(即,觸摸輸入)的有無、移動終端100的取向、移動終端100的加速或減速移動和方向等,并且生成用于控制移動終端100的操作的命令或信號。例如,當移動終端100實施為滑動型移動電話時,感測單元130可以感測該滑動型電話是打開還是關(guān)閉。另外,感測單元130能夠檢測電源單元180是否提供電力或者接口單元160是否與外部裝置耦接。
接口單元160用作至少一個外部裝置與移動終端100連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機端口、外部電源(或電池充電器)端口、有線或無線數(shù)據(jù)端口、存儲卡端口(典型示例是通用串行總線USB端口)、用于連接具有識別模塊的裝置的端口、音頻輸入/輸出(I/O)端口、視頻I/O端口、耳機端口等。
接口單元160可以用于接收來自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等)并且將接收到的輸入傳輸?shù)揭苿咏K端100內(nèi)的一個或多個元件或者可以用于在移動終端100和外部裝置之間傳輸數(shù)據(jù)。
另外,當移動終端100與外部底座連接時,接口單元160可以用作允許通過其將電力從底座提供到移動終端100的路徑或者可以用作允許從底座輸入的各種命令信號通過其傳輸?shù)揭苿咏K端100的路徑。從底座輸入的各種命令信號或電力可以用作用于識別移動終端100是否準確地安裝在底座上的信號。
輸出單元140被構(gòu)造為以視覺、音頻和/或觸覺方式提供輸出信號(例如,音頻信號、視頻信號、警報信號、振動信號等)。輸出單元140可以包括顯示單元141和音頻輸出模塊142等。
顯示單元141可以顯示在移動終端100中處理的信息。例如,當移動終端100處于電話通話模式時,顯示單元141可以顯示與通話或其它通信(例如,文本消息收發(fā)、多媒體文件下載等)相關(guān)的用戶界面(UI)或圖形用戶界面(GUI)。當移動終端100處于視頻通話模式或者圖像捕獲模式時,顯示單元141可以顯示捕獲的圖像和/或接收的圖像、示出視頻或圖像以及相關(guān)功能的UI或GUI等。
同時,當顯示單元141和觸摸板以層的形式彼此疊加以形成觸摸屏?xí)r,顯示單元141可以用作輸入裝置和輸出裝置。顯示單元141可以包括液晶顯示器(LCD)、薄膜晶體管LCD(TFT-LCD)、有機發(fā)光二極管(OLED)顯示器、柔性顯示器、三維(3D)顯示器等中的至少一種。這些顯示器中的一些可以被構(gòu)造為透明狀以允許用戶從外部觀看,這可以稱為透明顯示器,典型的透明顯示器可以例如為TOLED(透明有機發(fā)光二極管)顯示器等。根據(jù)特定想要的實施方式,移動終端100可以包括兩個或更多顯示單元(或其它顯示裝置),例如,移動終端100可以包括外部顯示單元(未示出)和內(nèi)部顯示單元(未示出)。觸摸屏可用于檢測觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。
音頻輸出模塊142可以在移動終端100處于呼叫信號接收模式、通話模式、記錄模式、語音識別模式、廣播接收模式等模式下時,將無線通信單元110接收的或者在存儲器150中存儲的音頻數(shù)據(jù)轉(zhuǎn)換音頻信號并且輸出為聲音。而且,音頻輸出模塊142可以提供與移動終端100執(zhí)行的特定功能相關(guān)的音頻輸出(例如,呼叫信號接收聲音、消息接收聲音等)。音頻輸出模塊142可以包括揚聲器、蜂鳴器等。
存儲器150可以存儲由控制器170執(zhí)行的處理和控制操作的軟件程序等,或者可以暫時地存儲已經(jīng)輸出或?qū)⒁敵龅臄?shù)據(jù)(例如,電話簿、消息、靜態(tài)圖像、視頻等)。而且,存儲器150可以存儲關(guān)于當觸摸施加到觸摸屏?xí)r輸出的各種方式的振動和音頻信號的數(shù)據(jù)。
存儲器150可以包括至少一種類型的存儲介質(zhì),所述存儲介質(zhì)包括閃存、硬盤、多媒體卡、卡型存儲器(例如,SD或DX存儲器等)、隨機訪問存儲器(RAM)、靜態(tài)隨機訪問存儲器(SRAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、可編程只讀存儲器(PROM)、磁性存儲器、磁盤、光盤等。而且,移動終端100可以與通過網(wǎng)絡(luò)連接執(zhí)行存儲器150的存儲功能的網(wǎng)絡(luò)存儲裝置協(xié)作。
控制器170通常控制移動終端100的總體操作。例如,控制器170執(zhí)行與語音通話、數(shù)據(jù)通信、視頻通話等相關(guān)的控制和處理。另外,控制器170可以包括用于再現(xiàn)或回放多媒體數(shù)據(jù)的多媒體模塊171,多媒體模塊171可以構(gòu)造在控制器170內(nèi),或者可以構(gòu)造為與控制器170分離??刂破?70可以執(zhí)行模式識別處理,以將在觸摸屏上執(zhí)行的手寫輸入或者圖片繪制輸入識別為字符或圖像。
電源單元180在控制器170的控制下接收外部電力或內(nèi)部電力并且提供操作各元件和組件所需的適當?shù)碾娏Α?/p>
這里描述的各種實施方式可以以使用例如計算機軟件、硬件或其任何組合的計算機可讀介質(zhì)來實施。對于硬件實施,這里描述的實施方式可以通過使用特定用途集成電路(ASIC)、數(shù)字信號處理器(DSP)、數(shù)字信號處理裝置(DSPD)、可編程邏輯裝置(PLD)、現(xiàn)場可編程門陣列(FPGA)、處理器、控制器、微控制器、微處理器、被設(shè)計為執(zhí)行這里描述的功能的電子單元中的至少一種來實施,在一些情況下,這樣的實施方式可以在控制器170中實施。對于軟件實施,諸如過程或功能的實施方式可以與允許執(zhí)行至少一種功能或操作的單獨的軟件模塊來實施。軟件代碼可以由以任何適當?shù)木幊陶Z言編寫的軟件應(yīng)用程序(或程序)來實施,軟件代碼可以存儲在存儲器150中并且由控制器170執(zhí)行。
至此,已經(jīng)按照其功能描述了移動終端100。下面,為了簡要起見,將描述諸如折疊型、直板型、擺動型、滑動型移動終端100等的各種類型的移動終端100中的滑動型移動終端100作為示例。因此,本發(fā)明能夠應(yīng)用于任何類型的移動終端100,并且不限于滑動型移動終端100。
如圖1中所示的移動終端100可以被構(gòu)造為利用經(jīng)由幀或分組發(fā)送數(shù)據(jù)的諸如有線和無線通信系統(tǒng)以及基于衛(wèi)星的通信系統(tǒng)來操作。
現(xiàn)在將參考圖2描述其中根據(jù)本發(fā)明的移動終端100能夠操作的通信系統(tǒng)。
這樣的通信系統(tǒng)可以使用不同的空中接口和/或物理層。例如,由通信系統(tǒng)使用的空中接口包括例如頻分多址(FDMA)、時分多址(TDMA)、碼分多址(CDMA)和通用移動通信系統(tǒng)(UMTS)(特別地,長期演進(LTE))、全球移動通信系統(tǒng)(GSM)等。作為非限制性示例,下面的描述涉及CDMA通信系統(tǒng),但是這樣的教導(dǎo)同樣適用于其它類型的系統(tǒng)。
參考圖2,CDMA無線通信系統(tǒng)可以包括多個移動終端100、多個基站(BS)270、基站控制器(BSC)275和移動交換中心(MSC)280。MSC280被構(gòu)造為與公共電話交換網(wǎng)絡(luò)(PSTN)290形成接口。MSC280還被構(gòu)造為與可以經(jīng)由回程線路耦接到基站270的BSC275形成接口。回程線路可以根據(jù)若干己知的接口中的任一種來構(gòu)造,所述接口包括例如E1/T1、ATM、IP、PPP、幀中繼、HDSL、ADSL或xDSL。將理解的是,如圖2中所示的系統(tǒng)可以包括多個BSC275。
每個BS270可以服務(wù)一個或多個分區(qū)(或區(qū)域),由多向天線或指向特定方向的天線覆蓋的每個分區(qū)放射狀地遠離BS270?;蛘?,每個分區(qū)可以由用于分集接收的兩個或更多天線覆蓋。每個BS270可以被構(gòu)造為支持多個頻率分配,并且每個頻率分配具有特定頻譜(例如,1.25MHz,5MHz等)。
分區(qū)與頻率分配的交叉可以被稱為CDMA信道。BS270也可以被稱為基站收發(fā)器子系統(tǒng)(BTS)或者其它等效術(shù)語。在這樣的情況下,術(shù)語“基站”可以用于籠統(tǒng)地表示單個BSC275和至少一個BS270。基站也可以被稱為“蜂窩站”?;蛘?,特定BS270的各分區(qū)可以被稱為多個蜂窩站。
作為無線通信系統(tǒng)的一個典型操作,BS270接收來自各種移動終端100的反向鏈路信號。移動終端100通常參與通話、消息收發(fā)和其它類型的通信。特定BS270接收的每個反向鏈路信號被在特定BS270內(nèi)進行處理。獲得的數(shù)據(jù)被轉(zhuǎn)發(fā)給相關(guān)的BSC275。BSC提供通話資源分配和包括BS270之間的軟切換過程的協(xié)調(diào)的移動管理功能。BSC275還將接收到的數(shù)據(jù)路由到MSC280,其提供用于與PSTN290形成接口的額外的路由服務(wù)。類似地,PSTN290與MSC280形成接口,MSC與BSC275形成接口,并且BSC275相應(yīng)地控制BS270以將正向鏈路信號發(fā)送到移動終端100。
移動終端中無線通信單元110的移動通信模塊112基于移動終端內(nèi)置的接入移動通信網(wǎng)絡(luò)(如2G/3G/4G等移動通信網(wǎng)絡(luò))的必要數(shù)據(jù)(包括用戶識別信息和鑒權(quán)信息)接入移動通信網(wǎng)絡(luò)為移動終端用戶的網(wǎng)頁瀏覽、網(wǎng)絡(luò)多媒體播放等業(yè)務(wù)傳輸移動通信數(shù)據(jù)(包括上行的移動通信數(shù)據(jù)和下行的移動通信數(shù)據(jù))。
無線通信單元110的無線互聯(lián)網(wǎng)模塊113通過運行無線熱點的相關(guān)協(xié)議功能而實現(xiàn)無線熱點的功能,無線熱點支持多個移動終端(移動終端之外的任意移動終端)接入,通過復(fù)用移動通信模塊112與移動通信網(wǎng)絡(luò)之間的移動通信連接為移動終端用戶的網(wǎng)頁瀏覽、網(wǎng)絡(luò)多媒體播放等業(yè)務(wù)傳輸移動通信數(shù)據(jù)(包括上行的移動通信數(shù)據(jù)和下行的移動通信數(shù)據(jù)),由于移動終端實質(zhì)上是復(fù)用移動終端與通信網(wǎng)絡(luò)之間的移動通信連接傳輸移動通信數(shù)據(jù)的,因此移動終端消耗的移動通信數(shù)據(jù)的流量由通信網(wǎng)絡(luò)側(cè)的計費實體計入移動終端的通信資費,從而消耗移動終端簽約使用的通信資費中包括的移動通信數(shù)據(jù)的數(shù)據(jù)流量。
基于上述移動終端100硬件結(jié)構(gòu)以及通信系統(tǒng),提出本發(fā)明方法各個實施例。
實施例一
圖3為本發(fā)明實施例一提供的移動終端的組成結(jié)構(gòu)示意圖。如圖3所示,所述移動終端包括:確定單元301和抓取單元302;
確定單元301,用于根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹。
一般情況下,一個網(wǎng)頁服務(wù)器中具有非常多的統(tǒng)一資源定位符(Uniform Resource Location,URL),并且各URL之間的關(guān)系也是錯綜復(fù)雜的,為了清楚地獲取并表示URL之間的關(guān)系,可以通過建立URL的樹結(jié)構(gòu),由于網(wǎng)絡(luò)爬蟲抓取網(wǎng)頁的速度非??於颐總€網(wǎng)頁只獲取一次,可以準確抓取到每個網(wǎng)頁,因此,可以采用網(wǎng)絡(luò)爬蟲軟件通過網(wǎng)絡(luò)爬蟲技術(shù)快速抓取網(wǎng)頁服務(wù)器中各網(wǎng)頁信息,并將各網(wǎng)頁中的URL建立成URL的樹結(jié)構(gòu),以便將所有網(wǎng)頁的URL都關(guān)聯(lián)起來。
在本發(fā)明的具體實施例中,可以預(yù)先確定種子節(jié)點序列;然后根據(jù)預(yù)先確定的種子節(jié)點序列對應(yīng)的平衡樹。例如,假設(shè)預(yù)先確定的種子節(jié)點序列為{A1、A2、A3、A4},在本步驟中,可以確定種子節(jié)點序列{A1、A2、A3、A4}對應(yīng)的平衡樹。
在本發(fā)明的具體實施例中,當種子節(jié)點序列不為空時,確定單元301可以在種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點;然后將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中。具體地,確定單元301在確定種子節(jié)點序列對應(yīng)的平衡樹時,可以先判斷種子節(jié)點序列是否為空,當種子節(jié)點序列不為空時,在種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點;然后確定單元301可以將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中。當種子節(jié)點序列為空時,確定單元301可以結(jié)束確定種子節(jié)點序列對應(yīng)的平衡樹的流程。
抓取單元302,用于根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
在本發(fā)明的具體實施例中,確定單元301在確定種子節(jié)點序列對應(yīng)的平衡樹之后,抓取單元302可以根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。具體地,抓取單元302可以采用現(xiàn)有技術(shù)中平衡樹的遍歷方法,通過對平衡樹進行遍歷從而實現(xiàn)對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
較佳地,在本發(fā)明的具體實施例中,所述移動終端還包括:轉(zhuǎn)化單元303和存儲單元304;
轉(zhuǎn)化單元303,用于將平衡樹轉(zhuǎn)化為二叉樹。
存儲單元304,用于將二叉樹保存在本地文件中。
在本發(fā)明的具體實施例中,轉(zhuǎn)化單元303還可以將平衡樹轉(zhuǎn)化為二叉樹;然后存儲單元304將二叉樹保存在本地文件中。
本發(fā)明實施例提供的移動終端,先根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹;然后根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。而在現(xiàn)有技術(shù)中,大多采用有向有環(huán)圖,使用深度或者廣度或者兩者共用的方式進行抓取,因此,和現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的移動終端,可以支持多人同時爬取,能夠提高執(zhí)行效率;并且,本發(fā)明實施例的技術(shù)方案實現(xiàn)簡單方便、便于普及,適用范圍更廣。
實施例二
圖4為本發(fā)明實施例二提供的移動終端的組成結(jié)構(gòu)示意圖。如圖4所示,確定單元301包括:選擇子單元3011和添加子單元3012;
選擇子單元3011,用于當種子節(jié)點序列不為空時,在種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點。
在本發(fā)明的具體實施例中,選擇子單元3011在確定種子節(jié)點序列對應(yīng)的平衡樹時,可以先判斷種子節(jié)點序列是否為空;當種子節(jié)點序列不為空時,選擇子單元3011可以在種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點;當種子節(jié)點序列為空時,選擇子單元3011可以結(jié)束確定種子節(jié)點序列對應(yīng)的平衡樹的流程。
添加子單元3012,用于將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中。
在本發(fā)明的具體實施例中,選擇子單元3011在種子節(jié)點序列中選擇當前種子節(jié)點之后,添加子單元3012可以將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中。
在本發(fā)明的具體實施例中,添加子單元3012,具體用于將當前種子節(jié)點作為父節(jié)點,當父節(jié)點指向的子節(jié)點不為空時,在全部子節(jié)點中選擇一個子節(jié)點作為當前子節(jié)點;判斷當前子節(jié)點是否在平衡樹中;當所述當前子節(jié)點不在平衡樹中時,將當前子節(jié)點添加到平衡樹中,將當前子節(jié)點作為當前父節(jié)點,返回執(zhí)行上述操作。具體地,添加子單元3012可以采用現(xiàn)有技術(shù)中的平衡樹生成方法將當前子節(jié)點添加到平衡樹中。
在本發(fā)明的具體實施例中,添加子單元3012,還用于當所述當前子節(jié)點不在平衡樹中時,將當前子節(jié)點添加到種子節(jié)點序列對應(yīng)的有向有環(huán)圖中;當所述當前子節(jié)點在平衡樹中時,將當前子節(jié)點的碰撞次數(shù)加1,并將當前子節(jié)點添加到所述種子節(jié)點序列對應(yīng)的有向有環(huán)圖中。
本發(fā)明實施例提供的移動終端,先根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹;然后根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。而在現(xiàn)有技術(shù)中,大多采用有向有環(huán)圖,使用深度或者廣度或者兩者共用的方式進行抓取,因此,和現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的移動終端,可以支持多人同時爬取,能夠提高執(zhí)行效率;并且,本發(fā)明實施例的技術(shù)方案實現(xiàn)簡單方便、便于普及,適用范圍更廣。
實施例三
圖5為本發(fā)明實施例中網(wǎng)絡(luò)爬蟲的實現(xiàn)方法的實現(xiàn)流程示意圖。如圖5所示,所述方法包括:
步驟501、根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹。
在本發(fā)明的具體實施例中,可以預(yù)先確定種子節(jié)點序列;然后根據(jù)預(yù)先確定的種子節(jié)點序列對應(yīng)的平衡樹。例如,假設(shè)預(yù)先確定的種子節(jié)點序列為{A1、A2、A3、A4},在本步驟中,可以確定種子節(jié)點序列{A1、A2、A3、A4}對應(yīng)的平衡樹。
圖6為本發(fā)明實施例中確定種子節(jié)點序列對應(yīng)的平衡樹的實現(xiàn)方法流程示意圖。如圖6所示,所述方法包括:
步驟601、當種子節(jié)點序列不為空時,在種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點。
在本發(fā)明的具體實施例中,在確定種子節(jié)點序列對應(yīng)的平衡樹時,可以先判斷種子節(jié)點序列是否為空;當種子節(jié)點序列不為空時,在種子節(jié)點序列中選擇一個種子節(jié)點作為當前種子節(jié)點;當種子節(jié)點序列為空時,結(jié)束確定種子節(jié)點序列對應(yīng)的平衡樹的流程。
步驟602、將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中。
在本發(fā)明的具體實施例中,在種子節(jié)點序列中選擇當前種子節(jié)點之后,將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中。
根據(jù)上述的分析可知,通過上述的步驟601~602,可以實現(xiàn)確定種子節(jié)點序列對應(yīng)的平衡樹,從而可以根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
圖7為本發(fā)明實施例中將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹中的實現(xiàn)方法流程示意圖。如圖7所示,將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹的方法可以包括以下步驟:
步驟701、將當前種子節(jié)點作為父節(jié)點。
在本發(fā)明的具體實施例中,在將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹時,在種子節(jié)點序列中選擇當前種子節(jié)點之后,可以將當前種子節(jié)點作為父節(jié)點。
步驟702、當父節(jié)點指向的子節(jié)點不為空時,在全部子節(jié)點中選擇一個子節(jié)點作為當前子節(jié)點。
在本發(fā)明的具體實施例中,當父節(jié)點指向的子節(jié)點不為空時,可以在全部子節(jié)點中選擇一個子節(jié)點作為當前子節(jié)點;當父節(jié)點指向的子節(jié)點為空時,可以結(jié)束將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹的流程。
步驟703、判斷當前子節(jié)點是否在平衡樹中。
在本發(fā)明的具體實施例中,在全部子節(jié)點中選擇當前子節(jié)點之后,可以判斷當前子節(jié)點是否在平衡樹中,當所述當前子節(jié)點不在平衡樹中時,可以執(zhí)行步驟704;當所述當前子節(jié)點在平衡樹中時,可以執(zhí)行步驟705。
步驟704、將當前子節(jié)點添加到平衡樹中,將當前子節(jié)點作為當前父節(jié)點,返回執(zhí)行步驟702。
在本發(fā)明的具體實施例中,當所述當前子節(jié)點不在平衡樹中時,可以將當前子節(jié)點添加到平衡樹中。具體地,可以采用現(xiàn)有技術(shù)中的平衡樹生成方法將當前子節(jié)點添加到平衡樹中。然后將當前子節(jié)點作為當前父節(jié)點,返回執(zhí)行步驟702。
較佳地,在本發(fā)明的具體實施例中,當所述當前子節(jié)點不在平衡樹中時,還可以將當前子節(jié)點添加到種子節(jié)點序列對應(yīng)的有向有環(huán)圖中。
步驟705、將當前子節(jié)點作為當前父節(jié)點,返回執(zhí)行步驟702。
在本發(fā)明的具體實施例中,當所述當前子節(jié)點在平衡樹中時,可以將當前子節(jié)點的碰撞次數(shù)加1,并將當前子節(jié)點添加到種子節(jié)點序列對應(yīng)的有向有環(huán)圖中,返回執(zhí)行步驟702。
根據(jù)上述的分析可知,通過上述的步驟701~705,可以實現(xiàn)將當前種子節(jié)點生成的所有節(jié)點添加到平衡樹,從而可以根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
步驟502、根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
在本發(fā)明的具體實施例中,在確定種子節(jié)點序列對應(yīng)的平衡樹之后,可以根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。具體地,可以采用現(xiàn)有技術(shù)中平衡樹的遍歷方法,通過對平衡樹進行遍歷從而實現(xiàn)對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。
較佳地,在本發(fā)明的具體實施例中,還可以將平衡樹轉(zhuǎn)化為二叉樹;然后將二叉樹保存在本地文件中。具體地,可以采用現(xiàn)有技術(shù)中的二叉樹生成方法將平衡樹轉(zhuǎn)化為二叉樹。
具體地,在本發(fā)明的具體實施例中,具體的有向有環(huán)圖的存儲方案偽代碼如下:
本發(fā)明實施例提供的網(wǎng)絡(luò)爬蟲的實現(xiàn)方法,先根據(jù)預(yù)先確定的種子節(jié)點序列確定種子節(jié)點序列對應(yīng)的平衡樹;然后根據(jù)平衡樹對種子節(jié)點序列中的全部種子節(jié)點以及全部種子節(jié)點生成的所有節(jié)點進行抓取。而在現(xiàn)有技術(shù)中,大多采用有向有環(huán)圖,使用深度或者廣度或者兩者共用的方式進行抓取,因此,和現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的網(wǎng)絡(luò)爬蟲的實現(xiàn)方法,可以支持多人同時爬取,能夠提高執(zhí)行效率;并且,本發(fā)明實施例的技術(shù)方案實現(xiàn)簡單方便、便于普及,適用范圍更廣。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所描述的方法。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。