專利名稱:一種渲染網(wǎng)頁的方法、服務(wù)器和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,具體涉及一種渲染網(wǎng)頁的方法、服務(wù)器和系統(tǒng)。
背景技術(shù):
現(xiàn)有技術(shù)中,渲染網(wǎng)頁主要包括創(chuàng)建矢量圖及位形,調(diào)整網(wǎng)頁色彩,制作按鈕、導(dǎo)航條及動(dòng)畫,利用濾鏡處理圖像等處理。其中涉及多種處理,處理量較大??墒牵瑢?duì)于一些業(yè)務(wù),會(huì)有對(duì)大量網(wǎng)頁進(jìn)而渲染操作的需要;例如,網(wǎng)絡(luò)爬蟲業(yè)務(wù)中就需要對(duì)大量網(wǎng)頁進(jìn)行渲染操作。其中,網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人)是一種按照一定的規(guī)則自動(dòng)的抓取萬維網(wǎng)信息的程序或者腳本。在現(xiàn)有技術(shù)中,越來越多的網(wǎng)頁頁面采用了異步請(qǐng)求數(shù)據(jù)的方式,對(duì)于這類網(wǎng)頁,通過直接下載無法獲取網(wǎng)頁的全部內(nèi)容,會(huì)遺漏一些關(guān)鍵鏈接及 信息,因此需要對(duì)網(wǎng)頁進(jìn)行渲染,從渲染結(jié)果中獲得更加全面的網(wǎng)頁信息。此外,在網(wǎng)頁監(jiān)控業(yè)務(wù)中,同樣為了獲得網(wǎng)頁的全面信息,也需要對(duì)大量的網(wǎng)頁進(jìn)行渲染。對(duì)大量網(wǎng)頁的渲染處理要求設(shè)備具有極高的處理能力,現(xiàn)有設(shè)備通常無法滿足這種處理能力的要求,造成處理速度較慢,使得渲染網(wǎng)頁處理成為整個(gè)業(yè)務(wù)完成的瓶頸,進(jìn)而影響整個(gè)業(yè)務(wù)的處理速度。
發(fā)明內(nèi)容
鑒于上述問題,本發(fā)明提供一種渲染網(wǎng)頁的方法、服務(wù)器和系統(tǒng),以解決對(duì)網(wǎng)頁渲染處理速度慢,影響業(yè)務(wù)整體處理速度的問題。依據(jù)本發(fā)明的一個(gè)方面,提供了一種渲染網(wǎng)頁的方法,所述方法包括創(chuàng)建多個(gè)虛擬機(jī),虛擬機(jī)中加載渲染引擎,在虛擬機(jī)中啟動(dòng)多個(gè)渲染進(jìn)程;通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果存入結(jié)果隊(duì)列。其中,所述虛擬機(jī)中加載渲染引擎具體包括在虛擬機(jī)中加載多種渲染引擎;所述根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染具體包括當(dāng)業(yè)務(wù)指定渲染引擎時(shí),通過渲染進(jìn)程解析出渲染任務(wù)中包含的渲染引擎信息,所述渲染引擎信息中記載用于執(zhí)行所述渲染任務(wù)的渲染引擎;通過渲染進(jìn)程調(diào)用渲染弓I擎信息中記載的渲染引擎進(jìn)行網(wǎng)頁渲染。其中,所述虛擬機(jī)中加載渲染引擎具體包括在虛擬機(jī)中加載多種渲染引擎,所述多種渲染引擎中至少包括高效渲染引擎;所述高效渲染引擎為統(tǒng)計(jì)中渲染網(wǎng)頁的效率高于平均效率的渲染引擎;所述根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染具體包括當(dāng)業(yè)務(wù)沒有指定渲染引擎時(shí),通過渲染進(jìn)程調(diào)用高效渲染引擎進(jìn)行網(wǎng)頁渲染。
其中,所述加載的多種渲染引擎中至少包括通用渲染引擎,所述通用渲染引擎為統(tǒng)計(jì)中支持度超過門限值的渲染引擎;所述根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染后,所述方法還包括渲染進(jìn)程在根據(jù)渲染任務(wù)調(diào)用渲染引擎進(jìn)行網(wǎng)頁渲染失敗后,調(diào)用通用渲染引擎進(jìn)行網(wǎng)頁渲染。其中,所述任務(wù)隊(duì)列中保存多種業(yè)務(wù)下發(fā)的渲染任務(wù);所述渲染進(jìn)程將渲染結(jié)果存入結(jié)果隊(duì)列具體包括渲染進(jìn)程將渲染任務(wù)的渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列, 以供所述業(yè)務(wù)在后續(xù)操作中從該對(duì)應(yīng)的結(jié)果隊(duì)列中獲取渲染結(jié)果。其中,所述業(yè)務(wù)包括網(wǎng)絡(luò)爬蟲業(yè)務(wù)和/或網(wǎng)站監(jiān)控業(yè)務(wù),所述渲染進(jìn)程將渲染結(jié)果存入結(jié)果隊(duì)列具體包括渲染進(jìn)程獲取渲染后的網(wǎng)頁的文檔對(duì)象模型DOM結(jié)構(gòu)數(shù)據(jù),將所述DOM結(jié)構(gòu)數(shù)據(jù)存入結(jié)果隊(duì)列,以供業(yè)務(wù)在后續(xù)操作中使用所述DOM結(jié)構(gòu)數(shù)據(jù)。依據(jù)本發(fā)明的另一個(gè)方面,提供了一種渲染網(wǎng)頁的服務(wù)器,所述服務(wù)器包括多個(gè)加載有渲染引擎的虛擬機(jī)模塊;虛擬機(jī)模塊中包括多個(gè)渲染進(jìn)程單元;渲染進(jìn)程單元,用于通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果保存到結(jié)果隊(duì)列。其中,所述虛擬機(jī)模塊中加載的渲染引擎為多種;所述渲染進(jìn)程單元具體用于當(dāng)業(yè)務(wù)指定渲染引擎時(shí),通過渲染進(jìn)程解析出渲染任務(wù)中包含的渲染引擎信息,所述渲染引擎信息中記載用于執(zhí)行所述渲染任務(wù)的渲染引擎;并調(diào)用渲染引擎信息中記載的渲染引擎進(jìn)行網(wǎng)頁渲染。其中,所述虛擬機(jī)模塊中加載的渲染引擎為多種;所述多種渲染引擎中至少包括高效渲染引擎;所述高效渲染引擎為統(tǒng)計(jì)中渲染網(wǎng)頁的效率高于平均效率的渲染引擎;所述渲染進(jìn)程單元具體用于當(dāng)業(yè)務(wù)沒有指定渲染引擎時(shí),通過渲染進(jìn)程調(diào)用高效渲染引擎進(jìn)行網(wǎng)頁渲染。其中,所述虛擬機(jī)模塊中加載的多種渲染引擎中至少包括通用渲染引擎,所述通用渲染引擎為統(tǒng)計(jì)中支持度超過門限值的渲染引擎;所述渲染進(jìn)程單元還用于通過渲染進(jìn)程在根據(jù)渲染任務(wù)調(diào)用渲染引擎進(jìn)行網(wǎng)頁渲染失敗后,調(diào)用通用渲染引擎進(jìn)行網(wǎng)頁渲染。其中,所述任務(wù)隊(duì)列中保存多種業(yè)務(wù)下發(fā)的渲染任務(wù);所述渲染進(jìn)程單元具體用于通過渲染進(jìn)程將渲染任務(wù)的渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,以供所述業(yè)務(wù)在后續(xù)操作中從該對(duì)應(yīng)的結(jié)果隊(duì)列中獲取渲染結(jié)果。其中,所述業(yè)務(wù)包括網(wǎng)絡(luò)爬蟲業(yè)務(wù)和/或網(wǎng)站監(jiān)控業(yè)務(wù),所述渲染進(jìn)程單元具體用于通過渲染進(jìn)程獲取渲染后的網(wǎng)頁的文檔對(duì)象模型DOM結(jié)構(gòu)數(shù)據(jù),將所述DOM結(jié)構(gòu)數(shù)據(jù)存入結(jié)果隊(duì)列,以供業(yè)務(wù)在后續(xù)操作中使用所述DOM結(jié)構(gòu)數(shù)據(jù)。依據(jù)本發(fā)明的另一個(gè)方面,提供了一種渲染網(wǎng)頁的系統(tǒng),所述系統(tǒng)包括如前所述的服務(wù)器,任務(wù)隊(duì)列存儲(chǔ)服務(wù)器,用于接收業(yè)務(wù)下發(fā)的渲染任務(wù),將渲染任務(wù)存入任務(wù)隊(duì)列中;結(jié)果隊(duì)列存儲(chǔ)服務(wù)器,用于保存存放渲染結(jié)果的結(jié)果隊(duì)列。根據(jù)本發(fā)明提供的渲染網(wǎng)頁的技術(shù)方案,其中,創(chuàng)建多個(gè)虛擬機(jī),虛擬機(jī)中加載渲染引擎,在虛擬機(jī)中啟動(dòng)多個(gè)渲染進(jìn)程;通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)·隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果存入結(jié)果隊(duì)列。通過創(chuàng)建多個(gè)虛擬機(jī)可以對(duì)渲染網(wǎng)頁進(jìn)行并行處理,提高了渲染網(wǎng)頁的處理速度。通過調(diào)用渲染引擎進(jìn)行渲染,能夠滿足更多渲染屬性,使得渲染結(jié)果中包含的信息更加全面,為業(yè)務(wù)完成提供更好的基礎(chǔ)。由此可見,該技術(shù)方案解決了對(duì)大量網(wǎng)頁進(jìn)行渲染處理速度慢的問題,取得了提高對(duì)大量網(wǎng)頁進(jìn)行渲染的處理速度,為業(yè)務(wù)完成提供更好基礎(chǔ)的有益效果。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中圖I示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的方法的流程圖;圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例中應(yīng)用渲染網(wǎng)頁的方法的系統(tǒng)框架示意圖;圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的方法中渲染進(jìn)程進(jìn)行處理的流程圖;圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的服務(wù)器的結(jié)構(gòu)圖;以及圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。參見圖1,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的方法的流程圖。所述方法包括如下步驟。
步驟S100,創(chuàng)建多個(gè)虛擬機(jī),虛擬機(jī)中加載渲染引擎,在虛擬機(jī)中啟動(dòng)多個(gè)渲染進(jìn)程。步驟SlOO的一種具體實(shí)現(xiàn)方式可以為在一個(gè)物理機(jī)器上創(chuàng)建多個(gè)虛擬機(jī),在每個(gè)虛擬機(jī)中加載渲染引擎,并在每個(gè)虛擬機(jī)中啟動(dòng)多個(gè)渲染進(jìn)程。步驟S200,通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果存入結(jié)果隊(duì)列。在本實(shí)施例中,通過創(chuàng)建多個(gè)虛擬機(jī)可以對(duì)渲染網(wǎng)頁進(jìn)行并行處理,提高了渲染網(wǎng)頁的處理速度。通過調(diào)用渲染引擎進(jìn)行渲染,能夠滿足更多渲染屬性,使得渲染結(jié)果中包含的信息更加全面,為業(yè)務(wù)完成提供更好的基礎(chǔ)。由此可見,解決了對(duì)大量網(wǎng)頁進(jìn)行渲染處理速度慢的問題,取得了提高對(duì)大量網(wǎng)頁進(jìn)行渲染的處理速度,為業(yè)務(wù)完成提供更好基礎(chǔ) 的有益效果。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。在本實(shí)施例中,虛擬機(jī)中加載多種渲染引擎。所述通過渲染進(jìn)程根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染具體包括當(dāng)業(yè)務(wù)指定渲染引擎時(shí),通過渲染進(jìn)程解析出渲染任務(wù)中包含的渲染引擎信息,所述渲染引擎信息中記載用于執(zhí)行所述渲染任務(wù)的渲染引擎;通過渲染進(jìn)程調(diào)用渲染引擎信息中記載的渲染引擎進(jìn)行網(wǎng)頁渲染。本實(shí)施例中,通過使用多種渲染引擎,并且通過業(yè)務(wù)在下發(fā)渲染任務(wù)時(shí)指定渲染引擎,能夠針對(duì)各種網(wǎng)頁使用處理該種網(wǎng)頁的優(yōu)選渲染引擎,進(jìn)一步提高渲染網(wǎng)頁的處理速度和處理效果。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。在本實(shí)施例中,虛擬機(jī)中加載多種渲染引擎;多種渲染引擎中至少包括高效渲染引擎。所述高效渲染引擎為統(tǒng)計(jì)中渲染網(wǎng)頁的效率高于平均效率的渲染引擎。所述通過渲染進(jìn)程根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染具體包括當(dāng)業(yè)務(wù)沒有指定渲染引擎時(shí),通過渲染進(jìn)程調(diào)用高效渲染弓I擎進(jìn)行網(wǎng)頁渲染。具體地,在統(tǒng)計(jì)時(shí),針對(duì)同一網(wǎng)頁使用目前常用的多種渲染引擎進(jìn)行網(wǎng)頁渲染,得到每種渲染引擎渲染該網(wǎng)頁所用的時(shí)間,進(jìn)而得出渲染該網(wǎng)頁的平均時(shí)間。由此可以得出渲染網(wǎng)頁所用時(shí)間小于平均時(shí)間的渲染引擎為高效渲染引擎,即通過渲染所用時(shí)間來衡量渲染效率。本實(shí)施例中,通過使用多種渲染引擎,并且通過渲染進(jìn)程依據(jù)渲染任務(wù)選擇渲染效率高的渲染引擎,進(jìn)一步提高了渲染網(wǎng)頁的處理速度和處理效果;并且實(shí)現(xiàn)了渲染引擎選擇的自動(dòng)化,避免了配置的繁瑣操作。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。所述加載的多種渲染引擎中至少包括通用渲染引擎,所述通用渲染引擎為統(tǒng)計(jì)中支持度超過門限值的渲染引擎,例如IE渲染引擎。所述根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染后,所述方法還包括通過渲染進(jìn)程在根據(jù)渲染任務(wù)調(diào)用渲染引擎進(jìn)行網(wǎng)頁渲染失敗后,調(diào)用通用渲染引擎進(jìn)行網(wǎng)頁渲染。例如,通過渲染進(jìn)程檢查渲染結(jié)果,發(fā)現(xiàn)網(wǎng)頁渲染失敗,則調(diào)用IE渲染引擎重新進(jìn)行網(wǎng)頁渲染。在本實(shí)施例中,當(dāng)應(yīng)用選擇的渲染引擎進(jìn)行渲染失敗時(shí),調(diào)用通用渲染引擎,能夠增加網(wǎng)頁被渲染成功的概率,進(jìn)而為業(yè)務(wù)提供更好的完成基礎(chǔ)。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。所述任務(wù)隊(duì)列中保存多種業(yè)務(wù)下發(fā)的渲染任務(wù)。所述通過渲染進(jìn)程將渲染結(jié)果存入結(jié)果隊(duì)列具體包括通過渲染進(jìn)程將渲染任務(wù)的渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,以供所述業(yè)務(wù)在后續(xù)操作中從該對(duì)應(yīng)的結(jié)果隊(duì)列中獲取渲染結(jié)果。在本實(shí)施例中,包括多個(gè)結(jié)果隊(duì)列,每種業(yè)務(wù)與一個(gè)結(jié)果隊(duì)列對(duì)應(yīng)。其中,將渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,便于不同種類的業(yè)務(wù)獲取各自的結(jié) 果O在本實(shí)施例中,能夠?yàn)槎喾N業(yè)務(wù)提供渲染網(wǎng)頁的服務(wù),當(dāng)需要進(jìn)行網(wǎng)頁渲染的業(yè)務(wù)種類增加時(shí),僅需將該增加的業(yè)務(wù)的任務(wù)保存到任務(wù)隊(duì)列便可為該業(yè)務(wù)提供渲染網(wǎng)頁的服務(wù),因此提高了業(yè)務(wù)種類的可擴(kuò)展性,便于增加業(yè)務(wù)種類。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。本實(shí)施例中,所述業(yè)務(wù)包括網(wǎng)絡(luò)爬蟲業(yè)務(wù)和/或網(wǎng)站監(jiān)控業(yè)務(wù),所述通過渲染進(jìn)程將渲染結(jié)果存入結(jié)果隊(duì)列具體包括通過渲染進(jìn)程獲取渲染后的網(wǎng)頁的DOM (文檔對(duì)象模型,Document Object Model)結(jié)構(gòu)數(shù)據(jù),將所述DOM結(jié)構(gòu)數(shù)據(jù)存入結(jié)果隊(duì)列,以供業(yè)務(wù)在后續(xù)操作中使用該DOM結(jié)構(gòu)數(shù)據(jù)。其中,DOM結(jié)構(gòu)數(shù)據(jù)中包含網(wǎng)頁的整體結(jié)構(gòu)的信息,網(wǎng)絡(luò)爬蟲業(yè)務(wù)和網(wǎng)站監(jiān)控業(yè)務(wù)從DOM結(jié)構(gòu)數(shù)據(jù)中獲得網(wǎng)頁的整體結(jié)構(gòu),供進(jìn)行后續(xù)操作時(shí)使用?,F(xiàn)有技術(shù)中,渲染網(wǎng)頁的結(jié)果多表現(xiàn)為渲染后生成的圖片,但是該圖片對(duì)網(wǎng)絡(luò)爬蟲、網(wǎng)站監(jiān)控等業(yè)務(wù)處理意義較小,網(wǎng)絡(luò)爬蟲、網(wǎng)站監(jiān)控等業(yè)務(wù)注重獲取網(wǎng)頁的結(jié)構(gòu)信息。本實(shí)施例中,將DOM結(jié)構(gòu)數(shù)據(jù)作為結(jié)果存入結(jié)果隊(duì)列供業(yè)務(wù)使用,方便了網(wǎng)絡(luò)爬蟲、網(wǎng)站監(jiān)控等業(yè)務(wù)的后續(xù)處理。在一實(shí)施例中,以本發(fā)明中方法在網(wǎng)絡(luò)爬蟲業(yè)務(wù)中應(yīng)用為例對(duì)本發(fā)明渲染網(wǎng)頁的方法進(jìn)行說明。網(wǎng)絡(luò)爬蟲系統(tǒng)中的頁面抓取器對(duì)于無需渲染的網(wǎng)頁直接下載,對(duì)于需要渲染的網(wǎng)頁采用本實(shí)施中方法進(jìn)行渲染。參見圖2,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例中應(yīng)用渲染網(wǎng)頁的方法的系統(tǒng)框架示意圖。其中,通過XEN (虛擬機(jī)監(jiān)視器)創(chuàng)建η個(gè)虛擬機(jī),每個(gè)虛擬機(jī)中加載3中渲染引擎,在每個(gè)虛擬機(jī)中啟動(dòng)3至5個(gè)渲染進(jìn)程。虛擬機(jī)中加載的渲染引擎包括ΙΕ渲染引擎、Gecko (火狐中使用的瀏覽器內(nèi)核)渲染引擎、和Webkit (—種開源的瀏覽器內(nèi)核)渲染引擎。IE渲染引擎,基于屏幕讀取技術(shù)讀取IE瀏覽器的渲染結(jié)果。具體操作為打開IE瀏覽器,并指定打開待渲染的頁面;在渲染完畢后,采用屏幕讀取技術(shù),對(duì)IE渲染的頁面進(jìn)行遍歷,讀取Web頁面中的DOM結(jié)構(gòu);輸出D0M。Webkit渲染引擎,基于對(duì)Webkit源碼修改,修改后的Webkit輸入為需要渲染的URL,輸出是渲染結(jié)果的DOM樹。具體操作為=Webkit渲染完成后,產(chǎn)生一系列的相應(yīng)事件,對(duì)源碼 中這些相應(yīng)事件的回調(diào)進(jìn)行重載,輸出最終的DOM結(jié)構(gòu)。Gecko渲染引擎,基于Gecko內(nèi)核的瀏覽器插件,實(shí)現(xiàn)一個(gè)瀏覽器插件的應(yīng)用,該插件實(shí)現(xiàn)輸出渲染的DOM結(jié)構(gòu)。三種渲染引擎比較,IE渲染引擎的支持度最高,其采用屏幕讀取技術(shù),準(zhǔn)確度在三種渲染引擎中較高;但是渲染效率比Webkit渲染引擎和Gecko渲染引擎差一些,Webkit渲染引擎和Gecko渲染引擎的效率低大約40%。Webkit渲染引擎和Gecko渲染引擎,在準(zhǔn)確度和渲染效率上相近似;兩者的渲染效率較IE渲染引擎更高。如果注重渲染效率,則優(yōu)選Webkit渲染引擎或者Gecko渲染引擎;如果注重準(zhǔn)確度,則優(yōu)選IE渲染引擎。例如,在業(yè)務(wù)指定渲染引擎時(shí),要求準(zhǔn)確度高于95%的網(wǎng)站監(jiān)控業(yè)務(wù)或者網(wǎng)絡(luò)爬蟲業(yè)務(wù)可以選擇指定IE渲染引擎,對(duì)于要求的準(zhǔn)確度不高于95%的網(wǎng)站監(jiān)控業(yè)務(wù)或者網(wǎng)絡(luò)爬蟲業(yè)務(wù)可以選擇指定Webkit渲染引擎或Gecko渲染引擎。例如,在業(yè)務(wù)沒有指定渲染引擎時(shí),可以,以IE渲染引擎為通用渲染引擎,以Webkit渲染引擎或Gecko渲染引擎為高效渲染引擎。此外,如圖2所示,本實(shí)施例中采用統(tǒng)一的任務(wù)隊(duì)列保存任務(wù)。該任務(wù)隊(duì)列為gearman (可進(jìn)行并行分發(fā)的對(duì)外接口)隊(duì)列,來實(shí)現(xiàn)并行分發(fā)。在本實(shí)施例中,對(duì)網(wǎng)絡(luò)爬蟲業(yè)務(wù)應(yīng)用網(wǎng)頁渲染,其中涉及一個(gè)業(yè)務(wù),因此采用一個(gè)結(jié)果隊(duì)列,該結(jié)果隊(duì)列為gearman隊(duì)列。在存在多種業(yè)務(wù)的情況下,可以使用多個(gè)結(jié)果隊(duì)列,每種業(yè)務(wù)對(duì)應(yīng)一個(gè)結(jié)果隊(duì)列。本實(shí)施例中,業(yè)務(wù)下發(fā)的保存在任務(wù)隊(duì)列中的任務(wù)為XML格式,任務(wù)內(nèi)容均寫在規(guī)定的XML字段當(dāng)中,比如〈url>〈/url>字段中的數(shù)據(jù)是需要渲染的網(wǎng)頁地址,〈engineX/engine〉字段中的數(shù)據(jù)是任務(wù)指定的渲染引擎等。在存在多種業(yè)務(wù)時(shí),任務(wù)內(nèi)容還包括渲染完成后的結(jié)果投遞地址,即業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,以便業(yè)務(wù)的下游操作獲取結(jié)果O參見圖3,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的方法中渲染進(jìn)程進(jìn)行處理的流程圖。步驟S310,通過渲染進(jìn)程從任務(wù)隊(duì)列中獲取渲染任務(wù),解析出業(yè)務(wù)在渲染任務(wù)中指定的渲染弓I擎和待渲染的網(wǎng)頁地址。步驟S320,通過渲染進(jìn)程調(diào)用指定的渲染引擎按網(wǎng)頁地址渲染待渲染的網(wǎng)頁。步驟S330,通過渲染進(jìn)程獲取渲染后的網(wǎng)頁的文檔對(duì)象模型DOM結(jié)構(gòu)數(shù)據(jù),將所述DOM結(jié)構(gòu)數(shù)據(jù)存入結(jié)果隊(duì)列。本實(shí)施僅為本發(fā)明中方法在網(wǎng)絡(luò)爬蟲業(yè)務(wù)中應(yīng)用中的一個(gè)示例性說明,本發(fā)明中方法的具體實(shí)現(xiàn)不限于此,本發(fā)明中方法可以用于需要進(jìn)行網(wǎng)頁渲染的任何業(yè)務(wù)中。參見圖4,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的服務(wù)器的結(jié)構(gòu)圖。所述服務(wù)器為虛擬機(jī)服務(wù)器200,包括多個(gè)加載有渲染引擎的虛擬機(jī)模塊210。虛擬機(jī)模塊210中包括多個(gè)渲染進(jìn)程單元212。渲染進(jìn)程單元212,用于通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果保存到結(jié)果隊(duì)列。在本實(shí)施例中,通過在服務(wù)器中包含多個(gè)虛擬機(jī)模塊210,可以對(duì)渲染網(wǎng)頁進(jìn)行并行處理,提高了渲染網(wǎng)頁的處理速度。通過渲染進(jìn)程單元212調(diào)用渲染引擎進(jìn)行渲染,能夠滿足更多渲染屬性,使得渲染結(jié)果中包含的信息更加全面,為業(yè)務(wù)完成提供更好的基礎(chǔ)。由此可見,解決了對(duì)大量網(wǎng)頁進(jìn)行渲染處理速度慢的問題,取得了提高對(duì)大量網(wǎng)頁進(jìn)行渲染的處理速度,為業(yè)務(wù)完成提供更好基礎(chǔ)的有益效果。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。虛擬機(jī)模塊210中加載的渲染引擎為多種。渲染進(jìn)程單元212具體用于業(yè)務(wù)指定渲染引擎時(shí),通過渲染進(jìn)程解析出渲染任務(wù)中包含的渲染引擎信息,所述渲染引擎信息中記載用于執(zhí)行所述渲染任務(wù)的渲染引擎;并調(diào)用渲染引擎信息中記載的渲染引擎進(jìn)行網(wǎng)頁渲染。本實(shí)施例中,通過加載多種渲染引擎,并且通過業(yè)務(wù)在下發(fā)渲染任務(wù)時(shí)指定渲染引擎,能夠針對(duì)各種網(wǎng)頁使用處理該種網(wǎng)頁的優(yōu)選渲染引擎,進(jìn)一步提高渲染網(wǎng)頁的處理速度和處理效果。
在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。虛擬機(jī)模塊210中加載的渲染引擎為多種。所述多種渲染引擎中至少包括高效渲染引擎;所述高效渲染引擎為統(tǒng)計(jì)中渲染網(wǎng)頁的效率高于平均效率的渲染引擎。渲染進(jìn)程單元212具體用于當(dāng)業(yè)務(wù)沒有指定渲染引擎時(shí),通過渲染進(jìn)程調(diào)用高效渲染引擎進(jìn)行網(wǎng)頁渲染。具體地,在統(tǒng)計(jì)時(shí),針對(duì)同一網(wǎng)頁使用目前常用的多種渲染引擎進(jìn)行網(wǎng)頁渲染,得到每種渲染引擎渲染該網(wǎng)頁所用的時(shí)間,進(jìn)而得出渲染該網(wǎng)頁的平均時(shí)間。由此可以得出渲染網(wǎng)頁所用時(shí)間小于平均時(shí)間的渲染引擎為高效渲染引擎,即通過渲染所用時(shí)間來衡量渲染效率。本實(shí)施例中,通過加載多種渲染引擎,并且渲染進(jìn)程單元212依據(jù)渲染任務(wù)選擇渲染效率高的渲染引擎,進(jìn)一步提高了渲染網(wǎng)頁的處理速度和處理效果;并且實(shí)現(xiàn)了渲染弓I擎選擇的自動(dòng)化,避免了配置的繁瑣操作。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。虛擬機(jī)模塊210中加載的多種渲染引擎中至少包括通用渲染引擎。通用渲染引擎為統(tǒng)計(jì)中支持度超過門限值的渲染引擎。渲染進(jìn)程單元212還用于通過渲染進(jìn)程在根據(jù)渲染任務(wù)調(diào)用渲染引擎進(jìn)行網(wǎng)頁渲染失敗后,調(diào)用通用渲染引擎進(jìn)行網(wǎng)頁渲染。在本實(shí)施例中,當(dāng)應(yīng)用選擇的渲染引擎進(jìn)行渲染失敗時(shí),渲染進(jìn)程單元212調(diào)用通用渲染引擎,能夠增加網(wǎng)頁被渲染成功的概率,進(jìn)而為業(yè)務(wù)提供更好的完成基礎(chǔ)。在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。任務(wù)隊(duì)列中保存多種業(yè)務(wù)下發(fā)的渲染任務(wù)。渲染進(jìn)程單元212具體用于通過渲染進(jìn)程將渲染任務(wù)的渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,以供所述業(yè)務(wù)在后續(xù)操作中從該對(duì)應(yīng)的結(jié)果隊(duì)列中獲取渲染結(jié)果。在本實(shí)施例中,每種業(yè)務(wù)與一個(gè)結(jié)果隊(duì)列對(duì)應(yīng)。其中,將渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,便于不同種類的業(yè)務(wù)獲取各自的結(jié)果。在本實(shí)施例中,能夠?yàn)槎喾N業(yè)務(wù)提供渲染網(wǎng)頁的服務(wù),當(dāng)需要進(jìn)行網(wǎng)頁渲染的業(yè)務(wù)種類增加時(shí),僅需將該增加的業(yè)務(wù)的任務(wù)保存到任務(wù)隊(duì)列虛擬機(jī)服務(wù)器200便可為該業(yè)務(wù)提供渲染網(wǎng)頁的服務(wù),因此提高了業(yè)務(wù)種類的可擴(kuò)展性,便于增加業(yè)務(wù)種類。 在一實(shí)施例中,除下述技術(shù)特征外,其他技術(shù)特征與其他實(shí)施例相同。業(yè)務(wù)包括網(wǎng)絡(luò)爬蟲業(yè)務(wù)和/或網(wǎng)站監(jiān)控業(yè)務(wù)。渲染進(jìn)程單元212具體用于通過渲染進(jìn)程獲取渲染后的網(wǎng)頁的文檔對(duì)象模型DOM結(jié)構(gòu)數(shù)據(jù),將所述DOM結(jié)構(gòu)數(shù)據(jù)存入結(jié)果隊(duì)列,以供業(yè)務(wù)在后續(xù)操作中使用所述DOM結(jié)構(gòu)數(shù)據(jù)?,F(xiàn)有技術(shù)中,渲染網(wǎng)頁的結(jié)果多表現(xiàn)為渲染后生成的圖片,但是該圖片對(duì)網(wǎng)絡(luò)爬蟲、網(wǎng)站監(jiān)控等業(yè)務(wù)處理意義較小,網(wǎng)絡(luò)爬蟲、網(wǎng)站監(jiān)控等業(yè)務(wù)注重獲取網(wǎng)頁的結(jié)構(gòu)信息。本實(shí)施例中,渲染進(jìn)程單元212將DOM結(jié)構(gòu)數(shù)據(jù)作為結(jié)果存入結(jié)果隊(duì)列供業(yè)務(wù)使用,方便了網(wǎng)絡(luò)爬蟲、網(wǎng)站監(jiān)控等業(yè)務(wù)的后續(xù)處理。
參見圖5,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的渲染網(wǎng)頁的系統(tǒng)的結(jié)構(gòu)圖。所述系統(tǒng)包括如上述實(shí)施例中任一所述的虛擬機(jī)服務(wù)器200,以及任務(wù)隊(duì)列存儲(chǔ)服務(wù)器100和結(jié)果隊(duì)列存儲(chǔ)服務(wù)器300。任務(wù)隊(duì)列存儲(chǔ)服務(wù)器100,用于接收業(yè)務(wù)下發(fā)的渲染任務(wù),將渲染任務(wù)存入任務(wù)隊(duì)列中。結(jié)果隊(duì)列存儲(chǔ)服務(wù)器300,用于保存存放渲染結(jié)果的結(jié)果隊(duì)列。該系統(tǒng)包括上述實(shí)施例中虛擬機(jī)服務(wù)器200,因此具有上述實(shí)施例的有益效果。此夕卜,本實(shí)施例中,任務(wù)隊(duì)列和結(jié)果隊(duì)列都可以為gearman隊(duì)列,從而實(shí)現(xiàn)并行收發(fā),進(jìn)一步提聞系統(tǒng)的處理能力。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來·實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。
權(quán)利要求
1.一種渲染網(wǎng)頁的方法,所述方法包括 創(chuàng)建多個(gè)虛擬機(jī),虛擬機(jī)中加載渲染弓I擎,在虛擬機(jī)中啟動(dòng)多個(gè)渲染進(jìn)程; 通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果存入結(jié)果隊(duì)列。
2.根據(jù)權(quán)利要求I所述的方法,其中, 所述虛擬機(jī)中加載渲染引擎具體包括 在虛擬機(jī)中加載多種渲染引擎; 所述根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染具體包括 當(dāng)業(yè)務(wù)指定渲染引擎時(shí),通過渲染進(jìn)程解析出渲染任務(wù)中包含的渲染引擎信息,所述渲染引擎信息中記載用于執(zhí)行所述渲染任務(wù)的渲染引擎; 通過渲染進(jìn)程調(diào)用渲染弓I擎信息中記載的渲染引擎進(jìn)行網(wǎng)頁渲染。
3.根據(jù)權(quán)利要求I所述的方法,其中, 所述虛擬機(jī)中加載渲染引擎具體包括 在虛擬機(jī)中加載多種渲染引擎,所述多種渲染引擎中至少包括高效渲染引擎; 所述高效渲染引擎為統(tǒng)計(jì)中渲染網(wǎng)頁的效率高于平均效率的渲染引擎; 所述根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染具體包括 當(dāng)業(yè)務(wù)沒有指定渲染引擎時(shí),通過渲染進(jìn)程調(diào)用高效渲染弓I擎進(jìn)行網(wǎng)頁渲染。
4.根據(jù)權(quán)利要求2或3所述的方法,其中, 所述加載的多種渲染引擎中至少包括通用渲染引擎, 所述通用渲染引擎為統(tǒng)計(jì)中支持度超過門限值的渲染引擎; 所述根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染后,所述方法還包括渲染進(jìn)程在根據(jù)渲染任務(wù)調(diào)用渲染引擎進(jìn)行網(wǎng)頁渲染失敗后,調(diào)用通用渲染引擎進(jìn)行網(wǎng)頁渲染。
5.根據(jù)權(quán)利要求1、2或3所述的方法,其中, 所述任務(wù)隊(duì)列中保存多種業(yè)務(wù)下發(fā)的渲染任務(wù); 所述渲染進(jìn)程將渲染結(jié)果存入結(jié)果隊(duì)列具體包括 渲染進(jìn)程將渲染任務(wù)的渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,以供所述業(yè)務(wù)在后續(xù)操作中從該對(duì)應(yīng)的結(jié)果隊(duì)列中獲取渲染結(jié)果。
6.根據(jù)權(quán)利要求I所述的方法,其中, 所述業(yè)務(wù)包括網(wǎng)絡(luò)爬蟲業(yè)務(wù)和/或網(wǎng)站監(jiān)控業(yè)務(wù), 所述渲染進(jìn)程將渲染結(jié)果存入結(jié)果隊(duì)列具體包括 渲染進(jìn)程獲取渲染后的網(wǎng)頁的文檔對(duì)象模型DOM結(jié)構(gòu)數(shù)據(jù),將所述DOM結(jié)構(gòu)數(shù)據(jù)存入結(jié)果隊(duì)列,以供業(yè)務(wù)在后續(xù)操作中使用所述DOM結(jié)構(gòu)數(shù)據(jù)。
7.—種渲染網(wǎng)頁的服務(wù)器,所述服務(wù)器包括多個(gè)加載有渲染引擎的虛擬機(jī)模塊; 虛擬機(jī)模塊中包括多個(gè)渲染進(jìn)程單元; 渲染進(jìn)程單元,用于通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果保存到結(jié)果隊(duì)列。
8.根據(jù)權(quán)利要求7所述的服務(wù)器,其中,所述虛擬機(jī)模塊中加載的渲染引擎為多種; 所述渲染進(jìn)程單元具體用于當(dāng)業(yè)務(wù)指定渲染引擎時(shí),通過渲染進(jìn)程解析出渲染任務(wù)中包含的渲染引擎信息,所述渲染引擎信息中記載用于執(zhí)行所述渲染任務(wù)的渲染引擎;并調(diào)用渲染引擎信息中記載的渲染引擎進(jìn)行網(wǎng)頁渲染。
9.根據(jù)權(quán)利要求7所述的服務(wù)器,其中, 所述虛擬機(jī)模塊中加載的渲染引擎為多種, 所述多種渲染引擎中至少包括高效渲染引擎, 所述高效渲染引擎為統(tǒng)計(jì)中渲染網(wǎng)頁的效率高于平均效率的渲染引擎; 所述渲染進(jìn)程單元具體用于當(dāng)業(yè)務(wù)沒有指定渲染引擎時(shí),通過渲染進(jìn)程調(diào)用高效渲染引擎進(jìn)行網(wǎng)頁渲染。
10.根據(jù)權(quán)利要求8或9所述的服務(wù)器,其中, 所述虛擬機(jī)模塊中加載的多種渲染引擎中至少包括通用渲染引擎, 所述通用渲染引擎為統(tǒng)計(jì)中支持度超過門限值的渲染引擎; 所述渲染進(jìn)程單元還用于通過渲染進(jìn)程在根據(jù)渲染任務(wù)調(diào)用渲染引擎進(jìn)行網(wǎng)頁渲染失敗后,調(diào)用通用渲染引擎進(jìn)行網(wǎng)頁渲染。
11.根據(jù)權(quán)利要求7、8或9所述的服務(wù)器,其中, 所述任務(wù)隊(duì)列中保存多種業(yè)務(wù)下發(fā)的渲染任務(wù); 所述渲染進(jìn)程單元具體用于通過渲染進(jìn)程將渲染任務(wù)的渲染結(jié)果存入下發(fā)所述渲染任務(wù)的業(yè)務(wù)對(duì)應(yīng)的結(jié)果隊(duì)列,以供所述業(yè)務(wù)在后續(xù)操作中從該對(duì)應(yīng)的結(jié)果隊(duì)列中獲取渲染結(jié)果。
12.根據(jù)權(quán)利要求8所述的服務(wù)器,其中, 所述業(yè)務(wù)包括網(wǎng)絡(luò)爬蟲業(yè)務(wù)和/或網(wǎng)站監(jiān)控業(yè)務(wù), 所述渲染進(jìn)程單元具體用于通過渲染進(jìn)程獲取渲染后的網(wǎng)頁的文檔對(duì)象模型DOM結(jié)構(gòu)數(shù)據(jù),將所述DOM結(jié)構(gòu)數(shù)據(jù)存入結(jié)果隊(duì)列,以供業(yè)務(wù)在后續(xù)操作中使用所述DOM結(jié)構(gòu)數(shù)據(jù)。
13.—種渲染網(wǎng)頁的系統(tǒng), 所述系統(tǒng)包括 如權(quán)利要求7至12任一所述的服務(wù)器, 任務(wù)隊(duì)列存儲(chǔ)服務(wù)器,用于接收業(yè)務(wù)下發(fā)的渲染任務(wù),將渲染任務(wù)存入任務(wù)隊(duì)列中; 結(jié)果隊(duì)列存儲(chǔ)服務(wù)器,用于保存存放渲染結(jié)果的結(jié)果隊(duì)列。
全文摘要
本發(fā)明公開了一種渲染網(wǎng)頁的方法、服務(wù)器和系統(tǒng),所述方法包括創(chuàng)建多個(gè)虛擬機(jī),虛擬機(jī)中加載渲染引擎,在虛擬機(jī)中啟動(dòng)多個(gè)渲染進(jìn)程;通過渲染進(jìn)程從保存業(yè)務(wù)下發(fā)的渲染任務(wù)的任務(wù)隊(duì)列中獲取渲染任務(wù),根據(jù)渲染任務(wù)調(diào)用虛擬機(jī)中加載的渲染引擎進(jìn)行網(wǎng)頁渲染,將渲染結(jié)果存入結(jié)果隊(duì)列。本發(fā)明適于計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,能夠解決對(duì)網(wǎng)頁渲染處理速度慢,影響業(yè)務(wù)整體處理速度的問題。
文檔編號(hào)G06F17/30GK102902576SQ20121036529
公開日2013年1月30日 申請(qǐng)日期2012年9月26日 優(yōu)先權(quán)日2012年9月26日
發(fā)明者徐銳波, 路軼 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司