这一段时间,实现了一个利用webkit搜集网页内容的程序,有一些进展。这边我用的是QWebFrame里面的load方法,直到整个Frame 完全加载后,才截取相应的内容。
让我惊讶的是,Qt己经完成了从字符集中解码的整个过程,所以不用去管目标页的具体编码格式,Qt己经全部帮我们转换完毕,并以unicode存储在QString中。这一块是我没预料的。
但另一个不好的方面,发现整个QWebFrame的加载速度过慢。这点让我感觉很不好,一个163的新闻页,居然加载了12秒钟,这大大的超出了我的预期。我不清楚它的这种加载是不是把图片,flash等全部下载完毕,才算是一个完成的加载吗? 我有别的办法加快这种加载的过程吗?我看了一下Qt demo中的用webkit做的浏览器,速度很快的,一下就结束了,我们错在哪里?我想可能是他们的操作是异步的过程。怎么才能得到这种异步的过程呢?
现在我的一个想法是在看一下QNetworkAccessManager里面的QNetworkReply,看看它能提供什么有用的信息吗?另外在调研一下原来的webkit的例子,大概的看一下,我慢在哪里。哪边可以改进????
后来在release的程序里面试了一下,发现完全是我错了,在release里面,非常的快,163的新闻页只花了一秒多钟,csdn的一个新闻页面则花了5秒多钟,(这个页面比较大,光内容大概就有46K的样子。) ,这样的速度我想我还是可以接受的。
当初用QWebkit里面的内容主要是考虑到有维护的保障,不致于像某些开源库做了一段时间更新后就没影了。。。。然后里面的一些HTML解析可以直接用。。。不一定什么东西都要自己整一套啊。