本發明涉及搜索的技術領域,特別是涉及一種網頁中渲染數據收錄的方法和一種網頁中渲染數據收錄的裝置。
背景技術:
當前,隨著網絡技術的快速發展,互聯網上嵌有JavaScript腳本的動態頁面所占比例越來越大,給頁面數據采集工作帶來了很大困難。在網絡輿論及搜索引擎研究方面,雖然頁面數據采集的主要對象仍然為靜態頁面,但對動態頁面中的數據進行采集的需求越來越迫切。
現有的數據采集方法中,爬蟲只能獲取網頁中的靜態數據,針對一些動態、實時改變的數據是無能為力的,因此采用現有的技術進行網頁數據采集效果和數據質量很差,難以保證網頁信息的完整性。
技術實現要素:
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種網頁中渲染數據收錄的方法和相應的一種網頁中渲染數據收錄的裝置。
依據本發明的一個方面,提供了一種網頁中渲染數據收錄的方法,包括:
判斷當前抓取的網頁頁面是否存在有效的渲染數據;
若判定所述網頁頁面存在有效的渲染數據,則收錄所述有效的渲染數據。
可選地,所述判斷當前抓取的網頁頁面是否存在有效的渲染數據的步驟包括:
抓取網頁頁面,所述網頁頁面為經過渲染的頁面;
獲取所述網頁頁面的原始頁面,所述原始頁面為沒有經過渲染的頁面;
基于所述網頁頁面以及所述原始頁面,判斷所述網頁頁面是否存在有效的渲染數據。
可選地,所述基于所述網頁頁面以及所述原始頁面,判斷所述網頁頁面是否存在有效的渲染數據的步驟包括:
比較所述網頁頁面以及所述原始頁面,獲得一個或多個差異鏈接數據;
基于所述一個或多個差異鏈接數據,生成模式信息;
基于所述模式信息,判斷所述網頁頁面是否存在有效的渲染數據。
可選地,所述比較所述網頁頁面以及所述原始頁面,獲得一個或多個差異鏈接數據的步驟包括:
提取所述網頁頁面中的一個或多個第一鏈接數據;
提取所述原始頁面中的一個或多個第二鏈接數據;
分別提取所述第一鏈接數據,遍歷所述一個或多個第二鏈接數據;
若在第二鏈接數據中不存在與所述第一鏈接數據匹配的數據,則將所述第一鏈接數據作為差異鏈接數據。
可選地,所述基于所述一個或多個差異鏈接數據,生成模式信息的步驟包括:
判斷所述差異鏈接數據中是否存在共性部分;
若所述差異鏈接數據中存在共性部分,則基于所述共性部分生成模式信息。
可選地,所述基于所述模式信息,判斷所述網頁頁面是否存在有效的渲染數據的步驟包括:
獲取所述差異鏈接數據中符合所述模式信息的鏈接的數量;
若所述數量大于或等于預設閾值,則判定所述網頁頁面存在有效的渲染數據。
可選地,在所述判斷當前抓取的網頁頁面是否存在有效的渲染數據的步驟之前,還包括:
獲取所述網頁頁面的源代碼信息;
若所述源代碼信息中存在JavaScript腳本信息,則對所述JavaScript腳本信息進行渲染,得到渲染數據。
根據本發明的另一方面,提供了一種網頁中渲染數據收錄的裝置,包括:
有效數據判斷模塊,適于判斷當前抓取的網頁頁面是否存在有效的渲染數據;
渲染數據收錄模塊,適于在判定所述網頁頁面存在有效的渲染數據時,收錄所述有效的渲染數據。
可選地,所述有效數據判斷模塊包括:
網頁抓取子模塊,適于抓取網頁頁面,所述網頁頁面為經過渲染的頁面;
原始網頁獲取子模塊,適于獲取所述網頁頁面的原始頁面,所述原始頁面為沒有經過渲染的頁面;
判斷子模塊,適于基于所述網頁頁面以及所述原始頁面,判斷所述網頁頁面是否存在有效的渲染數據。
可選地,所述判斷子模塊包括:
頁面比較單元,適于比較所述網頁頁面以及所述原始頁面,獲得一個或多個差異鏈接數據;
模式信息生成單元,適于基于所述一個或多個差異鏈接數據,生成模式信息;
判斷單元,適于基于所述模式信息,判斷所述網頁頁面是否存在有效的渲染數據。
可選地,所述頁面比較單元還適于:
提取所述網頁頁面中的一個或多個第一鏈接數據;
提取所述原始頁面中的一個或多個第二鏈接數據;
分別提取所述第一鏈接數據,遍歷所述一個或多個第二鏈接數據;
若在第二鏈接數據中不存在與所述第一鏈接數據匹配的數據,則將所述第一鏈接數據作為差異鏈接數據。
可選地,所述模式信息生成單元還適于:
判斷所述差異鏈接數據中是否存在共性部分;
若所述差異鏈接數據中存在共性部分,則基于所述共性部分生成模式信息。
可選地,所述判斷單元還適于:
獲取所述差異鏈接數據中符合所述模式信息的鏈接的數量;
若所述數量大于或等于預設閾值,則判定所述網頁頁面存在有效的渲染數據。
可選地,所述裝置還包括:
源代碼獲取模塊,適于獲取所述網頁頁面的源代碼信息;
渲染模塊,適于在所述源代碼信息中存在JavaScript腳本信息時,對所述JavaScript腳本信息進行渲染,得到渲染數據。
在本發明實施例中,根據抓取的經過渲染的網頁頁面以及其沒有經過渲染的原始頁面的比對,來判定當前網頁頁面是否存在有效的渲染數據,如果判定該網頁頁面存在有效的渲染數據,則收錄該有效的渲染數據,從而提高了有渲染能力的網絡爬蟲的收錄能力,提高網頁信息的完整性。
上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。
附圖說明
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據本發明一個實施例的一種網頁中渲染數據收錄的方法實施例一的步驟流程圖;
圖2示出了根據本發明一個實施例的一種網頁中渲染數據收錄的方法實施例二的步驟流程圖;以及
圖3示出了根據本發明一個實施例的一種網頁中渲染數據收錄的裝置實施例的結構框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
參照圖1,示出了根據本發明一個實施例的一種網頁中渲染數據收錄的方法實施例一的步驟流程圖,具體可以包括如下步驟:
步驟101,判斷當前抓取的網頁頁面是否存在有效的渲染數據;
步驟102,若判定所述網頁頁面存在有效的渲染數據,則收錄所述有效的渲染數據。
在本發明實施例中,若判定當前網頁頁面存在有效的渲染數據,則收錄該有效的渲染數據,以此來挖掘有效的渲染數據,從而提高了收錄的網頁信息的完整性。
參照圖2,示出了根據本發明一個實施例的一種網頁中渲染數據收錄的方法實施例二的步驟流程圖,具體可以包括如下步驟:
步驟201,抓取網頁頁面,所述網頁頁面為經過渲染的頁面;
應用于本發明實施例,可以通過指定網絡爬蟲(Spider)抓取萬維網信息的程序或者腳本,該指定網絡爬蟲為具備腳本渲染能力的爬蟲,例如,該指定網絡爬蟲具備JavaScript渲染能力。
當該指定網絡爬蟲抓取到一URL(Uniform Resource Locator,統一資源定位符)時,獲取該URL的源代碼信息,并判斷該源代碼信息中是否包含JavaScript腳本信息,若該源代碼信息中包含JavaScript腳本信息,則指定網絡爬蟲可以解析出該JavaScript腳本信息,并調用預設的渲染引擎對該JavaScript腳本信息進行渲染,得到渲染數據。
通過對該URL的解析,指定網絡爬蟲可以獲得該URL的網頁頁面,即該網頁頁面為指定網絡爬蟲對頁面中的JavaScript腳本信息經過渲染后得到的頁面。
步驟202,獲取所述網頁頁面的原始頁面,所述原始頁面為沒有經過渲染的頁面;
同時,指定網絡爬蟲還可以dump出(輸出)該網頁頁面的原始頁面,其中,該原始頁面為沒有對網頁中的JavaScript腳本信息進行渲染的頁面。
步驟203,基于所述網頁頁面以及所述原始頁面,判斷所述網頁頁面是否存在有效的渲染數據;
應用于本發明實施例,當抓取到網頁頁面以及獲得網頁頁面對應的原始頁面以后,可以根據該網頁頁面以及該原始頁面,判斷該網頁頁面中是否存在有效的渲染數據。
在本發明實施例的一種優選實施例中,步驟203可以包括如下子步驟:
子步驟S11,比較所述網頁頁面以及所述原始頁面,獲得一個或多個差異鏈接數據;
在本發明實施例中,差異鏈接數據為在網頁頁面中存在但在原始頁面中不存在的鏈接數據。
在本發明實施例的一種優選實施例中,子步驟S11進一步可以包括如下子步驟:
子步驟S111,提取所述網頁頁面中的一個或多個第一鏈接數據;
子步驟S112,提取所述原始頁面中的一個或多個第二鏈接數據;
子步驟S113,分別提取所述第一鏈接數據,遍歷所述一個或多個第二鏈接數據;
子步驟S114,若在第二鏈接數據中不存在與所述第一鏈接數據匹配的數據,則將所述第一鏈接數據作為差異鏈接數據。
具體來說,指定網絡爬蟲能夠分別提取網頁頁面中的鏈接(即第一鏈接數據)以及原始頁面中的鏈接(即第二鏈接數據),并將每個第一鏈接數據遍歷該一個或多個第二鏈接數據,若在第二鏈接數據中不存在與該第一鏈接數據匹配的數據,則將該第一鏈接數據作為差異鏈接數據,即將網頁頁面中存在但原始頁面中不存在的鏈接數據作為差異鏈接數據。
子步驟S12,基于所述一個或多個差異鏈接數據,生成模式信息;
獲得一個或多個差異鏈接數據以后,可以對該一個或多個差異鏈接數據進行分析,以生成模式信息pattern。
在本發明實施例的一種優選實施例中,子步驟S12進一步可以包括如下子步驟:
子步驟S121,判斷所述差異鏈接數據中是否存在共性部分;
子步驟S122,若所述差異鏈接數據中存在共性部分,則基于所述共性部分生成模式信息。
在具體實現中,可以對該多個差異鏈接數據進行比較,判斷該多個差異鏈接數據是否存在共性部分(即相同部分)。例如,當前的差異鏈接有3條,分別為:http://people.mtime.com/1174040/格恩迪·塔塔科夫斯基;http://people.mtime.com/1188532/理查德·阿米蒂奇;http://people.mtime.com/1289869/湯姆·麥克格雷斯。對該三條差異鏈接數據進行比較可知,其之間存在的共性部分為http://people.mtime.com//,根據該共性部分,可以生成模式信息http://people.mtime.com/********/。
子步驟S13,基于所述模式信息,判斷所述網頁頁面是否存在有效的渲染數據。
在本發明實施例的一種優選實施例中,子步驟S13可以包括如下子步驟:
子步驟S131,獲取所述差異鏈接數據中符合所述模式信息的鏈接的數量;
子步驟S132,若所述數量大于或等于預設閾值,則判定所述網頁頁面存在有效的渲染數據。
具體而言,獲得模式信息以后,可以將所有的差異鏈接數據與模式信息進行比對,判斷每條差異鏈接數據是否符合模式信息所規定的格式,并計算符合模式信息的差異鏈接數據的數量,如果該數量大于或等于預設閾值,則判定當前抓取的網頁頁面中存在有效的渲染數據;否則,如果該數量小于預設閾值,則判定當前抓取的網頁頁面中不存在有效的渲染數據。
例如,針對URL為http://my.mtime.com/cycdashi/對應的網頁頁面,其與原始頁面的差異鏈接數據如下表1所示,可以看出,這些差異鏈接數據的模式信息為http://people.mtime.com/********/,符合該模式信息的差異鏈接數據的數量為11條(假設預設閾值為10條),因此可以判定該http://my.mtime.com/cycdashi/對應的網頁頁面存在有效的渲染數據。
表1
步驟204,若判定所述網頁頁面存在有效的渲染數據,則收錄所述有效的渲染數據。
應用于本發明實施例,若判定當前的網頁頁面中存在有效的渲染數據,則可以召回該網頁頁面的有效的渲染數據。
在本發明實施例中,根據抓取的經過渲染的網頁頁面以及其沒有經過渲染的原始頁面的比對,來判定當前網頁頁面是否存在有效的渲染數據,如果判定該網頁頁面存在有效的渲染數據,則收錄該有效的渲染數據,從而提高了有渲染能力的網絡爬蟲的收錄能力,提高網頁信息的完整性。
對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明實施例并不受所描述的動作順序的限制,因為依據本發明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作并不一定是本發明實施例所必須的。
參照圖3,示出了根據本發明一個實施例的一種網頁中渲染數據收錄的裝置實施例的結構框圖,具體可以包括如下模塊:
有效數據判斷模塊301,適于判斷當前抓取的網頁頁面是否存在有效的渲染數據;
渲染數據收錄模塊302,適于在判定所述網頁頁面存在有效的渲染數據時,收錄所述有效的渲染數據。
在本發明實施例的一種優選實施例中,所述有效數據判斷模塊301可以包括:
網頁抓取子模塊,適于抓取網頁頁面,所述網頁頁面為經過渲染的頁面;
原始網頁獲取子模塊,適于獲取所述網頁頁面的原始頁面,所述原始頁面為沒有經過渲染的頁面;
判斷子模塊,適于基于所述網頁頁面以及所述原始頁面,判斷所述網頁頁面是否存在有效的渲染數據。
在本發明實施例的一種優選實施例中,所述判斷子模塊可以包括:
頁面比較單元,適于比較所述網頁頁面以及所述原始頁面,獲得一個或多個差異鏈接數據;
模式信息生成單元,適于基于所述一個或多個差異鏈接數據,生成模式信息;
判斷單元,適于基于所述模式信息,判斷所述網頁頁面是否存在有效的渲染數據。
在本發明實施例的一種優選實施例中,所述頁面比較單元還適于:
提取所述網頁頁面中的一個或多個第一鏈接數據;
提取所述原始頁面中的一個或多個第二鏈接數據;
分別提取所述第一鏈接數據,遍歷所述一個或多個第二鏈接數據;
若在第二鏈接數據中不存在與所述第一鏈接數據匹配的數據,則將所述第一鏈接數據作為差異鏈接數據。
在本發明實施例的一種優選實施例中,所述模式信息生成單元還適于:
判斷所述差異鏈接數據中是否存在共性部分;
若所述差異鏈接數據中存在共性部分,則基于所述共性部分生成模式信息。
在本發明實施例的一種優選實施例中,所述判斷單元還適于:
獲取所述差異鏈接數據中符合所述模式信息的鏈接的數量;
若所述數量大于或等于預設閾值,則判定所述網頁頁面存在有效的渲染數據。
在本發明實施例的一種優選實施例中,所述裝置還包括:
源代碼獲取模塊,適于獲取所述網頁頁面的源代碼信息;
渲染模塊,適于在所述源代碼信息中存在JavaScript腳本信息時,對所述JavaScript腳本信息進行渲染,得到渲染數據。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
在此提供的算法和顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本發明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發明的內容,并且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP)來實現根據本發明實施例的網頁中渲染數據收錄設備中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。