專利名稱::一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)收集方法,特別是關(guān)于一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法。技術(shù)背景隨著Web2.0時(shí)代的到來,互聯(lián)網(wǎng)越來越多地在服務(wù)器端和客戶端釆用了動(dòng)態(tài)腳本的方式進(jìn)行交互。網(wǎng)頁的內(nèi)容,從以前的靜態(tài)方式轉(zhuǎn)變到從數(shù)據(jù)庫中獲取數(shù)據(jù)動(dòng)態(tài)生成。一方面,網(wǎng)頁主頁面下載到本地后還需要與服務(wù)器端再進(jìn)行數(shù)次交互才能獲得全部的數(shù)據(jù),如新浪博客的閱讀數(shù)和評(píng)論數(shù)即為頁面載入后再向服務(wù)器發(fā)送請(qǐng)求獲取的;另一方面,網(wǎng)頁內(nèi)容的鏈接很多也不再是傳統(tǒng)的"〈a〉"標(biāo)簽,而是使用了JavaScript的方式,如騰訊論壇、網(wǎng)易論壇等的翻頁方式是采用JavaScript來控制的。爬蟲是搜索引擎的第一步,也是對(duì)互聯(lián)網(wǎng)數(shù)據(jù)分析的基礎(chǔ)。傳統(tǒng)爬蟲對(duì)待現(xiàn)有的網(wǎng)站存在先天不足的缺陷主流搜索引擎對(duì)待動(dòng)態(tài)腳本網(wǎng)站一般采取回避、硬編碼的方式和某些網(wǎng)站預(yù)留給搜索引擎接口的三種態(tài)度。有研究機(jī)構(gòu)提出了模擬用戶行為依次點(diǎn)擊頁面所有的頁面元素來進(jìn)行抓取動(dòng)態(tài)腳本網(wǎng)站的技術(shù),但這一方式速度很慢,不適合實(shí)際應(yīng)用。
發(fā)明內(nèi)容針對(duì)上述問題,本發(fā)明的目的是提供一種可以只通過觸發(fā)特定頁面元素上的特定事件,從而大幅減少了需要觸發(fā)的事件數(shù)目,提高了動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)的收集速度的動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法。為實(shí)現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法,其特征在于它包括以下步驟i)獲取Index頁面并保存,將Index頁面加入待處理隊(duì)列;ii)判斷所述待處理隊(duì)列是否為空,若為空則表明抓取完成,退出抓取過程;否則從所述待處理隊(duì)列中任意選擇一個(gè)頁面,利用頁面相似性得到當(dāng)前頁面的類型,根據(jù)訓(xùn)練步驟中提取出的所述XPath路徑特征,確定所述類型需要觸發(fā)哪些頁面元素上的哪些事件;iii)判斷所述當(dāng)前頁面是否有未觸發(fā)過的事件,若沒有則跳轉(zhuǎn)到步驟ii);否則觸發(fā)事件,判斷所述當(dāng)前頁面是否變化且變化后的頁面為新頁面,若沒有變化或非新頁面則跳轉(zhuǎn)到步驟v);否則繼續(xù)執(zhí)行步驟iv);vi)保存所述新頁面并將所述新頁面加入到步驟i)中的待處理隊(duì)列;V)回退到觸發(fā)事件前的頁面狀態(tài),并跳轉(zhuǎn)到步驟iii)。所述步驟ii)中,所述訓(xùn)練步驟包括1)由人工給出各類型頁面成訓(xùn)練樣本集合;2)判斷所述訓(xùn)練樣本集合是否為空,若為空則跳轉(zhuǎn)到步驟5),否則從所述訓(xùn)練樣本集合中選擇一個(gè)頁面;3)判斷當(dāng)前頁面上是否還有未觸發(fā)過的事件,若沒有則跳轉(zhuǎn)到步驟2);否則觸發(fā)當(dāng)前事件,記錄當(dāng)前事件的事件信息;4)回退到觸發(fā)事件前的頁面狀態(tài),并跳轉(zhuǎn)到步驟3);5)根據(jù)所述事件信息提取各類型頁面需觸發(fā)事件的XPath路徑特征及事件類型。所述步驟3)中,所述當(dāng)前頁面的事件信息包括,事件類型、觸發(fā)事件的頁面元素、頁面是否變化、變化后頁面是哪種類型。所述步驟5)中,所述XPath路徑特征的提取方法如下被歸約的XPath路徑經(jīng)過的頁面元素名稱必須相同,對(duì)頁面元素的序號(hào)進(jìn)行歸約。本發(fā)明由于采取以上技術(shù)方案,其具有以下優(yōu)點(diǎn)1、本發(fā)明由于利用了頁面套用模板的相似性,因此能夠預(yù)知在哪些頁面元素上的點(diǎn)擊等事件將導(dǎo)向什么性質(zhì)的頁面,從而利用頁面相似性得到的頁面類型確定當(dāng)前頁面的類型需要觸發(fā)哪些頁面元素上的哪些事件。2、本發(fā)明通過對(duì)導(dǎo)向需要頁面的頁面元素的XPath進(jìn)行歸約,提取出其特征及事件類型,因此只觸發(fā)特定頁面元素上的特定事件,大幅減少了模擬用戶操作的次數(shù),提高了動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)的收集速度。本發(fā)明可應(yīng)用于各種網(wǎng)絡(luò)搜索引擎的網(wǎng)頁抓取工作。圖1是本發(fā)明的抓取數(shù)據(jù)之前的訓(xùn)練步驟流程示意圖圖2是本發(fā)明的寬度優(yōu)先的抓取方法步驟流程示意圖具體實(shí)施方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的描述。針對(duì)于現(xiàn)有技術(shù)中對(duì)待動(dòng)態(tài)腳本網(wǎng)站采用的不處理、硬編碼方式,本發(fā)明方法的執(zhí)行過程包括兩部分,第一部分為訓(xùn)練,第二部分為抓取。通過頁面的相似性訓(xùn)練,可以知道各個(gè)類型的頁面應(yīng)該在哪些頁面元素上觸發(fā)何種事件。訓(xùn)練完成后即可以進(jìn)行抓取,本發(fā)明的抓取過程可以采用多種抓取策略,本實(shí)施例中的寬度優(yōu)先抓取方法中,每次觸發(fā)完一個(gè)事件后,都會(huì)回退到原頁面,直到原頁面所有需要觸發(fā)的事件觸發(fā)完為止,再去處理其他的頁面。如圖1所示,本發(fā)明的訓(xùn)練步驟如下1)由人工給出各類型頁面成訓(xùn)練樣本集合。2)判斷訓(xùn)練樣本集合是否為空,若為空則跳轉(zhuǎn)到步驟5),否則從訓(xùn)練樣本集合中選擇一個(gè)頁面。3)判斷當(dāng)前頁面上是否還有未觸發(fā)過的事件,若沒有則跳轉(zhuǎn)到步驟2);否則觸發(fā)當(dāng)前事件,記錄當(dāng)前事件的事件類型、觸發(fā)事件的頁面元素、頁面是否變化、變化后頁面是哪種類型等事件信息。4)回退到觸發(fā)事件前的頁面狀態(tài),并跳轉(zhuǎn)到步驟3)。5)根據(jù)記錄的事件信息提取各類型頁面需觸發(fā)事件的頁面元素XML路徑語言(XMLPathLanguage,XPath)特征及事件類型。XPath路徑特征的提取方法如下被歸約的XPath路徑經(jīng)過的頁面元素名稱必須相同,對(duì)頁面元素的序號(hào)進(jìn)行歸約。如對(duì)"/html/body/div[4]/li[l]/a[l]"和"/html/body/div[4]/li[2]/a[l]"這兩個(gè)XPath路徑,本發(fā)明將它們歸約為"/html/body/div[4]/li[*]/a[l]";如還存在"/html/body/div[3]/li[l]/a[l]"這一XPath路徑,本發(fā)明將以上三個(gè)XPath路徑歸約為"/html/body/div[*]/li[*]/a[l]"。但對(duì)于"/html/body/div[l]","/html/body/span[1]"和"/html/body/div[1]/span[l]"三個(gè)XPath路徑中的任何兩個(gè)均不被歸約。如圖2所示,本發(fā)明的抓取步驟如下i)通過提供Index頁面的URL獲取Index頁面并保存,將Index頁面加入待處理隊(duì)列。本發(fā)明中待處理隊(duì)列是動(dòng)態(tài)變化的,將處理完的頁面刪除,將新的頁面加入。ii)判斷待處理隊(duì)列是否為空,若為空則表明抓取完成,退出抓取過程;否則從待處理隊(duì)列中任意選擇一個(gè)頁面,利用頁面相似性得到當(dāng)前頁面的類型,根據(jù)前述的訓(xùn)練部分提取出的XPath路徑特征,確定當(dāng)前頁面的類型需要觸發(fā)哪些頁面元素上的哪些事件。iii)判斷當(dāng)前頁面是否有未觸發(fā)過的事件,若沒有則跳轉(zhuǎn)到步驟ii);否則觸發(fā)事件,判斷當(dāng)前頁面是否變化且變化后的頁面為新頁面,若沒有變化或非新頁面則跳轉(zhuǎn)到步驟v);否則繼續(xù)執(zhí)行步驟iv)。vi)保存新頁面并將新頁面加入到步驟i)中的待處理隊(duì)列。v)回退到觸發(fā)事件前的頁面狀態(tài),并跳轉(zhuǎn)到步驟iii)。下面以網(wǎng)易新聞的評(píng)論頁面為實(shí)施例,說明本發(fā)明方法的使用過程和優(yōu)越性。網(wǎng)易新聞的評(píng)論頁面在載入后再向服務(wù)端請(qǐng)求評(píng)論數(shù)據(jù),并且通過"<a〉"標(biāo)簽的"onclick"事件控制翻頁。本實(shí)施例中,在整個(gè)過程中只考慮"〈a>"標(biāo)簽的"onclick"事件,每頁評(píng)論頁面是需要的頁面。首先,提供兩個(gè)評(píng)論頁面的樣本進(jìn)行訓(xùn)練,依次觸發(fā)所有"〈a>"標(biāo)簽上的5"onclick"事件,發(fā)現(xiàn)只有頁碼和"上一頁"、"下一頁"所在的頁面元素才會(huì)將觸發(fā)引向所需的評(píng)論頁面。通過訓(xùn)練總結(jié)出這些頁面元素的特征。其次,在抓取過程時(shí),本實(shí)施例只觸發(fā)這些頁面元素上的"onclick"事件。通過隨機(jī)選擇了3篇網(wǎng)易新聞的評(píng)論,將采用本發(fā)明的方法與不采用進(jìn)行對(duì)比,完全抓取需要觸發(fā)的事件數(shù)表1所示<table>tableseeoriginaldocumentpage6</column></row><table>本實(shí)施例中只考慮了"〈a〉"標(biāo)簽的"onclick"事件的情況,若考慮其他標(biāo)簽以及其他事件,則本發(fā)明的方法比其他方法的優(yōu)越性更加明顯。權(quán)利要求1、一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法,其特征在于它包括以下步驟i)獲取Index頁面并保存,將Index頁面加入待處理隊(duì)列;ii)判斷所述待處理隊(duì)列是否為空,若為空則表明抓取完成,退出抓取過程;否則從所述待處理隊(duì)列中任意選擇一個(gè)頁面,利用頁面相似性得到當(dāng)前頁面的類型,根據(jù)訓(xùn)練步驟中提取出的所述XPath路徑特征,確定所述類型需要觸發(fā)哪些頁面元素上的哪些事件;iii)判斷所述當(dāng)前頁面是否有未觸發(fā)過的事件,若沒有則跳轉(zhuǎn)到步驟ii);否則觸發(fā)事件,判斷所述當(dāng)前頁面是否變化且變化后的頁面為新頁面,若沒有變化或非新頁面則跳轉(zhuǎn)到步驟v);否則繼續(xù)執(zhí)行步驟iv);vi)保存所述新頁面并將所述新頁面加入到步驟i)中的待處理隊(duì)列;v)回退到觸發(fā)事件前的頁面狀態(tài),并跳轉(zhuǎn)到步驟iii)。2、如權(quán)利要求1所述的一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法,其特征在于所述步驟ii)中,所述訓(xùn)練步驟包括1)由人工給出各類型頁面成訓(xùn)練樣本集合;2)判斷所述訓(xùn)練樣本集合是否為空,若為空則跳轉(zhuǎn)到步驟5),否則從所述訓(xùn)練樣本集合中選擇一個(gè)頁面;3)判斷當(dāng)前頁面上是否還有未觸發(fā)過的事件,若沒有則跳轉(zhuǎn)到步驟2);否則觸發(fā)當(dāng)前事件,記錄當(dāng)前事件的事件信息;4)回退到觸發(fā)事件前的頁面狀態(tài),并跳轉(zhuǎn)到步驟3);5)根據(jù)所述事件信息提取各類型頁面需觸發(fā)事件的XPath路徑特征及事件類型。3、如權(quán)利要求1所述的一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法,其特征在于所述步驟3)中,所述當(dāng)前頁面的事件信息包括,事件類型、觸發(fā)事件的頁面元素、頁面是否變化、變化后頁面是哪種類型。4、如權(quán)利要求2所述的一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法,其特征在于所述步驟3)中,所述當(dāng)前頁面的事件信息包括,事件類型、觸發(fā)事件的頁面元素、頁面是否變化、變化后頁面是哪種類型。5、如權(quán)利要求1或2或3或4所述的一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法,其特征在于所述步驟5)中,所述XPath路徑特征的提取方法如下被歸約的XPath路徑經(jīng)過的頁面元素名稱必須相同,對(duì)頁面元素的序號(hào)進(jìn)行歸約。全文摘要本發(fā)明涉及一種動(dòng)態(tài)腳本網(wǎng)站數(shù)據(jù)快速收集方法,其特征在于它包括以下步驟i)獲取Index頁面并保存,將Index頁面加入待處理隊(duì)列;ii)判斷待處理隊(duì)列是否為空,若為空則表明抓取完成,退出抓取過程;否則從待處理隊(duì)列中任意選擇一個(gè)頁面,利用頁面相似性得到當(dāng)前頁面的類型,根據(jù)訓(xùn)練步驟中提取出的XPath路徑特征,確定類型需要觸發(fā)哪些頁面元素上的哪些事件;iii)判斷當(dāng)前頁面是否有未觸發(fā)過的事件,若沒有則跳轉(zhuǎn)到步驟ii);否則觸發(fā)事件,判斷當(dāng)前頁面是否變化且變化后的頁面為新頁面,若沒有變化或非新頁面則跳轉(zhuǎn)到步驟v);否則繼續(xù)執(zhí)行步驟iv);vi)保存新頁面并將新頁面加入到步驟i)中的待處理隊(duì)列;v)回退到觸發(fā)事件前的頁面狀態(tài),并跳轉(zhuǎn)到步驟iii)。文檔編號(hào)G06F17/30GK101625692SQ200910090288公開日2010年1月13日申請(qǐng)日期2009年8月4日優(yōu)先權(quán)日2009年8月4日發(fā)明者冰夏,楊冬青,王騰蛟,軍高申請(qǐng)人:北京大學(xué)