正 文:
由于Google Chrome采用了WebKit内核,由此使得WebKit内核浏览器的人气迅速攀升。对于庞大的webkit开源程序,普通程序员一般无需接触。通过WebKit.NET,我们也可以开发一些简单的浏览器。WebKit.NET 是一个 C# 的组件封装了 WebKit 浏览器引擎,通过它可以在 .NET 应用中简单的使用 WebKit 浏览器引擎。
使用方法也很简单,首先到
http://webkitdotnet.sourceforge.net/ 下载webkit.net编译好的dll文件(Win32 Binary ),目前最新的是 2010-08-28 发布的 0.5 版本。
然后把WebKitBrowser控件拉进工具箱:VS工具--》选择工具项--》.NET Framework组件--》浏览--》选择“WebKitBrowser.dll”,这时WebKitBrowser就应该出现在左侧的公共控件里了。使用的时候直接拖曳到窗口里使用即可,WebKitBrowser的使用方法和IE的内核webbrowser类似。
WebKitBrowser简单用法:
1、访问某个网页。
webKitBrowser1.Navigate("http://www.piaoyi.org");
2、加载网页完成时。
private void webKitBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
textBox1.Text = webKitBrowser1.Url.ToString ();
}
需要注意的问题:
1、webkit目前只有32位版本的,因此如果你是64位windows系统,将无法正常使用。为了兼容,需要将调试平台的cpu选择为 X86(vs默认是 any cpu)。
2、需要把从网上下载下来的一大堆dll文件放在输出目录里,和 最终的可执行文件 sample.exe 放在一个目录里,不能放在其他文件夹或子目录,否则 WebKit 出错。
3、如果出错,检查引用里是否引用了 WebKit.Interop and WebKitBrowser.
飘易认为的 WebKit.net 封装的 bug。
1、打开新窗口时的bug。
在事件 private void webKitBrowser1_NewWindowCreated(object sender, NewWindowCreatedEventArgs args) 和 private void webKitBrowser1_NewWindowRequest(object sender, NewWindowRequestEventArgs args) 里都无法正常获取新的 url 。
private void webKitBrowser1_NewWindowCreated(object sender, NewWindowCreatedEventArgs args)
{
webKitBrowser1 = args.WebKitBrowser;
}
private void webKitBrowser1_NewWindowRequest(object sender, NewWindowRequestEventArgs args)
{
MessageBox.Show(args.Url);
}
2、DOM模型,如 webKitBrowser1.DocumentText 不好利用。
当然,以上都是飘易个人之看法,不免贻笑大方。可以参考另外一种
C# GeckoFX内核浏览器。
您好!
我最近在需要做一个能够抓取动态网页的爬虫,本来已实现IE内核抓取,但是考虑效率问题,想使用webkit内核。
目前问题:我不知道如何获取dom请教博主 谢谢
gaowenbin:
如果只是想抓取网页,没必要基于任何浏览器内核,直接底层 HttpWebRequest 读取即可。
webkit内核的dom不易控制。
动态的ajax数据通过HttpWebRequest无法获取到,你有什么好的方法吗
不行,还是出错。提示Failed to initialize activation context,引用都引用了
你好,我想问下如何处理cookie,例如,我在客户端导航到了一个网页,如何传递cookie进去?
感觉这个占用很大的cpu,并且不及时释放资源,一直在吃内存。
WebKit.NET 创建新页面无法获取url的问题有没有解决办法呢?我现在也碰到了这个问题。
导入成功,启动调试报 0x800736B1 简直没办法了。