随笔分类 -  Webkit

摘要:做爬虫的时候最头疼的就是遇到一些动态加载的页面或者是一些动态生成的链接。比如我们的博客园就是个例子:凤凰网的评论链接也是一样:今天我们就用Webkit来解决这个问题。预备知识可以看一下我前面几篇文章,准备工作参照利用InjectedBundle定制自己的Webkit(二)中的客户端程序。一切就绪之后我们开始!首先介绍一些重要的函数和回调在创建一个Page之后我们可以设置一些回调函数,其中有一个是:WKPageLoaderClient::didFinishDocumentLoadForFrame原型是:typedef void (*WKPageDidFinishLoadForFrameCallb 阅读全文
posted @ 2012-12-12 14:56 有来 有去 阅读(18628) 评论(6) 推荐(5) 编辑
摘要:由于时间仓促,之前贴的代码中有些许错误,请大家见谅,现已更正,并附上运行结果!----------------我是开始分割线-----------------在上一篇利用InjectedBundle定制自己的Webkit(一)中,我们完成了一个自己的InjectedBundle,接下来我们就要在Webkit中加载我们自己的InjectedBundle。为了测试方便先给出一个示例的InjectedBundle代码,项目名称MyInjectedBundle。#include<WebKit2/WKBundleInitialize.h>#include<WebKit2/WKBundl 阅读全文
posted @ 2012-12-03 18:29 有来 有去 阅读(5562) 评论(2) 推荐(3) 编辑
摘要:Webkit是一个多进程构架,内核WebCore和JS引擎JavaScriptCore都处在WebProcess进程中,而用户界面相关的处理则处在UIProcess进程中。(详见Webkit客户端进程解析)Webkit提供了大量的API供客户程序调用,但是这些API都是在客户进程中调用的,我们无法访问到内核部分的数据结构并处理,如DOM树、Render树、加载的Web资源等等。为了解决这一问题,Webkit提供了一个运行在内核进程的InjectedBundle来提供对内核数据的操作。InjectedBundle类似于一个插件,单独编译成一个动态库,在内核进程运行到特定情况时会调用Injecte 阅读全文
posted @ 2012-12-02 20:01 有来 有去 阅读(4596) 评论(2) 推荐(2) 编辑
摘要:最近看了很多关于Webkit原理的博客和资料,大都是介绍整体构架和诸如资源加载、HTML解析、Rendering等服务端进程的原理。但是新版本的Webkit(Webkit2)是一个多进程模型,而不是过去的单进程模型。这些进程分为两类,分别是:服务端(WebProcess)和客户端(UIProcess)客户端资料的缺少使得我对客户端进程产生了兴趣,经过对代码的研究,找出了一点门道,这里分享给大家。首先介绍一下两个进程的关系顾名思义,服务端就是完成客户端发来的请求并回应,而客户端就是资源或功能的请求者,只不过他们不像Web服务器和浏览器一样处于不同的机器(一般都这样),他们只是两个进程而已。这样做 阅读全文
posted @ 2012-11-22 14:39 有来 有去 阅读(4392) 评论(0) 推荐(0) 编辑
摘要:近日在研究webkit的时候发现了一个函数template<typename T> inline void deleteOwnedPtr(T* ptr){ typedef char known[sizeof(T) ? 1 : -1]; if(sizeof(known)) delete ptr;}一开始对这个函数非常费解,为什么作者不直接delete ptr;通过上stackoverflow提问然后查阅了一些资料后终于得到结果:这是用来防范错误释放incomplete type指针而导致的未知的行为。这样做之后,释放incomplete type指针将引发一个编译错误,... 阅读全文
posted @ 2012-11-15 18:54 有来 有去 阅读(2542) 评论(0) 推荐(1) 编辑
摘要:最近几天因为项目需要编译了一次Webkit,因为其中颇费周折,所以把自己的编译过程的总结分享一下,希望能给大家帮助。参考网站http://www.webkit.org/1. 编译环境的搭建(1)Visual Studio由于官方指导上面说:暂不支持VS2005以后的版本(newer versions of Visual Studio are currently unsupported)所以为了避免出现不可预料的错误,果断放弃了VS2010,新建了一个Win7虚拟机,装上了VS2005 Team Suite CHS接下来安装VS2005的各种补丁Microsoft Visual Studio 2 阅读全文
posted @ 2012-06-06 00:37 有来 有去 阅读(11819) 评论(4) 推荐(1) 编辑

Copyright ©2013 Jiajun. All Rights Reserved.