一種從ria頁面中抓取云計算數據的方法
【專利摘要】本發明公開了一種從RIA頁面中抓取云計算數據的方法,先將目標RIA頁面抽象為包括至少一個節點樹的頁面模型,然后模擬用戶操作對頁面模型中節點對應的事件進行有序觸發,執行事件對應代碼,對頁面DOM內容進行更新,直到遍歷頁面模型,找出頁面模型中節點樹所包含的路徑集,并存儲每一條路徑對應的DOM內容。本發明的方法通過自動觸發節點對應的事件,并執行事件的對應代碼,來更新頁面DOM內容,并動態擴展下一層節點。實現對RIA頁面云計算數據的抓取,該方法的抓取能力很強,對系統資源的占用非常低,具有很好的應用前景。
【專利說明】
一種從RIA頁面中抓取云計算數據的方法
技術領域
[0001] 本發明屬于網絡爬蟲技術領域,尤其涉及一種從RIA頁面中抓取云計算數據的方 法。
【背景技術】
[0002] 隨著云計算行業的發展,成熟的云計算產品在市場上層出不窮,云計算行業的興 盛,導致云計算產品的信息量在互聯網上迅猛地增長,并且這些信息分散在各個云計算廠 商各自的服務器上。而云計算產品的數據是進行該領域管理和決策過程的關鍵,如何獲取 分散在互聯網上的云計算產品的數據,就是亟待解決的重要問題。
[0003] 但是,伴隨著大量云計算產品的涌入市場,云計算產品的數據也在快速增長,要獲 取這些數據,面臨著許多困難。例如:
[0004] 海量的云計算產品數據散落在數量眾多的云計算廠商的服務器上,并且還在不斷 增長。有分析人士指出,僅在我國,未來8年內,云計算產業在市場上,至少會增長20倍。眾多 的云計算廠商在云計算的不同細分領域,不斷地與時倶進、推陳出新,新的產品會不斷出 現,大量數據會持續生成。而云計算的產品特性如服務化、按需使用等,令云計算產品無法 像傳統工業品哪樣出現在統一的第三方市場中,所以云計算產品的數據也就呈分散的狀態 分布于各云計算廠商各自的服務器上。由此帶來的問題是,對于云計算產品數據的獲取,應 該通過自動化的方式進行。
[0005] 云計算產品的信息以新型呈現技術在互聯網上向用戶展示,這令其大部分數據都 隱藏在Deep Web中,獲取數據十分困難。隨著人們對產品的個性化需求越來越高,商務領域 發生著深刻的變化,在電子商務領域,除了所熟知的B2B、B2C、C2C等模式外,也在這變化的 浪潮中催生出了 C2B等嶄新的業務模式。新的模式和消費者的需求帶來了廠商和消費者交 互方式的變化,產品不再以單純的展示方式在互聯網上呈現給用戶,而是將產品頁面變成 一個RIA,提供大量可定制的選項供用戶自己進行定制。如戴爾公司的個人電腦產品就可以 讓用戶定制包括內存容量、硬盤大小、CPU型號、彩殼顏色等諸多選項在內的產品參數,為用 戶提供滿足他們個性化需求的產品。云計算產品作為一種高度可定制的產品,從在市場上 出現開始就采用了這種新的方式呈現給用戶。以阿里云主機的產品頁面為例,它就向用戶 提供了地域、可用區、CPU、內存等諸多產品參數的可選配置,供用戶定制自己適合自己的產 品。
[0006] RIA(Rich Internet Application,富互聯網應用系統)技術允許我們在因特網上 以一種像使用Web-樣簡單的方式來部署富客戶端程序。這是一個用戶接口,它比用HTML能 實現的接口更加健壯、反應更加靈敏和更具有令人感興趣的可視化特性。但是這種新RIA模 式的呈現方式,給以搜索引擎和產品對比和推薦等服務為主要業務的和應用帶來了巨大的 挑戰。由于新的RIA的呈現方式,要求產品頁面在前端展現上采用大量包括Ajax、jQuery等 新的腳本技術,使得傳統的數據抓取技術無法獲取頁面中的有用數據,獲取不到這些數據 就無法編制索引從而進行檢索,更不要說進行產品的對比和推薦了。
【發明內容】
[0007] 本發明的目的是提供一種從RIA頁面中抓取云計算數據的方法,克服了【背景技術】 中列出的缺陷,能夠抓取RIA頁面中的云計算數據。
[0008] 為了實現上述目的,本發明技術方案如下:
[0009] 一種從RIA頁面中抓取云計算數據的方法,所述從RIA頁面中抓取云計算數據的方 法包括:
[0010] 將目標RIA頁面抽象為包括至少一個節點樹的頁面模型;
[0011] 模擬用戶操作對頁面模型中節點對應的事件進行有序觸發,執行事件對應代碼, 對頁面D0M內容進行更新,直到遍歷頁面模型,找出頁面模型中節點樹所包含的路徑集,并 存儲每一條路徑對應的D0M內容。
[0012] 所述目標RIA頁面包括至少一個配置類別,所述配置類別包括至少一個配置選項, 所述將目標RIA頁面抽象為包括至少一個節點樹的頁面模型,包括:
[0013] 以目標RIA頁面中的配置類別為節點樹的深度,以配置選項及其對應的事件為節 點,將目標RIA頁面抽象為至少一個節點樹;
[0014]將所有節點樹組成為頁面模型。
[0015]進一步地,所述遍歷頁面模型,包括:
[0016]從頁面模型對應的節點樹中選取初始節點集,依次對初始節點集中的節點進行遍 歷,直到初始節點集中所有節點遍歷完成。
[0017] 進一步地,所述模擬用戶操作對頁面模型中節點對應的事件進行有序觸發,執行 事件對應代碼,對頁面D0M內容進行更新,包括:
[0018] 步驟1、以從初始節點集中選定的進行遍歷的節點為當前節點;
[0019] 步驟2、模擬用戶操作觸發當前節點對應的事件;
[0020] 步驟3、執行所述事件的對應代碼,更新頁面D0M內容;
[0021] 步驟4、通過選擇器進行動態擴展,獲取擴展的下一層節點;
[0022] 步驟5、以所述下一層節點中任一節點為當前節點,返回步驟2,直到所述下一層節 點中所有節點遍歷完成;
[0023] 步驟6、選擇上一層節點中的下一個節點為當前節點,返回步驟2,直到上一層節點 中所有節點遍歷完成。
[0024] 本發明所述模擬用戶操作觸發當前節點對應的事件,包括:
[0025] 根據為RIA頁面設置的規則生成各節點對應的事件及相應操作腳本;
[0026] 判斷當前節點的操作類型,通過抓取引擎調用前端測試工具接口執行對應的操作 腳本,生成瀏覽器控制信號,模擬用戶操作,觸發當前節點對應的事件。
[0027] 本發明所述執行所述事件的對應代碼,更新頁面D0M內容,包括:
[0028] 通過抓取引擎調用瀏覽器解析并執行所述事件的對應代碼,所述瀏覽器與服務器 進行異步通信,并返回D0M內容。
[0029] 進一步地,所述找出頁面模型中節點樹所包含的路徑集,并存儲每一條路徑對應 的D0M內容,包括:
[0030] 在遍歷頁面模型的過程中,當所述獲取的擴展的下一層節點為空,或達到節點樹 的深度時,判斷找出頁面模型中節點樹的一條路徑,等待目標RIA頁面更新DOM內容;
[0031]存儲該條路徑對應的D0M內容。
[0032]進一步地,所述存儲該條路徑對應的D0M內容之前,還包括:
[0033]判斷D0M內容的合法性,如果不合法則通過D0M回退,獲取合法的D0M內容。
[0034]本發明提出了一種從RIA頁面中抓取云計算數據的方法,綜合頁面建模方法、Ajax 抓取方法、腳本解析引擎、DOM操作方法和用戶事件觸發方法,并構建抓取引擎和框架,實現 對數據的抓取。本發明通過自動觸發節點對應的事件,并執行事件的對應代碼,來更新頁面 D0M內容,并動態擴展下一層節點。實現對RIA頁面云計算數據的抓取,該方法的抓取能力很 強,對系統資源的占用非常低,具有很好的應用前景。
【附圖說明】
[0035]圖1為本發明從RIA頁面中抓取云計算數據的方法流程圖;
[0036] 圖2為本發明實施例節點樹示意圖;
[0037] 圖3為本發明抓取云計算數據的系統結構框架;
[0038] 圖4為本發明實施例抓取過程流程。
【具體實施方式】
[0039]下面結合附圖和實施例對本發明技術方案做進一步詳細說明,以下實施例不構成 對本發明的限定。
[0040] 現有技術中Ajax等前端技術已經大量應用,研究抓取采用了 Ajax技術的頁面信息 的方法也數量眾多,這些傳統網絡爬蟲抓取方法大多無法擺脫以獲取URL為目的的導向,不 適用于抓取云計算產品RIA模式頁面內的可定制產品數據;它們將抓取的目標頁面看作有 限狀態自動機,也無法對云計算產品RIA模式頁面進行合理建模;同時這些方法在處理RIA 頁面中大量的腳本和事件時無法提供成熟可靠的方案。
[0041] 如圖1所示,本實施例一種從RIA頁面中抓取云計算數據的方法,用于從云計算產 品RIA頁面中抓取可高度定制的云計算產品的數據。在本實施例中,實現該方法的主體為網 絡爬蟲程序Sp ider。該方法包括:
[0042]步驟S1、將目標RIA頁面抽象為包括至少一個節點樹的頁面模型。
[0043]可定制化云計算產品的RIA頁面有一個顯著的特點,為了支持定制性,頁面中加入 了大量配置選項,這些配置選項與頁面事件綁定,通過用戶操作的有序組合來觸發事件,以 得到一個配置組合的信息。
[0044]例如對一個品牌電腦的選型,其可以配置的配置類別包括型號、CHJ、內存、硬盤 等,即可以對型號、CPU、內存、硬盤等進行依次配置。每個配置類別對應多個配置選項,如型 號的配置選項包括型號1、型號2、型號3等,CPU的配置選項包括1.3G雙核、2.7G雙核等,內存 的配置選項包括3G、4G、8G等,硬盤的配置選項包括的180G、350G等。這里僅以電腦的選型為 例,配置選項也僅僅列出了一些常用的數據。容易理解的是,在實際的應用中,可以選擇的 配置類別可以更多或更少,其具有的配置選項也可以更多或更少。用戶通過有序的操作,分 別從型號、CPU、內存、硬盤等配置類別中選擇對應的配置選項,即可完成選型。
[0045]本實施例將這些配置選項及綁定于其上的事件視為一個節點,整個RIA頁面就可 以被看作一棵或多棵由這些節點組成的節點樹的集合,頁面模型用,…,Tn}表示, 其中Tgljln為模型中的節點樹。即以目標RIA頁面中的配置類別為節點樹的深度,以配置選 項及其對應的事件為節點,將目標RIA頁面抽象為至少一個節點樹,將所有節點樹組成為頁 面模型。
[0046] -棵典型的節點樹結構如圖2所示,為由配置選項和其對應事件組成節點所組成 的樹。每個節點表示已經選擇好的配置選項及其對應事件,例如圖2中L11表示型號為型號 1; L21表示CPU為1.3G雙核,L22表示CPU為2.7G雙核;L31表示內存為3G,L32表示內存為4G; L41表示硬盤為180G,L42表示硬盤為350G。
[0047]可見,在圖2的節點樹中,L11是根節點,為第一層節點,依次第二層節點包括L21、 122,第三層節點包括131、132、133、134,第四層節點包括141、142、143、144、145、146。不同 的根節點對應有不同的節點樹,所有的節點樹組成整個RIA頁面模型。在本實施例中配置類 別決定了節點樹的層次,即節點樹的深度,而根節點的多少決定了節點樹的數量。本實施例 中假設有n個節點樹,則頁面模型用M = {Ti,,…,Tn}表示,其中I^ljTn為模型中的節點樹。
[0048] 步驟S2、模擬用戶操作對頁面模型中節點對應的事件進行有序觸發,執行事件對 應代碼,對頁面D0M內容進行更新,直到遍歷頁面模型,找出頁面模型中節點樹所包含的路 徑集,并存儲每一條路徑對應的D0M內容。
[0049] 由頁面模型可得,假設配置類別有D個,則節點樹的深度為D,遍歷頁面模型就是要 找出從根節點到末端節點的所有路徑,即頁面模型的遍歷過程可以看作是找出RIA頁面所 有節點樹中深度為D的路徑集。如果用集合n表示樹Ti的路徑集,那么所有樹中深度為D的路 徑集表示為R= {ri,ri,…,rn}。
[0050] 由于頁面中的節點之間存在依賴關系,因此遍歷過程中一個很重要的任務是初始 節點集的選取。本實施例通過從頁面模型中指定或隨機選擇出一些節點來作為初始節點 集,例如選擇每個節點樹的根節點作為初始節點集,依次對初始節點集中的節點進行遍歷, 直到初始節點集中所有節點遍歷完成。這樣通過從根節點開始,可以遍歷到每一個節點樹, 完成對頁面模型的遍歷。
[0051] 以本實施例品牌電腦的選型為例,RIA頁面中第一層節點(根節點)為所有可供選 擇的型號,將每個型號對應的節點選取為初始節點,開始遍歷。需要說明的是,初始節點集 的選取,還可以只選擇其中的一個樹的根節點,根據樹與樹之間的動態擴展關系,來找到下 一個樹來進行遍歷,這里不再贅述。例如根據型號對應的配置選項,就可以找到所有的根節 點。
[0052] 本實施例從頁面模型對應的節點樹中選取初始節點集,觸發初始節點集中節點對 應的事件,動態選取擴展的下一層節點以遍歷頁面模型。
[0053] 其中,對初始節點集中任一節點進行遍歷,其過程如下:
[0054] 步驟1、以從初始節點集中選定的進行遍歷的節點為當前節點;
[0055] 步驟2、模擬用戶操作觸發當前節點對應的事件;
[0056] 步驟3、執行所述事件的對應代碼,更新頁面D0M內容;
[0057]步驟4、通過選擇器進行動態擴展,獲取擴展的下一層節點;
[0058]步驟5、以所述下一層節點中任一節點為當前節點,返回步驟2,直到所述下一層節 點中所有節點遍歷完成;
[0059] 步驟6、選擇上一層節點中的下一個節點為當前節點,返回步驟2,直到上一層節點 中所有節點遍歷完成。
[0060] 具體地,還是以圖2的節點樹為例,第一層節點為L11,第二層節點包括L21、L22,第 三層節點包括 L31、L32、L33、L34,第四層節點包括 L41、L42、L43、L44、L45、L46。
[0061] 本實施例以L11為例,遍歷過程如下:
[0062]觸發L11對應的事件;
[0063] 執行L11對應的事件的代碼,通過CSS選擇器、HTML選擇器、XPATH表達式等對下一 層節點進行動態擴展,找到擴展的節點如L21、L22。
[0064] 分別對L21、L22進行遍歷:
[0065] 對于L21,執行其對應的事件,并找到其對應的擴展的節點131、132、133,然后對 L31、L32、L33進行遍歷,執行L31、L32、L33各自對應的事件,找到L31對應的擴展的節點L41、 L42,并執行L41、L42對應的事件,找到L32對應的擴展的節點L43、L44,并執行L41、L42對應 的事件,找到L33對應的擴展的節點L45,并執行L45對應的事件;
[0066] 對于L22,執行其對應的事件,并找到其對應的擴展的節點L34,然后對L34進行遍 歷,執行L34對應的事件,找到L34對應的擴展的節點L46,并執行L46對應的事件。
[0067]例如假設初始節點集為(111兒12兒13兒14),則在111遍歷完成后,返回初始節點 集,刪除節點L11,對剩余的其他節點進行遍歷,遍歷的過程與L11相同,這里不再贅述。 [0068]容易理解的是,在遍歷時,當深度為j層的節點事件均觸發完成后,返回j-1層,重 置深度,觸發該j_l層節點集中的下一個節點。依次類推,直到初始節點集中的節點對應的 事件全部觸發完畢,方法結束。
[0069] 本實施例網絡爬蟲程序Spider抓取云計算數據時的架構如圖3所示,。Script為通 過規則(Rules)生成的事件操作腳本,Scheduler (Selenium-Webdri ve)為前端測試工具, Scrapy Engine為通用抓取引擎,middleware為中間設備,DOM storage為D0M存儲設備,Web Server為服務器,Browser為瀏覽器,Script Engine\D0M Builder為現有瀏覽器的一部分。 [0070]本實施例方法的具體抓取過程如圖4所示,在初始化爬蟲程序和前端測試工具時, 讀取目標RIA頁面的URL,以及與URL關聯的Rule規則(為RIA頁面設置的規則),根據Rule規 則生成各節點對應的事件(各頁面元素選擇器)及相應操作腳本Script,將URL壓入瀏覽器 并啟動。
[0071]在初始頁面D0M加載完畢后,確定或重置抓取深度D,開始進行云計算數據的抓取。 其中,觸發節點對應的事件,本實施例通過Selenium等前端測試工具,模擬用戶操作實現節 點事件的觸發。根據為RIA頁面設置的規則生成各節點對應的事件及相應操作腳本,只需判 斷節點的操作類型,就可以通過抓取引擎Scrapy Engine調用前端測試工具接口執行對應 的操作腳本,生成瀏覽器控制信號,模擬用戶操作,觸發當前節點對應的事件。具體方法是, 根Rule定義操作類型如點擊、拖放、選擇等并編寫相應的操作的Selenium腳本Script。為了 實現自動化抓取,在通用抓取引擎Scrapy的基礎上,綁定前端測試工具接口 Selenium API, 在Scrapy Engine的控制下,調用前端測試工具Selenium-Webdri ve來執行操作腳本, Selenium-Webdrive根據Script的內容,生成瀏覽器控制信號,模擬用戶事件的觸發,可以 進行如點擊(Click)、拖放(Drag&Drop)、選擇(Select)等操作,這個過程中涉及的Web請求 會由Spider記錄并交由瀏覽器發起請求和接收響應。
[0072]節點的事件被觸發后,該事件對應的RIA頁面中的Javascript代碼被執行,該事件 對應的代碼為RIA頁面中所出發事件對應的Javascript代碼。本實施例使用成熟的商用瀏 覽器來執行Javascript,進行Javascript腳本代碼的解析和執行工作,同時Javascript中 的Ajax方法需要瀏覽器與服務器間進行異步通信,并且會根據執行的結果更新頁面現有的 DOM內容,這些步驟都可以通過成熟的商用瀏覽器來實現。將瀏覽器加入Scrapy框架,作為 一個下載器模塊,接受Scrapy Engine的調度,接受Selenium API的控制,執行Javascript 代碼,與Web Server進行異步通信,更新頁面DOM內容,最后將響應內容(Response DOM)發 回給Spider,Spider將DOM內容記錄到DOM Storage。
[0073]本實施例在一個初始節點被觸發后,需要動態選取擴展的節點以進行遍歷。在動 態選取擴展的節點時,為了保證正確地選擇擴展的節點,在觸發某層某個節點的事件后,等 待瀏覽器完成與服務器的異步通信,并更新完D0M內容后再進行下一層節點的選取。這主要 是為了防止事件的Javascript代碼對下一層節點對應的D0M內容進行更新,而引發的節點 選擇過時的問題。
[0074] 本實施例在D0M更新后通過CSS選擇器、HTML選擇器、XPATH表達式等對下一層節點 進行選擇,尋找出擴展的節點以進行下一步的遍歷。在發現擴展的節點后,對發現的擴展的 節點逐級向下遍歷,直到到達最后一層節點。在下一層節點遍歷完成后,返回到上一層沒有 遍歷的節點繼續遍歷。在該初始節點對應的節點樹被遍歷完畢,選擇下一個初始節點繼續 進行遍歷。
[0075] 通過上述遍歷過程,可以找到頁面模型中的路徑集,例如路徑LI 1-L21-L32-L44, L11-L21-L31-L41等,在一條路徑遍歷后,返回并存儲每一條路徑對應的D0M內容。
[0076] 其中,D0M(文檔對象模型document object model)內容,用來表示瀏覽器上的整 個文檔對象及其層次結構。
[0077] 即在遍歷過程中,每當找出一條路徑時(這一路徑上的所有節點的事件均觸發并 執行,D0M內容更新完畢),就將此時的D0M存儲起來,具體步驟如下:
[0078] 在遍歷頁面模型的過程中,當所述獲取的擴展的下一層節點為空,或達到節點樹 的深度時,判斷找出頁面模型中節點樹的一條路徑,等待目標RIA頁面更新D0M內容;
[0079]存儲該條路徑對應的D0M內容。
[0080]本實施例判斷找出頁面模型中節點樹的一條路徑,即判斷遍歷是否到達路徑末 端。通過設置路徑深度D或查看下一層節點的個數來判斷,每選取一次擴展的下一層節點, 就將當前路徑深度j加1,當當前深度j等于D或擴展的下一層節點為空時到達路徑末端,等 待瀏覽器更新D0M內容,直到D0M不再發生變化。
[0081]當到達路徑末端時,從瀏覽器獲取當前D0M內容。通過調用瀏覽器的API,將瀏覽器 中當前D0M傳遞至Spider(爬蟲中的D0M過濾和存儲程序)。通過篩選機制,判斷D0M內容的合 法性(當一條事件鏈被完整觸發后,頁面會更新到一個固定狀態,比如價格計算器型的頁面 會更新出最終價格,可以據此判斷,事件鏈是否被完整觸發,因為事件觸發不完整時得到的 D0M無實際意義,因此要驗證D0M的合法性),以移除不合法的D0M內容復本。
[0082] 持久化數據。當D0M內容合法時,調用存儲腳本,將D0M內容存儲至MongoDB,實現數 據的持久化。
[0083] 需要說明的是,通過CSS選擇器、HTML選擇器、XPATH表達式等對下一層節點進行動 態擴展,例如采用Javascript方法:document? getElementsByldName(),或CSS選擇器的方 法,這里不再贅述。
[0084]容易理解的是,本實施例在得到每一條路徑對應的D0M內容后,還需要進行合法性 判斷。當一條路徑上的事件鏈被完整觸發后,頁面會更新到一個固定狀態,比如價格計算器 型的頁面會更新出最終價格,可以據此判斷,事件鏈是否被完整觸發,因為事件觸發不完整 時得到的D0M無實際意義,因此要驗證D0M的合法性。合法的D0M內容應該包含所有配類別的 信息及在該配置類別下的配置選項信息,任何配置信息不完整,其它產品信息不全面,及抓 取過程中有可能因為網絡、服務器端、腳本錯誤等情況產生的D0M都應被判定為不合法。應 通過D0M回退,調用瀏覽器對頁面重新渲染,以獲取合法D0M。在驗證D0M內容合法性之后, Selenium(Scheduler)通過Scrapy Engine向瀏覽器發送復制D0M的指令,得到合法D0M內容 的復本。通過存儲腳本將合法D0M內容復本存入MongoDB服務器,以實現數據的持久化。同時 存儲配置組合,并以內容的散列值作為key進行存儲。
[0085]通過上述方法,本實施例的方法實現了云計算數據的抓取,本實施例的方法在實 例站點上的運行結果如下表所示:
[0087]表 1
[0088] 通過實例站點的運行結果可知,傳統爬蟲只能得到RIA頁面的初始D0M(1個),而本 實施例的方法可以獲取更完整的D0M內容(17088/17096)。表1中time時間統計信息表明,本 實施例爬蟲對抓取過的信息不再進行處理,但同時爬蟲運行的大部分時間是消耗在網絡傳 輸上的,除了網絡延時外,本實施例的方法對系統資源的占用非常低。
[0089]以上實施例僅用以說明本發明的技術方案而非對其進行限制,在不背離本發明精 神及其實質的情況下,熟悉本領域的技術人員當可根據本發明作出各種相應的改變和變 形,但這些相應的改變和變形都應屬于本發明所附的權利要求的保護范圍。
【主權項】
1. 一種從RIA頁面中抓取云計算數據的方法,其特征在于,所述從RIA頁面中抓取云計 算數據的方法包括: 將目標RIA頁面抽象為包括至少一個節點樹的頁面模型; 模擬用戶操作對頁面模型中節點對應的事件進行有序觸發,執行事件對應代碼,對頁 面DOM內容進行更新,直到遍歷頁面模型,找出頁面模型中節點樹所包含的路徑集,并存儲 每一條路徑對應的DOM內容。2. 根據權利要求1所述的從RIA頁面中抓取云計算數據的方法,其特征在于,所述目標 RIA頁面包括至少一個配置類別,所述配置類別包括至少一個配置選項,所述將目標RIA頁 面抽象為包括至少一個節點樹的頁面模型,包括: 以目標RIA頁面中的配置類別為節點樹的深度,以配置選項及其對應的事件為節點,將 目標RIA頁面抽象為至少一個節點樹; 將所有節點樹組成為頁面模型。3. 根據權利要求2所述的從RIA頁面中抓取云計算數據的方法,其特征在于,所述遍歷 頁面模型,包括: 從頁面模型對應的節點樹中選取初始節點集,依次對初始節點集中的節點進行遍歷, 直到初始節點集中所有節點遍歷完成。4. 根據權利要求3所述的從RIA頁面中抓取云計算數據的方法,其特征在于,所述模擬 用戶操作對頁面模型中節點對應的事件進行有序觸發,執行事件對應代碼,對頁面DOM內容 進行更新,包括: 步驟1、以從初始節點集中選定的進行遍歷的節點為當前節點; 步驟2、模擬用戶操作觸發當前節點對應的事件; 步驟3、執行所述事件的對應代碼,更新頁面DOM內容; 步驟4、通過選擇器進行動態擴展,獲取擴展的下一層節點; 步驟5、以所述下一層節點中任一節點為當前節點,返回步驟2,直到所述下一層節點中 所有節點遍歷完成; 步驟6、選擇上一層節點中的下一個節點為當前節點,返回步驟2,直到上一層節點中所 有節點遍歷完成。5. 根據權利要求4所述的從RIA頁面中抓取云計算數據的方法,其特征在于,所述模擬 用戶操作觸發當前節點對應的事件,包括: 根據為RIA頁面設置的規則生成各節點對應的事件及相應操作腳本; 判斷當前節點的操作類型,通過抓取引擎調用前端測試工具接口執行對應的操作腳 本,生成瀏覽器控制信號,模擬用戶操作,觸發當前節點對應的事件。6. 根據權利要求4所述的從RIA頁面中抓取云計算數據的方法,其特征在于,所述執行 所述事件的對應代碼,更新頁面DOM內容,包括: 通過抓取引擎調用瀏覽器解析并執行所述事件的對應代碼,所述瀏覽器與服務器進行 異步通信,并返回DOM內容。7. 根據權利要求4所述的從RIA頁面中抓取云計算數據的方法,其特征在于,所述找出 頁面模型中節點樹所包含的路徑集,并存儲每一條路徑對應的DOM內容,包括: 在遍歷頁面模型的過程中,當所述獲取的擴展的下一層節點為空,或達到節點樹的深 度時,判斷找出頁面模型中節點樹的一條路徑,等待目標RIA頁面更新DOM內容; 存儲該條路徑對應的D0M內容。8.根據權利要求7所述的從RIA頁面中抓取云計算數據的方法,其特征在于,所述存儲 該條路徑對應的D0M內容之前,還包括: 判斷D0M內容的合法性,如果不合法則通過D0M回退,獲取合法的D0M內容。
【文檔編號】G06F17/30GK106055714SQ201610538643
【公開日】2016年10月26日
【申請日】2016年7月6日
【發明人】宗曉杰, 張鐵柱, 汪澍
【申請人】浙江工商大學