使用Chromium / WebKit从页面获取DOM

时间:2010-07-13 16:38:16

标签: webkit chromium

尝试在渲染后访问页面的DOM。我不需要查看页面并计划在没有任何GUI或交互的情况下以编程方式应用此页面。

我对后期渲染感兴趣的原因是我想知道对象出现的位置。一些位置信息以HTML编码(例如,通过offsetLeft),但事实并非如此。此外,Javascript可以改变最终的定位。我想要的位置尽可能接近用户看到的位置。

我查看了Chromium代码并认为有一种方法可以做到这一点,但没有足够的文档可以开始。

把它非常只是我对这样的伪代码感兴趣:

DOMRoot *r = new Page("http://stackoverflow.com")->getDom();

关于起点的任何提示?

1 个答案:

答案 0 :(得分:5)

您应该使用Chromium公开的Web API包装器;具体来说,WebDocument类包含您需要的功能。你可以这样称呼它:

WebFrame * mainFrame = webView->mainFrame();
WebDocument document = mainFrame->document();
WebElement docElement = document->docElement();

// Manipulate the DOM here using docElement
...

You can browse the source code for Chromium's Web API wrapper here.虽然文档的方式不多,但标题文件的评论相当充分,您可以浏览Chrome的源代码以查看API的实际效果。

很难开始使用Chromium。我建议查看test_shell application。此外,像Chromium Embedded Framework(CEF)这样的框架简化了在应用程序中嵌入Chromium的过程。我在目前的项目中使用CEF,我对它非常满意。