动态网页抓取(:对两种动态页面采集方法介绍())

优采云 发布时间: 2022-04-13 22:28

  动态网页抓取(:对两种动态页面采集方法介绍())

  两种动态页面采集方法介绍总结:动态页面大多采用后加载技术,即使用脚本语言(如JavaScript)来动态加载内容,而传统的采集器只抓取网页,采集器页面中的脚本代码不会被执行。必须通过浏览器执行该脚本才能获取超链接网址和网页的主要内容。基于此,本文简单介绍两种动态页面采集方法。关键词:动态页面采集方法图中分类号:TP393 文档识别码:A文章号:1673-1875(2009)04-090-01中互联网媒体在内容监控领域,我们关注的是URL地址和网页的主要内容,一般来说,静态页面的主要内容和其中收录的 URL 地址直接采用文本信息和唯一资源标识符 (URL) 的形式。嵌入在页面源文件的 HTML 标签(Tag)中。我们可以通过分析HTML页面提取出对应的静态URL地址和文本内容,从而完成信息采集工作。但是,大多数动态页面使用后处理加载技术,即使用脚本语言(如 JavaScript)来动态加载内容,其中很多内容是稍后加载的。这些页面的主要内容必须经过浏览器解析,才能执行脚本解析超链接网址和网页主体。内容。当前动态页面采集主要有两种方法:第一种方法是利用现有的开源浏览器接口(如Firefox)根据浏览器的输出结果执行采集;第二种方法是利用现有的脚本解释引擎(如Rhino、SpiderMonkey)根据采集信息的需要绑定相关的DOM对象,然后对输出结果执行采集。

  第一种方法,现在比较常用的是Jrex组件。Jrex 是一个Java webbrowser 组件,它封装了Mozilla 的Gecko 库,并为应用程序调用提供了一个java 类库。使用jrex,你可以编写一个java应用程序访问某个页面,然后页面下载完毕,执行javascript后,Jrex浏览器引擎将文档转化为DOM模型,重构html页面,获取相关的URL链接和主要内容。但是,这种方法有一些缺点。使用渲染引擎解析JS脚本,虽然可以获得更接近浏览器结果的解析结果,但是由于使用渲染引擎,资源消耗比较大,性能较差,而且因为是对整个页面的完整解析,所以,提取了大量与文本信息和URL链接无关的信息。第二种方法主要是扩展JS脚本解释引擎的功能。解析网页文件后,形成一棵 DOM 树,然后将 DOM 对象绑定到 JS 解释引擎,最后将 JS 代码交给 JS 解释引擎进行分析。输出。与解析JS脚本的渲染引擎相比,使用JS脚本解释引擎解析JS脚本,自己搭建脚本解析环境的方法更有针对性,执行效率也更快。较少的。采集该方案主要包括四个模块:页面分析模块、JS分析模块、DOM支持模块、文本提取和URL模块。第二种方法主要是扩展JS脚本解释引擎的功能。解析网页文件后,形成一棵 DOM 树,然后将 DOM 对象绑定到 JS 解释引擎,最后将 JS 代码交给 JS 解释引擎进行分析。输出。与解析JS脚本的渲染引擎相比,使用JS脚本解释引擎解析JS脚本,自己搭建脚本解析环境的方法更有针对性,执行效率也更快。较少的。采集该方案主要包括四个模块:页面分析模块、JS分析模块、DOM支持模块、文本提取和URL模块。第二种方法主要是扩展JS脚本解释引擎的功能。解析网页文件后,形成一棵 DOM 树,然后将 DOM 对象绑定到 JS 解释引擎,最后将 JS 代码交给 JS 解释引擎进行分析。输出。与解析JS脚本的渲染引擎相比,使用JS脚本解释引擎解析JS脚本,自行搭建脚本解析环境的方法更有针对性,执行效率也更快。较少的。采集该方案主要包括四个模块:页面分析模块、JS分析模块、DOM支持模块、文本提取和URL模块。然后将DOM对象绑定到JS解释引擎,最后将JS代码交给JS解释引擎分析。输出。与解析JS脚本的渲染引擎相比,使用JS脚本解释引擎解析JS脚本,自己搭建脚本解析环境的方法更有针对性,执行效率也更快。较少的。采集该方案主要包括四个模块:页面分析模块、JS分析模块、DOM支持模块、文本提取和URL模块。然后将DOM对象绑定到JS解释引擎,最后将JS代码交给JS解释引擎分析。输出。与解析JS脚本的渲染引擎相比,使用JS脚本解释引擎解析JS脚本,自己搭建脚本解析环境的方法更有针对性,执行效率也更快。较少的。采集该方案主要包括四个模块:页面分析模块、JS分析模块、DOM支持模块、文本提取和URL模块。并且自己搭建脚本解析环境的方法更有针对性,执行效率也更快。较少的。采集该方案主要包括四个模块:页面分析模块、JS分析模块、DOM支持模块、文本提取和URL模块。并且自己搭建脚本解析环境的方法更有针对性,执行效率也更快。较少的。采集该方案主要包括四个模块:页面分析模块、JS分析模块、DOM支持模块、文本提取和URL模块。

  首先,通过HTTP请求获取需要爬取的页面。网页分析模块主要分析页面元素信息,形成DOM树,遍历DOM树,提取JS脚本代码,然后通过JS解析模块执行上一个模块得到的数据。获取服务器返回的请求内容的JS脚本代码。对于浏览器内置DOM对象的JS代码,通过DOM支持模块将DOM对象绑定到JS解释引擎,然后解析JS。最后,URL提取模块将前一个模块的结果重新组合生成新的页面内容,并提取页面中的URL和文本内容。页面分析模块主要使用NekoHTML和Xerces对网页进行解析,形成DOM树,通过遍历DOM树提取JS代码。DOM 树是 HTML 文档和 XML 文档的应用程序接口。W3C 提供了精确的和语言无关的 DOM 接口规范,任何语言都可以用来实现 DOM 接口。作为 W3C 规范,DOM 提供了一个标准的编程接口,可以应用于不同的平台和不同的编程语言。它定义了文档的逻辑结构,将文档视为一棵树,文档的每一部分都是树上的一个节点,可以对节点进行各种遍历、查询、删除、修改等操作,并提供访问方法和操纵节点。这样,利用DOM,我们可以动态地创建文档,遍历文档结构,添加和修改文档内容,改变文档的显示方式。

  因此,要在系统中实现DOM接口,就必须按照DOM规范将HTML文档构造成一些由节点组成的DOM树。根据构建的DOM树,遍历网页中的每个节点,找到标签对,得到所有脚本相关的代码。对于互联网媒体内容监控系统来说,网页中的外部JS文件一般都是广告或排版等无用信息,所以这里我们丢弃外部JS文件,不对其进行处理,以增加监控系统的有效性和针对性。DOM 支持模块的主要工作是将 DOM 绑定到 JavaScript。由于 JS 解释引擎 Rhino 只能支持 JS 脚本语言的内置对象,而不能识别和执行浏览器的 DOM 对象,需要先将 DOM 绑定到 JavaScript,并在 JavaScript 引擎中实现 DOM 接口。在互联网媒体内容监控系统中,由于我们主要提取网页中的文本信息和URL地址,所以不需要绑定和支持所有的DOM对象,只需要支持相关的DOM对象即可。经过分析发现,网页中收录文本信息和URL地址的主要DOM对象包括window、document、navigator等对象。另外,由于ajax技术的普及,很多Blog网站和论坛都使用基于Ajax技术的文本内容信息来调用,因此,我们也应该支持XmlHttpRequest对象。由于我们主要提取网页中的文本信息和URL地址,所以不需要绑定和支持所有的DOM对象,只需要支持相关的DOM对象即可。经过分析发现,网页中收录文本信息和URL地址的主要DOM对象包括window、document、navigator等对象。另外,由于ajax技术的普及,很多Blog网站和论坛都使用基于Ajax技术的文本内容信息来调用,因此,我们也应该支持XmlHttpRequest对象。由于我们主要提取网页中的文本信息和URL地址,所以不需要绑定和支持所有的DOM对象,只需要支持相关的DOM对象即可。经过分析发现,网页中收录文本信息和URL地址的主要DOM对象包括window、document、navigator等对象。另外,由于ajax技术的普及,很多Blog网站和论坛都使用基于Ajax技术的文本内容信息来调用,因此,我们也应该支持XmlHttpRequest对象。导航器和其他对象。另外,由于ajax技术的普及,很多Blog网站和论坛都使用基于Ajax技术的文本内容信息来调用,因此,我们也应该支持XmlHttpRequest对象。导航器和其他对象。另外,由于ajax技术的普及,很多Blog网站和论坛都使用基于Ajax技术的文本内容信息来调用,因此,我们也应该支持XmlHttpRequest对象。

  由于Rhino已经实*敏*感*词*晓鸥. 基于Rhino的JavaScript动态页面解析研究与实现[J]. 计算机技术与发展, 2008, (2): 22-24 [3] 熊建英. 纯C#技术下的HTML页面动态生成的实现[J]. 计算机与现代化, 2007, (4): 33-36

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线