3]在本發(fā)明實施例中,通過在執(zhí)行目標(biāo)頁面內(nèi)容抓取過程之前,即啟用抓取腳本之前,會配置針對目標(biāo)頁面的相關(guān)信息,比如目標(biāo)頁面的鏈接地址,針對目標(biāo)頁面的相對路徑信息,該相對路徑信息用于在目標(biāo)頁面的網(wǎng)頁文檔中查找目標(biāo)頁面內(nèi)容所在位置。
[0064]當(dāng)然,本發(fā)明實施例中,本發(fā)明可以提供配置界面,該配置界面包括目標(biāo)頁面鏈接地址的配置欄,相對路徑的配置欄等,在用戶確定之后,生成最終的抓取腳本。
[0065]在用戶執(zhí)行抓取腳本之后,首先根據(jù)目標(biāo)頁面的鏈接地址,去對應(yīng)的服務(wù)器中獲取目標(biāo)頁面的網(wǎng)頁文檔,如html (Hypertext Markup Language,超文本標(biāo)記語言)文檔。然后抓取腳本對html文檔中的代碼進(jìn)行后續(xù)匹配和提取過程。
[0066]當(dāng)然,本發(fā)明實施例中,目標(biāo)頁面的鏈接地址也可以通過其他方式獲得,比如導(dǎo)入目標(biāo)頁面的鏈接地址,本發(fā)明不對其加以限制。
[0067]步驟120,根據(jù)針對所述目標(biāo)頁面的相對路徑信息,在所述網(wǎng)頁文檔中查找所述相對路徑信息下的文檔對象模型節(jié)點;其中,所述相對路徑信息基于文檔對象模型節(jié)點的屬性相關(guān)信息構(gòu)建;
[0068]在本發(fā)明實施例中,可預(yù)先配置針對所述目標(biāo)頁面的相對路徑信息,該相對路徑信息基于文檔對象模型節(jié)點的屬性相關(guān)信息構(gòu)建。
[0069]對于一個網(wǎng)頁文檔,其可以解析為DOM(Document Object Model,文檔對象模型)樹,DOM樹中有各個DOM節(jié)點,而節(jié)點本身可設(shè)置屬性,如設(shè)置id或class屬性。如圖1A,其為一個html文檔的DOM樹解析圖示例。以html的html為根節(jié)點,基于html語言的標(biāo)簽規(guī)則和標(biāo)簽之間的父子關(guān)系,逐層解析得到如圖1的DOM樹。其中如body、div、ul、l1、head、meta、title等都是DOM節(jié)點,class的值為相應(yīng)DOM節(jié)點的屬性。
[0070]本發(fā)明實施例則直接以DOM節(jié)點的屬性作為參照,構(gòu)建針對上述目標(biāo)頁面的相對路徑信息。
[0071]在本發(fā)明實施例中,在配置相對路徑信息之前,可以通過DOM解析插件,將html文檔解析為可視化的DOM樹,用戶可以通過瀏覽該DOM樹,確定需求的目標(biāo)頁面內(nèi)容相關(guān)的DOM節(jié)點的DOM節(jié)點名和DOM節(jié)點屬性,從而構(gòu)建相對路徑信息。
[0072]優(yōu)選的,所述基于文檔對象模型節(jié)點的屬性相關(guān)信息構(gòu)建的相對路徑信息包括:
[0073]Al,由至少一個文檔對象模型節(jié)點的標(biāo)簽與屬性構(gòu)建的相對路徑信息構(gòu)建的相對路徑信息;
[0074]在本發(fā)明實施例中DOM節(jié)點的屬性相關(guān)信息,可以理解為DOM節(jié)點的標(biāo)簽和其具體的屬性,在本發(fā)明實施例中DOM節(jié)點的具體屬性為id或class屬性,比如DOM節(jié)點的代碼為 <ul class = 〃clearfix〃>,那么其標(biāo)簽為 ul,其屬性為 class = "clearfix"。
[0075]在實際應(yīng)用中,對于html文檔中的目標(biāo)頁面內(nèi)容所在DOM節(jié)點,其DOM節(jié)點的屬性相關(guān)信息,即DOM節(jié)點的標(biāo)簽+屬性,可能是唯一的,比如對于目標(biāo)頁面內(nèi)容所在的DOM節(jié)點〈ul class = "clearfix"〉,在html文檔中只存在一個,那么可直接以該DOM節(jié)點的標(biāo)簽ul和屬性class = "clearfix"構(gòu)建相對路徑信息,即可定位該DOM節(jié)點。
[0076]在本發(fā)明實施例中,可在相對路徑配置界面中輸入ul[class = clearfix]的相對路徑信息。
[0077]對于html文檔中的目標(biāo)頁面內(nèi)容所在DOM節(jié)點,其DOM節(jié)點的屬性相關(guān)信息,即DOM節(jié)點的標(biāo)簽+屬性,可能不是唯一的,其還有其他具備相同DOM節(jié)點的標(biāo)簽+屬性的DOM節(jié)點記錄了其他的目標(biāo)頁面內(nèi)容。那么如果只以需求的DOM節(jié)點的DOM節(jié)點的標(biāo)簽+屬性進(jìn)行定位,則不夠精確。那么本發(fā)明實施例,則基于目標(biāo)頁面內(nèi)容所在的DOM節(jié)點,基于DOM節(jié)點的父子關(guān)系,向上游的父級子標(biāo)簽逐級確定父級DOM節(jié)點的標(biāo)簽+屬性,然后構(gòu)建一個相對路徑信息。比如對于目標(biāo)頁面內(nèi)容所在的DOM節(jié)點〈ul class = "clearfix〃>,在html文檔中存在多個,那么向結(jié)合類似圖1A的DOM樹,可以確定〈ul class = "clearfix"〉上一級的父 DOM 節(jié)點,比如為〈div class = 〃fire〃>,如果〈DIV class = "fire〃> 在 html文檔中是唯一的,則以該兩個DOM節(jié)點的父子關(guān)系構(gòu)建相對路徑信息,如div[class =fire]-UI [class = clearfix];如果〈div class = "fire"〉在 html 文檔中不是唯一的,則繼續(xù)獲取向上一級的父DOM節(jié)點的標(biāo)簽+屬性,類似構(gòu)建相對路徑信息。
[0078]在實際應(yīng)用中,一般各個html文檔中承載具體的目標(biāo)頁面內(nèi)容的DOM節(jié)點中,其DOM節(jié)點標(biāo)簽+DOM節(jié)點屬性是唯一的,因此只用目標(biāo)頁面內(nèi)容的DOM節(jié)點標(biāo)簽+DOM節(jié)點屬性即可確定相對路徑信息,配置過程簡單。
[0079]和/或者,A2,由至少一個文檔對象模型節(jié)點的標(biāo)簽與屬性和至少一個文檔對象模型節(jié)點的標(biāo)簽,以XPATH形式構(gòu)建的相對路徑信息。其中,XPATH是一種W3C的路徑表達(dá)式構(gòu)建方法。
[0080]在本發(fā)明實施例中,可能某些DOM節(jié)點的屬性相關(guān)信息只有DOM節(jié)點標(biāo)簽,而未有屬性。比如圖1A中的Ii標(biāo)簽,只有標(biāo)簽而沒有屬性,那么為了將Ii節(jié)點下的目標(biāo)頁面內(nèi)容獲取到,由于Ii沒有具體的屬性,則無法定位具體的Ii節(jié)點。因此,需要采用XPATH形式的命令,比如前述li,由于有多個,其是在〈ul class = 〃list〃>這個DOM節(jié)點之下,那么可以從Ii節(jié)點向上一級的父DOM節(jié)點一起構(gòu)建相對路徑信息,如ui [class = list]/li,如此可以定位獲取〈ul class = 〃list〃>節(jié)點下的各個Ii節(jié)點。
[0081]在本發(fā)明實施例中,目標(biāo)頁面內(nèi)容所在的DOM節(jié)點的屬性相關(guān)信息不同,如A1、A2的示例,本發(fā)明可以同時采用Al、A2,也可以單獨采用Al或A2,具體根據(jù)實際情況選擇。
[0082]在實際應(yīng)用中,html文檔的代碼示例如下:
[0083]<html>
[0084]〈body〉
[0085]〈div class = my>
[0086]<hl>My First Heading〈/hl>
[0087]
My first paragraph.</p>
[0088]</div>
[0089]〈div class = you〉
[0090]<hl>tutu</hl>
[0091]</div>
[0092]〈/body〉
[0093]</html>
[0094]本發(fā)明實施例則根據(jù)針對該目標(biāo)頁面的相對路徑信息,去html文檔中匹配查詢相應(yīng)的DOM節(jié)點,比如相對路徑信息div[class = list],則匹配到上述html代碼中的〈divclass = my〉。
[0095]可以理解,在本發(fā)明實施例中,用戶可以針對不同的目標(biāo)頁面內(nèi)容設(shè)置相應(yīng)的相對路徑信息,從而可以查找html文檔中相應(yīng)的文檔對象模型節(jié)點。
[0096]步驟130,從查找到的文檔對象模型節(jié)點中,提取目標(biāo)頁面內(nèi)容。
[0097]如前述html示例,根據(jù)html代碼的規(guī)則,一個起始的標(biāo)簽,對應(yīng)有個結(jié)束的標(biāo)簽,那么〈div class = my>對應(yīng)結(jié)束的標(biāo)簽為</div>,那么兩者之間即為目標(biāo)頁面內(nèi)容所在。從而本發(fā)明實施例可以從該DOM節(jié)點中提取目標(biāo)頁面內(nèi)容。
[0098]當(dāng)然,本發(fā)明實施例中,對于提取的目標(biāo)頁面內(nèi)容,還可以做進(jìn)一步處理。優(yōu)選的,還包括:
[0099]步驟140,根據(jù)預(yù)置的字符轉(zhuǎn)換規(guī)則,將目標(biāo)頁面內(nèi)容中的字符進(jìn)行轉(zhuǎn)換。
[0100]比如設(shè)置將“多玩”轉(zhuǎn)換為“360手游網(wǎng)”的字符轉(zhuǎn)換規(guī)則可為:“多玩” => “360手游網(wǎng)”。然后從目標(biāo)頁面內(nèi)容中查找“多玩”,將多玩替換為“360手游網(wǎng)”。
[0101]上述過程可以將用戶不想保留的字符進(jìn)行替換,更靈活的適配用戶的需求。
[0102]本發(fā)明實施例的目標(biāo)頁面內(nèi)容抓取方法可以針對各個目標(biāo)網(wǎng)頁,基于文檔對象模型節(jié)點的屬性相關(guān)信息構(gòu)建針對目標(biāo)網(wǎng)頁的相對路徑信息,然后在該網(wǎng)頁文檔中查找與相對路徑信息下的文檔對象模型節(jié)點,從而可從查找到的文檔對象模型節(jié)點中,提取目標(biāo)頁面內(nèi)容,由此解決了字符串匹配方式下很難準(zhǔn)確區(qū)分目標(biāo)元素信息特點,很難對抓取后的結(jié)果進(jìn)行解析的問題,以及絕對路徑的匹配方式下由于網(wǎng)頁頁面對JS腳本延遲加載的因素,導(dǎo)致絕對路徑不統(tǒng)一而抓取過程無法正常執(zhí)行的問題,取得了抓取目標(biāo)頁面內(nèi)容時,不受頁面小范圍變動干擾,抓取規(guī)則配置簡單,并且可以提高抓取效率的有益效果。
[0103]實施例二
[0104]參照圖2,其示出了本發(fā)明一種目標(biāo)頁面內(nèi)容抓取方法的流程示意圖,具體可以包括:
[0105]步驟210,獲取目標(biāo)頁面的網(wǎng)頁文檔;
[0106]步驟220,根據(jù)針對所述目標(biāo)頁面的相對路徑信息,在所述網(wǎng)頁文檔中查找所述相對路徑信息下的文檔對象模型節(jié)點;其中,所述相對路徑信息基于文檔對象模型節(jié)點的屬性相關(guān)信息構(gòu)建;
[0107]步驟230,根據(jù)預(yù)置針對目標(biāo)頁面內(nèi)容的正則匹配表達(dá)式和/或前后匹配表達(dá)式,從所述文檔對象模型節(jié)點中,提取目標(biāo)頁面內(nèi)容。
[0108]本發(fā)明實施例中,在