网页抓取JAVASCRIPT处理

在抓取网页过程中,很多网页内容都预先存储到JAVASCRIPT变量中,如果仅通过SUBSTRING 进行截取分析,效率慢,错误率多。

如何才能更好的解决呢?用MSScriptControl

 

在C#中,我们也可以通过Com组件来执行一段javascript代码。

下面的代码展示了如何用MSScriptControl 组件执行一段数学表达式:

   MSScriptControl.ScriptControlClass sc = new MSScriptControl.ScriptControlClass();
   sc.Language = "javascript";
   object obj = sc.Eval(" 1 + 2 * (3 + 4)");
   Console.WriteLine(obj);

要使用MSScriptControl需要引用com组件 Microsoft Script Control 1.0。

上篇文章已经详细说明了,当然代码有部分错误 “MSScriptControl.IScriptControl.Timeout”与“MSScriptControl.DScriptControlSource_Event.Timeout”之间存在二义性

原代码:

 

/// <summary>

/// 获取或设置脚本执行时间,单位为毫秒

/// </summary>

public int Timeout

{

            get { return this.msc.Timeout; }

            set { this.msc.Timeout = value; }

}

修改为:

 

        /// <summary>

        /// 获取或设置脚本执行时间,单位为毫秒

        /// </summary>

        public int Timeout

        {

 

            get { return ((IScriptControl)this.msc).Timeout; }

            set { ((IScriptControl)this.msc).Timeout = value; }

 

        }

即可,测试可以使用,这样进行抓取数据更加方便简介,直接让JS输出结果就好了。

结合一些技术可以做很多东西如:

1、ALEXA排名作弊,EXE执行处理后进行POST,或者申请一个证书进行页面处理,数据跟真实

2、一些点击或者展示广告作弊,原理同上,结合ACTIVEX插件,效果不错

 ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。 

 

  如果您使用的是Windows操作系统,您或许会注意到一些以OCX结尾的文件。OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。 

 

  组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或PowerBuilder,甚至一些技术性语言如VBScript。 

 

  目前,ActiveX控件在Windows 95/NT和Macintosh中运行,Microsoft还准备支持UNIX的ActiveX控件。

posted @ 2010-08-10 15:43  A light heart lives long  阅读(3269)  评论(1编辑  收藏  举报