本發(fā)明涉及一種計算機技術,具體而言,涉及一種基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)。
背景技術:
由于動態(tài)網(wǎng)頁具有交互性強、交互數(shù)據(jù)復雜的特點,目前的動態(tài)網(wǎng)頁爬蟲程序的編寫需要軟件開發(fā)人員對頁面代碼及交互規(guī)則進行具體的分析研究。這些分析研究的工作量隨著交互過程和交互數(shù)據(jù)的復雜性增加而成倍的增加。同時,各網(wǎng)站頁面的交互規(guī)則不同,導致針對某一網(wǎng)站進行的分析研究工作缺少可復用性,大大增加了動態(tài)網(wǎng)頁爬蟲程序的編寫工作量。
技術實現(xiàn)要素:
本發(fā)明實施例中提供一種基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的實現(xiàn)方法,以解決上述至少一個問題。
為解決上述技術問題,本發(fā)明實施例提供了一種基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的實現(xiàn)方法,包括:動態(tài)網(wǎng)頁路徑選擇模塊根據(jù)輸入信息獲取所有聯(lián)通的交互路徑集合;動態(tài)網(wǎng)頁路徑自適應訓練模塊對動態(tài)網(wǎng)頁路徑選擇模塊輸出的交互路徑集合中的進行實時排序,形成交互路徑列表;動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊對交互路徑列表中的n條最優(yōu)路徑進行動態(tài)頁面抓取,并將結果反饋給動態(tài)網(wǎng)頁路徑自適應訓練模塊,更新交互路徑列表;其中,輸入信息包括下列中的一個或多個:入口網(wǎng)頁地址、目標網(wǎng)頁地址、交互過程使用的初始輸入數(shù)據(jù)、目標信息數(shù)據(jù)結構、和抓取網(wǎng)頁范圍列表。
進一步地,聯(lián)通的交互路徑集合包括從入口網(wǎng)頁地址出發(fā)、到目標網(wǎng)頁地址截止的交互路徑和網(wǎng)絡數(shù)據(jù)交互信息。
進一步地,根據(jù)輸入信息獲取所有聯(lián)通的交互路徑集合的步驟包括:用瀏覽器內核,通過模擬用戶行為的方式訪問入口網(wǎng)頁,同時設置并初始化操作樹;用xpath、正則表達式或自定義編程的方式分析頁面結構,調用瀏覽器內核,模擬用戶行為,將初始輸入數(shù)據(jù)輸入至網(wǎng)頁相應區(qū)域;通過模擬用戶行為的方式進行交互操作,進入下一可達頁面;并將操作源網(wǎng)頁地址、操作目標網(wǎng)頁地址、操作方法、網(wǎng)絡交互接口、網(wǎng)絡交互數(shù)據(jù)封裝為一個節(jié)點,插入到操作樹的相應位置。
進一步地,動態(tài)網(wǎng)頁路徑選擇模塊根據(jù)網(wǎng)頁初始信息獲取所有聯(lián)通的交互路徑集合的步驟還包括:若當前網(wǎng)頁地址為輸入信息中指定的目標網(wǎng)頁地址,則將當前頁面判定為目標網(wǎng)頁;若當前網(wǎng)頁地址非目標網(wǎng)頁地址,判斷下一頁面的主頁是否在輸入信息的抓取網(wǎng)頁范圍列表中,或是否無下一可達頁面;當下一頁面的主頁不在輸入信息的抓取網(wǎng)頁范圍列表中,或無下一可達頁面,則判斷當前網(wǎng)頁中是否包含具有輸入信息中指定的目標信息數(shù)據(jù)結構的數(shù)據(jù);若當前網(wǎng)頁包含輸入信息中指定的目標信息數(shù)據(jù)結構的數(shù)據(jù),則將當前頁面判定為目標網(wǎng)頁,并將操作樹中當前網(wǎng)頁的子節(jié)點到根節(jié)點的路徑加入至輸入信息中。
進一步地,對動態(tài)網(wǎng)頁路徑選擇模塊輸出的交互路徑集合中的進行實時排序,形成交互路徑列表的步驟包括:接收動態(tài)網(wǎng)頁路徑選擇模塊輸出的交互路徑集合以及初始配置信息、初始數(shù)據(jù)、數(shù)據(jù)抓取結果,并對輸入的交互路徑集合中的路徑進行排序;輸出排序后的交互路徑列表,形成交互路徑列表。
進一步地,對交互路徑集合中的進行實時排序通過如下公式進行:
路徑指標=(輸入路徑集合中最長路徑長度-路徑長)*ω路徑長度+路徑訪問健壯性*ω路徑訪問健壯度;其中各權重ω值由初始配置信息給出,路徑指標計算公式中的路徑長度為輸入路徑所包含的節(jié)點數(shù),路徑指標與路徑長度成反比,路徑訪問健壯性數(shù)值初始值為0。
進一步地,更新交互路徑列表包括:動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊從動態(tài)網(wǎng)頁路徑自適應訓練模塊獲取排序后的交互路徑列表,選擇最優(yōu)的n條交互路徑進行動態(tài)網(wǎng)頁抓??;動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊將數(shù)據(jù)抓取結果輸入動態(tài)網(wǎng)頁路徑自適應訓練模塊,動態(tài)網(wǎng)頁路徑自適應訓練模塊判斷結果可達性及結果有效性,根據(jù)結果數(shù)據(jù)計算出該結果對應的路徑的訪問健壯性數(shù)值;動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊根據(jù)訪問健壯性數(shù)值更新路徑指標,并對路徑列表重新排序,形成新的交互路徑列表。
通過本發(fā)明提供的基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的實現(xiàn)方法,可以實時獲取動態(tài)網(wǎng)頁的交互路徑信息,并對交互路徑信息進行排序,從而實時動態(tài)更新交互路徑列表,可以大大減小動態(tài)網(wǎng)頁爬蟲程序的編寫工作量。
附圖說明
圖1是本發(fā)明實施例的基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的結構示意圖;
圖2是本發(fā)明實施例的基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的實現(xiàn)方法的控制原理圖;
圖3是本發(fā)明實施例的基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的實現(xiàn)方法的控制流程圖。
具體實施方式
下面結合附圖和具體實施例對本發(fā)明作進一步詳細描述,但不作為對本發(fā)明的限定。
圖1是本發(fā)明實施例的基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的結構示意圖。如圖1所示,基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)包括動態(tài)網(wǎng)頁路徑選擇模塊11、動態(tài)網(wǎng)頁路徑自適應訓練模塊12及動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊13。
動態(tài)網(wǎng)頁路徑選擇模塊11,用于根據(jù)輸入信息獲取所有聯(lián)通的交互路徑集合。
其中,動態(tài)網(wǎng)頁路徑選擇模塊11的輸入信息包含包括入口網(wǎng)頁地址、目標網(wǎng)頁地址、交互過程使用的初始輸入數(shù)據(jù)、目標信息數(shù)據(jù)結構、抓取網(wǎng)頁主頁列表中的一個或多個。其中交互過程使用的初始輸入數(shù)據(jù)為一表單結構,記錄了待輸入數(shù)據(jù)與頁面輸入元素的對應關系。如待輸入數(shù)據(jù)為人名,頁面輸入元素為商場購買記錄,希望搜索到某人的購買記錄,則此時交互過程使用的初始輸入數(shù)據(jù)為特定人的購買記錄。
動態(tài)網(wǎng)頁路徑選擇模塊11的輸出為一數(shù)據(jù)集合,即聯(lián)通的交互路徑集合,包括從入口網(wǎng)頁地址出發(fā)、到目標網(wǎng)頁地址(或包含具有目標信息數(shù)據(jù)結構的數(shù)據(jù)的網(wǎng)頁)截止的交互路徑和網(wǎng)絡數(shù)據(jù)交互信息。
動態(tài)網(wǎng)頁路徑選擇模塊11根據(jù)輸入信息獲取所有聯(lián)通的交互路徑集合的步驟包括:
用瀏覽器內核,通過模擬用戶行為的方式訪問入口網(wǎng)頁,同時設置并初始化操作樹;
用xpath、正則表達式或自定義編程的方式分析頁面結構,調用瀏覽器內核,模擬用戶行為,將初始輸入數(shù)據(jù)輸入至網(wǎng)頁相應區(qū)域;
通過模擬用戶行為的方式進行交互操作,進入下一可達頁面;并將操作源網(wǎng)頁地址、操作目標網(wǎng)頁地址、操作方法、網(wǎng)絡交互接口、網(wǎng)絡交互數(shù)據(jù)封裝為一個節(jié)點,插入到操作樹的相應位置。
動態(tài)網(wǎng)頁路徑選擇模塊11根據(jù)輸入信息獲取所有聯(lián)通的交互路徑集合的步驟還包括:
若當前網(wǎng)頁地址為輸入信息中指定的目標網(wǎng)頁地址,則將當前頁面判定為目標網(wǎng)頁;
若當前網(wǎng)頁地址非目標網(wǎng)頁地址,判斷下一頁面的主頁是否在輸入信息的抓取網(wǎng)頁范圍列表中,或是否無下一可達頁面;
當下一頁面的主頁不在輸入信息的抓取網(wǎng)頁范圍列表中,或無下一可達頁面,則判斷當前網(wǎng)頁中是否包含具有輸入信息中指定的目標信息數(shù)據(jù)結構的數(shù)據(jù);
若當前網(wǎng)頁包含輸入信息中指定的目標信息數(shù)據(jù)結構的數(shù)據(jù),則將當前頁面判定為目標網(wǎng)頁,并將操作樹中當前網(wǎng)頁的子節(jié)點到根節(jié)點的路徑加入至輸入信息中。
若當前網(wǎng)頁未包含輸入信息中指定的目標信息數(shù)據(jù)結構的數(shù)據(jù),則動態(tài)網(wǎng)頁路徑選擇模塊11重復根據(jù)上述輸入信息獲取所有聯(lián)通的交互路徑集合的步驟,直至將輸入信息中指定的目標網(wǎng)頁地址全部搜索完為止。
動態(tài)網(wǎng)頁路徑自適應訓練模塊12以動態(tài)網(wǎng)頁路徑選擇模塊12的輸出(即交互路徑集合)以及初始配置信息、初始數(shù)據(jù)、數(shù)據(jù)抓取結果作為輸入,排序后的交互路徑列表作為輸出。
動態(tài)網(wǎng)頁路徑自適應訓練模塊12對動態(tài)網(wǎng)頁路徑選擇模塊輸出的交互路徑集合中的各路徑進行實時排序的步驟包括:
接收以動態(tài)網(wǎng)頁路徑選擇模塊11輸出的交互路徑集合以及初始配置信息、初始數(shù)據(jù)、數(shù)據(jù)抓取結果,并對輸入的交互路徑集合中的路徑進行排序;
輸出排序后的交互路徑列表。
其中,對輸入的交互路徑集合中的路徑進行排序通過如下公式進行:
路徑指標=(輸入路徑集合中最長路徑長度-路徑長)*ω路徑長度+路徑訪問健壯性*ω路徑訪問健壯度,其中各權重ω值由初始配置信息給出,路徑指標計算公式中的路徑長度為輸入路徑所包含的節(jié)點數(shù),路徑指標與路徑長度成反比,路徑訪問健壯性初始值為0。
動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊13選擇動態(tài)網(wǎng)頁路徑自適應訓練模塊12輸出的交互路徑列表中的前n條交互路徑(n由系統(tǒng)配置信息給出),按照網(wǎng)絡路徑中每節(jié)點給出的訪問頁面地址、交互數(shù)據(jù)格式,并行的進行動態(tài)頁面抓取。動態(tài)頁面抓取結束后,動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊將訪問結果提交至動態(tài)網(wǎng)頁路徑自適應訓練模塊,用于實時動態(tài)更新交互路徑列表。
在確定交互路徑列表之后,進入到動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊13,選擇動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊抓取任務集合中的每條任務、并挑選有序交互路徑列表中前n條交互路徑(n由系統(tǒng)配置信息給出),按照網(wǎng)絡路徑中每節(jié)點給出的訪問頁面地址、交互數(shù)據(jù)格式,并行的進行動態(tài)頁面抓取,然后得到并返回動態(tài)頁面抓取結果。
在獲取到抓取結果后,動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊13將動態(tài)頁面抓取結果反饋給動態(tài)網(wǎng)頁路徑自適應訓練模塊12,以更新交互路徑列表。
動態(tài)網(wǎng)頁路徑自適應訓練模塊根據(jù)結果數(shù)據(jù)計算出該結果對應的路徑的訪問健壯性數(shù)值。
該健壯性數(shù)值可依據(jù)但不限于下列指標:結果是否為空、結果數(shù)據(jù)格式是否正確以及結果數(shù)據(jù)是否有效。根據(jù)指標反饋的結果以及指標的權重值獲取路徑訪問健壯性數(shù)值。
更新交互路徑列表的方式包括:
動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊從動態(tài)網(wǎng)頁路徑自適應訓練模塊獲取排序后的交互路徑列表,選擇最優(yōu)的n條交互路徑進行動態(tài)網(wǎng)頁抓?。?/p>
動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊將數(shù)據(jù)抓取結果輸入動態(tài)網(wǎng)頁路徑自適應訓練模塊,動態(tài)網(wǎng)頁路徑自適應訓練模塊判斷結果可達性及結果有效性,根據(jù)結果數(shù)據(jù)計算出該結果對應的路徑的訪問健壯性數(shù)值;
動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊根據(jù)訪問健壯性數(shù)值更新路徑指標,并對路徑列表重新排序,形成新的交互路徑列表。
不斷重復上述的動態(tài)頁面抓取步驟,并實時反饋給動態(tài)網(wǎng)頁路徑自適應訓練模塊進行交互路徑列表的實時更新。
結合參見圖2和圖3所示,根據(jù)本發(fā)明的實施例,基于機器學習的自適應動態(tài)網(wǎng)頁爬蟲系統(tǒng)的實現(xiàn)方法包括:
S11,動態(tài)網(wǎng)頁路徑選擇模塊根據(jù)輸入信息獲取所有聯(lián)通的交互路徑集合;
S12,動態(tài)網(wǎng)頁路徑自適應訓練模塊對動態(tài)網(wǎng)頁路徑選擇模塊輸出的交互路徑集合中的進行實時排序,形成交互路徑列表;
S13,動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊對交互路徑列表中的n條最優(yōu)路徑進行動態(tài)頁面抓取,并將結果反饋給動態(tài)網(wǎng)頁路徑自適應訓練模塊,更新交互路徑列表。
通過上述方法可以實時獲取動態(tài)網(wǎng)頁的交互路徑信息,且交互路徑列表根據(jù)動態(tài)網(wǎng)頁數(shù)據(jù)抓取模塊的訪問結果實時更新,從而實時動態(tài)更新交互路徑列表,可以大大減小動態(tài)網(wǎng)頁爬蟲程序的編寫工作量。
當然,以上是本發(fā)明的優(yōu)選實施方式。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明基本原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍。