Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101013
  • 博文数量: 41
  • 博客积分: 2016
  • 博客等级: 大尉
  • 技术积分: 560
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-30 17:40
文章分类
文章存档

2011年(7)

2010年(5)

2009年(19)

2008年(10)

我的朋友
最近访客

分类: 系统运维

2009-11-28 16:55:35

考察的实现原理可以看出:MetaSeeker使用XPath和XSLT分析网页DOM并提取网页信息,虽然也可以使用一些字符串处理函数, 但是总体上说,与使用正则表达式分析HTML文档的方法相比区别十分明显。基于DOM的提取能够比较容易地提取AJAX动态网页信息,因为,无论DOM的 内容来自于静态网页、服务器动态网页(例如,PHP、ASP、JSP等)还是浏览器端动态网页(例如,Javascript/AJAX),只要内容需要 DOM进行展现,都可以使用一致的方法进行提取。

然而,Javascript编程语言的逻辑表述能力远远高于HTML,所以,存在各种各样的AJAX动态网页信息生成方式,使网页信息提取过程复杂 化了,不可能一下子开发出一个一劳永逸的信息提取软件来。例如,MetaSeeker早在V1.0版本就能够提取很多Javascript生成的内容,比 方说,提取Google AdSense广告用于商业情报挖掘,但是,不能准确提取QQ群聊天记录,虽然都是AJAX/Javascript动态生成的网页内容,而且都通过DOM 进行展现,但是,构建DOM结构的方式和时机不同。例如,Google广告的Javascript代码在加载HTML文档时就执行,执行完才算完全加载了 HTML文档(虽然Google广告放在单独的IFRAME/FRAME框架中与主网页HTML异步加载,但是MetaSeeker等待整个页面的 load事件),而QQ群的Javascript代码是在加载完HTML文档后,很可能在onload()事件处理函数中构建DOM结构,所以网页信息提 取时机不能通过监视load事件来确定。甚至有些网页还会使用Javascript的setTimeout或者setInterval函数自动地周期性刷 新网页内容,也影响到网页信息提取策略。同时,这些情形很容易发展出衍生情形来,例如,假设某段代码在加载HTML文档过程中执行,如果使用同步的 XMLHttpRequest与服务器通信,是一种情况,如果使用异步的XMLHttpRequest,就会衍生出另外一种情形,这进一步增加了网页信息 提取的复杂性。

进行了增强,上述情形都能够处理,而且,后续版本还会持续增强以应对其它新发现的AJAX编程模式,详细使用方法和原理介绍参见用户手册#怎样提取AJAX网页信息

阅读(845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~