易截截图软件、单文件、免安装、纯绿色、仅160KB

增强AJAX/Javascript/JS网页文字抓取能力


本文是对《AJAX动态网页信息提取原理》
的补充,前文总结了两种AJAX网页文字的抓取方法:
网页文字在加载HTML文档(document)的时候用Javascript代码获取和展现,此Javascript代码在发送load事件之前运行,那么接收到load事件表示所有的内容都加载完了
网页文字在加载完HTML文档(document)后在某个时刻用Javascript代码获取和展现,此Javascript代码在发送load事件之后运行,那么接收到load事件并不表示表示所有的内容都加载完了,需要特别的判别机制。
上述两种情况实际上没有考虑AJAX的一项重要特性:异步加载。也就是HTML网页文字内容并不是与HTML文档同步加载的,而是在特定情形下(例
如,用户点击超链接)异步地从服务器上获取并展现的。此时,不能使用load事件触发网页文字抓取。DataScraper从V4.2.0B57版本开始
进行了增强,能够抓取异步加载的内容。
因为没有load事件触发抓取操作,要进行合理配置,告知DataScraper不要等待load事件。如果是周期性自动抓取网页文字
,通过设置排期指令文件

waitOnload参数就可以达到该目的,然而,在V4.2.0B57之前的版本,所有手工启动的抓取都是waitOnload=true,也就是等待
load事件,提取异步加载内容时很可能出现:Timeout to load the page
错误。从V4.2.0B57版本开始,增加了DataScraper菜单:配置
->等待load
,这是一个checkbox菜单,将钩去掉就不再等待load事件。
例如,MetaCamp服务器上有个主题:demo_js_paging_sohu,用于抓取sohu名人博客

相关评论,评论内容是AJAX动态生成的,当名人博客很受关注时,会有很多评论,这些评论分成多页显示,当用户点击“下一页”超链接时,并没有加载一个新
的HTML网页,而是异步从网站上获取下一页评论内容,动态修改当前网页的DOM结构进行展现,因此,没有页面加载就没有load事件。要翻页提取这些评
论,需要设置waitOnload=false,否则会遇到Timeout to load the page 错误。
注意
:异步加载的内容什么时候加载完了,没有一个确切的时间点,人阅读网页时,根据上下文可以理解并判断是否已经将异步内容加载上
了,但是计算机程序不能理解语义,DataScraper尽量使用一种智能方法加以判断,然而仍然有误判的可能,主要发生在目标网站的服务质量很不稳定的
时候,异步加载内容并进行显示刷新的过程是时断时续的,而不是持续的均匀地进行,此时,DataScraper就会出现误判。


相关文档:

在JavaScript中实现高效的StringBuffer

JavaScript中的String是只读的,所以每次对String变量的操作都会在内存中产生一个零时变量,如果要对字符串进行大量的重复操作,性能和效率都会很低下,因此常用数组的方法操作字符串,即先把字符串都存储在数组中,然后使用join()方法连接字符串。
当然可以把这种方法再演变一下,在JavaScript中模拟StringBuffer类。
看 ......

2009 12 25传智播客——JavaScript:JQuery


 
使用过AJAX技术的人都知道大名鼎鼎的JQuery。虽然我来学习之前有看过AJAX的视频,但那时对WEB应用这个东西还比较模糊,不清楚HTML、JSP与Servlet是怎么工作的,甚至不知道JQuery包装的是什么东西。今日的学习再结合昨天的JavaScriptDOM的内容,让我对此十分清晰。JQuery原则:“write less, do more.” ......

javascript 判断中文字符长度

<script language="javascript">   
String.prototype.gblen = function() {   
    var len = 0;   
    for (var i=0; i<this.length; i++) {   
        if (this.charCodeAt(i)>127 || this.charCodeAt(i) ......

ASP.NET AJAX调用WebService

如何在客户端直接调用WebService中的方法?
这里结合经验自己写一写
1.首先新建一个 ASP.NET AJAX-Enabled Web Site,这样系统为我们自动配置好了环境,这主要体现在Web.config这个文件上,如果已有网站不是ASP.NET AJAX-Enabled Web Site也可以对照修改下Web.config,也可以达到相同的效果。
2.新建一个web服务,WebSer ......

javascript 显示隐藏表的一行

<a href='javascript:add();'>添加</a>
<a href='javascript:del();'>删除</a>
<table width=300 id=tbl>
<tr style='display:none;'><td>11111111111111</td></tr>
<tr style='display:none;'><td>22222222222222</td></tr>
<tr s ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号