在抓取网页过程中,很多网页内容都预先存储到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控件。