CN106055714A - 一种从ria页面中抓取云计算数据的方法 - Google Patents
一种从ria页面中抓取云计算数据的方法 Download PDFInfo
- Publication number
- CN106055714A CN106055714A CN201610538643.0A CN201610538643A CN106055714A CN 106055714 A CN106055714 A CN 106055714A CN 201610538643 A CN201610538643 A CN 201610538643A CN 106055714 A CN106055714 A CN 106055714A
- Authority
- CN
- China
- Prior art keywords
- page
- node
- ria
- event
- dom
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
Abstract
本发明公开了一种从RIA页面中抓取云计算数据的方法,先将目标RIA页面抽象为包括至少一个节点树的页面模型,然后模拟用户操作对页面模型中节点对应的事件进行有序触发,执行事件对应代码,对页面DOM内容进行更新,直到遍历页面模型,找出页面模型中节点树所包含的路径集,并存储每一条路径对应的DOM内容。本发明的方法通过自动触发节点对应的事件,并执行事件的对应代码,来更新页面DOM内容,并动态扩展下一层节点。实现对RIA页面云计算数据的抓取,该方法的抓取能力很强,对系统资源的占用非常低,具有很好的应用前景。
Description
技术领域
本发明属于网络爬虫技术领域,尤其涉及一种从RIA页面中抓取云计算数据的方法。
背景技术
随着云计算行业的发展,成熟的云计算产品在市场上层出不穷,云计算行业的兴盛,导致云计算产品的信息量在互联网上迅猛地增长,并且这些信息分散在各个云计算厂商各自的服务器上。而云计算产品的数据是进行该领域管理和决策过程的关键,如何获取分散在互联网上的云计算产品的数据,就是亟待解决的重要问题。
但是,伴随着大量云计算产品的涌入市场,云计算产品的数据也在快速增长,要获取这些数据,面临着许多困难。例如:
海量的云计算产品数据散落在数量众多的云计算厂商的服务器上,并且还在不断增长。有分析人士指出,仅在我国,未来8年内,云计算产业在市场上,至少会增长20倍。众多的云计算厂商在云计算的不同细分领域,不断地与时俱进、推陈出新,新的产品会不断出现,大量数据会持续生成。而云计算的产品特性如服务化、按需使用等,令云计算产品无法像传统工业品哪样出现在统一的第三方市场中,所以云计算产品的数据也就呈分散的状态分布于各云计算厂商各自的服务器上。由此带来的问题是,对于云计算产品数据的获取,应该通过自动化的方式进行。
云计算产品的信息以新型呈现技术在互联网上向用户展示,这令其大部分数据都隐藏在Deep Web中,获取数据十分困难。随着人们对产品的个性化需求越来越高,商务领域发生着深刻的变化,在电子商务领域,除了所熟知的B2B、B2C、C2C等模式外,也在这变化的浪潮中催生出了C2B等崭新的业务模式。新的模式和消费者的需求带来了厂商和消费者交互方式的变化,产品不再以单纯的展示方式在互联网上呈现给用户,而是将产品页面变成一个RIA,提供大量可定制的选项供用户自己进行定制。如戴尔公司的个人电脑产品就可以让用户定制包括内存容量、硬盘大小、CPU型号、彩壳颜色等诸多选项在内的产品参数,为用户提供满足他们个性化需求的产品。云计算产品作为一种高度可定制的产品,从在市场上出现开始就采用了这种新的方式呈现给用户。以阿里云主机的产品页面为例,它就向用户提供了地域、可用区、CPU、内存等诸多产品参数的可选配置,供用户定制自己适合自己的产品。
RIA(Rich Internet Application,富互联网应用系统)技术允许我们在因特网上以一种像使用Web一样简单的方式来部署富客户端程序。这是一个用户接口,它比用HTML能实现的接口更加健壮、反应更加灵敏和更具有令人感兴趣的可视化特性。但是这种新RIA模式的呈现方式,给以搜索引擎和产品对比和推荐等服务为主要业务的和应用带来了巨大的挑战。由于新的RIA的呈现方式,要求产品页面在前端展现上采用大量包括Ajax、jQuery等新的脚本技术,使得传统的数据抓取技术无法获取页面中的有用数据,获取不到这些数据就无法编制索引从而进行检索,更不要说进行产品的对比和推荐了。
发明内容
本发明的目的是提供一种从RIA页面中抓取云计算数据的方法,克服了背景技术中列出的缺陷,能够抓取RIA页面中的云计算数据。
为了实现上述目的,本发明技术方案如下:
一种从RIA页面中抓取云计算数据的方法,所述从RIA页面中抓取云计算数据的方法包括:
将目标RIA页面抽象为包括至少一个节点树的页面模型;
模拟用户操作对页面模型中节点对应的事件进行有序触发,执行事件对应代码,对页面DOM内容进行更新,直到遍历页面模型,找出页面模型中节点树所包含的路径集,并存储每一条路径对应的DOM内容。
所述目标RIA页面包括至少一个配置类别,所述配置类别包括至少一个配置选项,所述将目标RIA页面抽象为包括至少一个节点树的页面模型,包括:
以目标RIA页面中的配置类别为节点树的深度,以配置选项及其对应的事件为节点,将目标RIA页面抽象为至少一个节点树;
将所有节点树组成为页面模型。
进一步地,所述遍历页面模型,包括:
从页面模型对应的节点树中选取初始节点集,依次对初始节点集中的节点进行遍历,直到初始节点集中所有节点遍历完成。
进一步地,所述模拟用户操作对页面模型中节点对应的事件进行有序触发,执行事件对应代码,对页面DOM内容进行更新,包括:
步骤1、以从初始节点集中选定的进行遍历的节点为当前节点;
步骤2、模拟用户操作触发当前节点对应的事件;
步骤3、执行所述事件的对应代码,更新页面DOM内容;
步骤4、通过选择器进行动态扩展,获取扩展的下一层节点;
步骤5、以所述下一层节点中任一节点为当前节点,返回步骤2,直到所述下一层节点中所有节点遍历完成;
步骤6、选择上一层节点中的下一个节点为当前节点,返回步骤2,直到上一层节点中所有节点遍历完成。
本发明所述模拟用户操作触发当前节点对应的事件,包括:
根据为RIA页面设置的规则生成各节点对应的事件及相应操作脚本;
判断当前节点的操作类型,通过抓取引擎调用前端测试工具接口执行对应的操作脚本,生成浏览器控制信号,模拟用户操作,触发当前节点对应的事件。
本发明所述执行所述事件的对应代码,更新页面DOM内容,包括:
通过抓取引擎调用浏览器解析并执行所述事件的对应代码,所述浏览器与服务器进行异步通信,并返回DOM内容。
进一步地,所述找出页面模型中节点树所包含的路径集,并存储每一条路径对应的DOM内容,包括:
在遍历页面模型的过程中,当所述获取的扩展的下一层节点为空,或达到节点树的深度时,判断找出页面模型中节点树的一条路径,等待目标RIA页面更新DOM内容;
存储该条路径对应的DOM内容。
进一步地,所述存储该条路径对应的DOM内容之前,还包括:
判断DOM内容的合法性,如果不合法则通过DOM回退,获取合法的DOM内容。
本发明提出了一种从RIA页面中抓取云计算数据的方法,综合页面建模方法、Ajax抓取方法、脚本解析引擎、DOM操作方法和用户事件触发方法,并构建抓取引擎和框架,实现对数据的抓取。本发明通过自动触发节点对应的事件,并执行事件的对应代码,来更新页面DOM内容,并动态扩展下一层节点。实现对RIA页面云计算数据的抓取,该方法的抓取能力很强,对系统资源的占用非常低,具有很好的应用前景。
附图说明
图1为本发明从RIA页面中抓取云计算数据的方法流程图;
图2为本发明实施例节点树示意图;
图3为本发明抓取云计算数据的系统结构框架;
图4为本发明实施例抓取过程流程。
具体实施方式
下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。
现有技术中Ajax等前端技术已经大量应用,研究抓取采用了Ajax技术的页面信息的方法也数量众多,这些传统网络爬虫抓取方法大多无法摆脱以获取URL为目的的导向,不适用于抓取云计算产品RIA模式页面内的可定制产品数据;它们将抓取的目标页面看作有限状态自动机,也无法对云计算产品RIA模式页面进行合理建模;同时这些方法在处理RIA页面中大量的脚本和事件时无法提供成熟可靠的方案。
如图1所示,本实施例一种从RIA页面中抓取云计算数据的方法,用于从云计算产品RIA页面中抓取可高度定制的云计算产品的数据。在本实施例中,实现该方法的主体为网络爬虫程序Spider。该方法包括:
步骤S1、将目标RIA页面抽象为包括至少一个节点树的页面模型。
可定制化云计算产品的RIA页面有一个显著的特点,为了支持定制性,页面中加入了大量配置选项,这些配置选项与页面事件绑定,通过用户操作的有序组合来触发事件,以得到一个配置组合的信息。
例如对一个品牌电脑的选型,其可以配置的配置类别包括型号、CPU、内存、硬盘等,即可以对型号、CPU、内存、硬盘等进行依次配置。每个配置类别对应多个配置选项,如型号的配置选项包括型号1、型号2、型号3等,CPU的配置选项包括1.3G双核、2.7G双核等,内存的配置选项包括3G、4G、8G等,硬盘的配置选项包括的180G、350G等。这里仅以电脑的选型为例,配置选项也仅仅列出了一些常用的数据。容易理解的是,在实际的应用中,可以选择的配置类别可以更多或更少,其具有的配置选项也可以更多或更少。用户通过有序的操作,分别从型号、CPU、内存、硬盘等配置类别中选择对应的配置选项,即可完成选型。
本实施例将这些配置选项及绑定于其上的事件视为一个节点,整个RIA页面就可以被看作一棵或多棵由这些节点组成的节点树的集合,页面模型用M={T1,T1,…,Tn}表示,其中T1到Tn为模型中的节点树。即以目标RIA页面中的配置类别为节点树的深度,以配置选项及其对应的事件为节点,将目标RIA页面抽象为至少一个节点树,将所有节点树组成为页面模型。
一棵典型的节点树结构如图2所示,为由配置选项和其对应事件组成节点所组成的树。每个节点表示已经选择好的配置选项及其对应事件,例如图2中L11表示型号为型号1;L21表示CPU为1.3G双核,L22表示CPU为2.7G双核;L31表示内存为3G,L32表示内存为4G;L41表示硬盘为180G,L42表示硬盘为350G。
可见,在图2的节点树中,L11是根节点,为第一层节点,依次第二层节点包括L21、L22,第三层节点包括L31、L32、L33、L34,第四层节点包括L41、L42、L43、L44、L45、L46。不同的根节点对应有不同的节点树,所有的节点树组成整个RIA页面模型。在本实施例中配置类别决定了节点树的层次,即节点树的深度,而根节点的多少决定了节点树的数量。本实施例中假设有n个节点树,则页面模型用M={T1,T1,…,Tn}表示,其中T1到Tn为模型中的节点树。
步骤S2、模拟用户操作对页面模型中节点对应的事件进行有序触发,执行事件对应代码,对页面DOM内容进行更新,直到遍历页面模型,找出页面模型中节点树所包含的路径集,并存储每一条路径对应的DOM内容。
由页面模型可得,假设配置类别有D个,则节点树的深度为D,遍历页面模型就是要找出从根节点到末端节点的所有路径,即页面模型的遍历过程可以看作是找出RIA页面所有节点树中深度为D的路径集。如果用集合ri表示树Ti的路径集,那么所有树中深度为D的路径集表示为R={r1,r1,…,rn}。
由于页面中的节点之间存在依赖关系,因此遍历过程中一个很重要的任务是初始节点集的选取。本实施例通过从页面模型中指定或随机选择出一些节点来作为初始节点集,例如选择每个节点树的根节点作为初始节点集,依次对初始节点集中的节点进行遍历,直到初始节点集中所有节点遍历完成。这样通过从根节点开始,可以遍历到每一个节点树,完成对页面模型的遍历。
以本实施例品牌电脑的选型为例,RIA页面中第一层节点(根节点)为所有可供选择的型号,将每个型号对应的节点选取为初始节点,开始遍历。需要说明的是,初始节点集的选取,还可以只选择其中的一个树的根节点,根据树与树之间的动态扩展关系,来找到下一个树来进行遍历,这里不再赘述。例如根据型号对应的配置选项,就可以找到所有的根节点。
本实施例从页面模型对应的节点树中选取初始节点集,触发初始节点集中节点对应的事件,动态选取扩展的下一层节点以遍历页面模型。
其中,对初始节点集中任一节点进行遍历,其过程如下:
步骤1、以从初始节点集中选定的进行遍历的节点为当前节点;
步骤2、模拟用户操作触发当前节点对应的事件;
步骤3、执行所述事件的对应代码,更新页面DOM内容;
步骤4、通过选择器进行动态扩展,获取扩展的下一层节点;
步骤5、以所述下一层节点中任一节点为当前节点,返回步骤2,直到所述下一层节点中所有节点遍历完成;
步骤6、选择上一层节点中的下一个节点为当前节点,返回步骤2,直到上一层节点中所有节点遍历完成。
具体地,还是以图2的节点树为例,第一层节点为L11,第二层节点包括L21、L22,第三层节点包括L31、L32、L33、L34,第四层节点包括L41、L42、L43、L44、L45、L46。
本实施例以L11为例,遍历过程如下:
触发L11对应的事件;
执行L11对应的事件的代码,通过CSS选择器、HTML选择器、XPATH表达式等对下一层节点进行动态扩展,找到扩展的节点如L21、L22。
分别对L21、L22进行遍历:
对于L21,执行其对应的事件,并找到其对应的扩展的节点L31、L32、L33,然后对L31、L32、L33进行遍历,执行L31、L32、L33各自对应的事件,找到L31对应的扩展的节点L41、L42,并执行L41、L42对应的事件,找到L32对应的扩展的节点L43、L44,并执行L41、L42对应的事件,找到L33对应的扩展的节点L45,并执行L45对应的事件;
对于L22,执行其对应的事件,并找到其对应的扩展的节点L34,然后对L34进行遍历,执行L34对应的事件,找到L34对应的扩展的节点L46,并执行L46对应的事件。
例如假设初始节点集为(L11,L12,L13,L14),则在L11遍历完成后,返回初始节点集,删除节点L11,对剩余的其他节点进行遍历,遍历的过程与L11相同,这里不再赘述。
容易理解的是,在遍历时,当深度为j层的节点事件均触发完成后,返回j-1层,重置深度,触发该j-1层节点集中的下一个节点。依次类推,直到初始节点集中的节点对应的事件全部触发完毕,方法结束。
本实施例网络爬虫程序Spider抓取云计算数据时的架构如图3所示,。Script为通过规则(Rules)生成的事件操作脚本,Scheduler(Selenium-Webdrive)为前端测试工具,Scrapy Engine为通用抓取引擎,middleware为中间设备,DOM storage为DOM存储设备,WebServer为服务器,Browser为浏览器,Script Engine\DOM Builder为现有浏览器的一部分。
本实施例方法的具体抓取过程如图4所示,在初始化爬虫程序和前端测试工具时,读取目标RIA页面的URL,以及与URL关联的Rule规则(为RIA页面设置的规则),根据Rule规则生成各节点对应的事件(各页面元素选择器)及相应操作脚本Script,将URL压入浏览器并启动。
在初始页面DOM加载完毕后,确定或重置抓取深度D,开始进行云计算数据的抓取。其中,触发节点对应的事件,本实施例通过Selenium等前端测试工具,模拟用户操作实现节点事件的触发。根据为RIA页面设置的规则生成各节点对应的事件及相应操作脚本,只需判断节点的操作类型,就可以通过抓取引擎Scrapy Engine调用前端测试工具接口执行对应的操作脚本,生成浏览器控制信号,模拟用户操作,触发当前节点对应的事件。具体方法是,根Rule定义操作类型如点击、拖放、选择等并编写相应的操作的Selenium脚本Script。为了实现自动化抓取,在通用抓取引擎Scrapy的基础上,绑定前端测试工具接口Selenium API,在Scrapy Engine的控制下,调用前端测试工具Selenium-Webdrive来执行操作脚本,Selenium-Webdrive根据Script的内容,生成浏览器控制信号,模拟用户事件的触发,可以进行如点击(Click)、拖放(Drag&Drop)、选择(Select)等操作,这个过程中涉及的Web请求会由Spider记录并交由浏览器发起请求和接收响应。
节点的事件被触发后,该事件对应的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。
本实施例在一个初始节点被触发后,需要动态选取扩展的节点以进行遍历。在动态选取扩展的节点时,为了保证正确地选择扩展的节点,在触发某层某个节点的事件后,等待浏览器完成与服务器的异步通信,并更新完DOM内容后再进行下一层节点的选取。这主要是为了防止事件的Javascript代码对下一层节点对应的DOM内容进行更新,而引发的节点选择过时的问题。
本实施例在DOM更新后通过CSS选择器、HTML选择器、XPATH表达式等对下一层节点进行选择,寻找出扩展的节点以进行下一步的遍历。在发现扩展的节点后,对发现的扩展的节点逐级向下遍历,直到到达最后一层节点。在下一层节点遍历完成后,返回到上一层没有遍历的节点继续遍历。在该初始节点对应的节点树被遍历完毕,选择下一个初始节点继续进行遍历。
通过上述遍历过程,可以找到页面模型中的路径集,例如路径L11-L21-L32-L44,L11-L21-L31-L41等,在一条路径遍历后,返回并存储每一条路径对应的DOM内容。
其中,DOM(文档对象模型document object model)内容,用来表示浏览器上的整个文档对象及其层次结构。
即在遍历过程中,每当找出一条路径时(这一路径上的所有节点的事件均触发并执行,DOM内容更新完毕),就将此时的DOM存储起来,具体步骤如下:
在遍历页面模型的过程中,当所述获取的扩展的下一层节点为空,或达到节点树的深度时,判断找出页面模型中节点树的一条路径,等待目标RIA页面更新DOM内容;
存储该条路径对应的DOM内容。
本实施例判断找出页面模型中节点树的一条路径,即判断遍历是否到达路径末端。通过设置路径深度D或查看下一层节点的个数来判断,每选取一次扩展的下一层节点,就将当前路径深度j加1,当当前深度j等于D或扩展的下一层节点为空时到达路径末端,等待浏览器更新DOM内容,直到DOM不再发生变化。
当到达路径末端时,从浏览器获取当前DOM内容。通过调用浏览器的API,将浏览器中当前DOM传递至Spider(爬虫中的DOM过滤和存储程序)。通过筛选机制,判断DOM内容的合法性(当一条事件链被完整触发后,页面会更新到一个固定状态,比如价格计算器型的页面会更新出最终价格,可以据此判断,事件链是否被完整触发,因为事件触发不完整时得到的DOM无实际意义,因此要验证DOM的合法性),以移除不合法的DOM内容复本。
持久化数据。当DOM内容合法时,调用存储脚本,将DOM内容存储至MongoDB,实现数据的持久化。
需要说明的是,通过CSS选择器、HTML选择器、XPATH表达式等对下一层节点进行动态扩展,例如采用Javascript方法:document.getElementsByIdName(),或CSS选择器的方法,这里不再赘述。
容易理解的是,本实施例在得到每一条路径对应的DOM内容后,还需要进行合法性判断。当一条路径上的事件链被完整触发后,页面会更新到一个固定状态,比如价格计算器型的页面会更新出最终价格,可以据此判断,事件链是否被完整触发,因为事件触发不完整时得到的DOM无实际意义,因此要验证DOM的合法性。合法的DOM内容应该包含所有配类别的信息及在该配置类别下的配置选项信息,任何配置信息不完整,其它产品信息不全面,及抓取过程中有可能因为网络、服务器端、脚本错误等情况产生的DOM都应被判定为不合法。应通过DOM回退,调用浏览器对页面重新渲染,以获取合法DOM。在验证DOM内容合法性之后,Selenium(Scheduler)通过Scrapy Engine向浏览器发送复制DOM的指令,得到合法DOM内容的复本。通过存储脚本将合法DOM内容复本存入MongoDB服务器,以实现数据的持久化。同时存储配置组合,并以内容的散列值作为key进行存储。
通过上述方法,本实施例的方法实现了云计算数据的抓取,本实施例的方法在实例站点上的运行结果如下表所示:
表1
通过实例站点的运行结果可知,传统爬虫只能得到RIA页面的初始DOM(1个),而本实施例的方法可以获取更完整的DOM内容(17088/17096)。表1中time时间统计信息表明,本实施例爬虫对抓取过的信息不再进行处理,但同时爬虫运行的大部分时间是消耗在网络传输上的,除了网络延时外,本实施例的方法对系统资源的占用非常低。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
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内容;
存储该条路径对应的DOM内容。
8.根据权利要求7所述的从RIA页面中抓取云计算数据的方法,其特征在于,所述存储该条路径对应的DOM内容之前,还包括:
判断DOM内容的合法性,如果不合法则通过DOM回退,获取合法的DOM内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610538643.0A CN106055714A (zh) | 2016-07-06 | 2016-07-06 | 一种从ria页面中抓取云计算数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610538643.0A CN106055714A (zh) | 2016-07-06 | 2016-07-06 | 一种从ria页面中抓取云计算数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106055714A true CN106055714A (zh) | 2016-10-26 |
Family
ID=57185160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610538643.0A Pending CN106055714A (zh) | 2016-07-06 | 2016-07-06 | 一种从ria页面中抓取云计算数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106055714A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991188A (zh) * | 2017-04-11 | 2017-07-28 | 焦点科技股份有限公司 | 一种高效的互联网动态数据自动筛选与抓取方法及系统 |
CN107944055A (zh) * | 2017-12-22 | 2018-04-20 | 成都优易数据有限公司 | 一种解决Web证书认证的爬虫方法 |
CN109542553A (zh) * | 2018-10-26 | 2019-03-29 | 北京慧流科技有限公司 | 用户界面ui元素的信息抓取方法及装置、及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120173866A1 (en) * | 2010-12-31 | 2012-07-05 | International Business Machines Corporation | System for securing virtual machine disks on a remote shared storage subsystem |
-
2016
- 2016-07-06 CN CN201610538643.0A patent/CN106055714A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120173866A1 (en) * | 2010-12-31 | 2012-07-05 | International Business Machines Corporation | System for securing virtual machine disks on a remote shared storage subsystem |
Non-Patent Citations (1)
Title |
---|
汪澍: "支持云计算产品RIA模式页面数据抓取的模型和策略研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991188A (zh) * | 2017-04-11 | 2017-07-28 | 焦点科技股份有限公司 | 一种高效的互联网动态数据自动筛选与抓取方法及系统 |
CN107944055A (zh) * | 2017-12-22 | 2018-04-20 | 成都优易数据有限公司 | 一种解决Web证书认证的爬虫方法 |
CN109542553A (zh) * | 2018-10-26 | 2019-03-29 | 北京慧流科技有限公司 | 用户界面ui元素的信息抓取方法及装置、及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104412265B (zh) | 更新用于促进应用搜索的搜索索引 | |
US20170242934A1 (en) | Methods for integrating semantic search, query, and analysis and devices thereof | |
CN107783993A (zh) | 数据的存储方法和装置 | |
CN108885627A (zh) | 向远程客户端提供查询结果数据的查询即服务系统 | |
JP2016536725A (ja) | ユーザ行動の特徴を抽出して推奨を個人化する方法及びシステム | |
Wu | Service Computing: Concept, Method and Technology | |
CN102054004A (zh) | 一种网页推荐方法和装置 | |
TW201250492A (en) | Method and system of extracting web page information | |
CN109033234A (zh) | 一种基于状态更新传播的流式图计算方法及系统 | |
CN103246661A (zh) | 可视化用户行为收集系统及其方法 | |
CN109657121A (zh) | 一种基于网络爬虫的Web页面信息采集方法及装置 | |
Roy Chowdhury et al. | Complementary assistance mechanisms for end user mashup composition | |
US20160364379A1 (en) | Web-based influence system and method | |
CN106055714A (zh) | 一种从ria页面中抓取云计算数据的方法 | |
CN109977312A (zh) | 一种基于内容标签的知识库推荐系统 | |
CN104156431B (zh) | 一种基于实体图社团结构的rdf关键词查询方法 | |
CN106021391B (zh) | 基于Storm的产品评论信息实时采集方法 | |
Ritter | From network mining to large scale business networks | |
CN102637182A (zh) | Web社会网络核心用户信息交互演化分析方法 | |
Ivanchikj et al. | Modeling microservice conversations with restalk | |
CN108352032A (zh) | 用于返回优先化内容的系统和方法 | |
CN103077210B (zh) | 一种基于云计算的数据获取方法及系统 | |
Setayesh et al. | Presentation of an Extended Version of the PageRank Algorithm to Rank Web Pages Inspired by Ant Colony Algorithm | |
Dargham et al. | FSM behavioral modeling approach for hypermedia web applications: FBM-HWA approach | |
Herder et al. | Interactive web usage mining with the navigation visualizer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20161026 |