Получение DOM со страницы с помощью Chromium / WebKit - PullRequest
4 голосов
/ 13 июля 2010

Попытка получить доступ к DOM страницы после рендеринга. Мне не нужно просматривать страницу и планировать применять это программно без какого-либо графического интерфейса или взаимодействия.

Причина, по которой меня интересует пост-рендеринг, заключается в том, что я хочу знать, где появляются объекты. Некоторая информация о местоположении кодируется в HTML (например, с помощью offsetLeft), но большая часть - нет. Кроме того, Javascript может изменить окончательное позиционирование. Я хочу, чтобы позиции были как можно ближе к тому, что увидит пользователь.

Я изучил код Chromium и думаю, что есть способ сделать это, но для начала недостаточно документации.

Если выразить это ОЧЕНЬ , просто мне будет интересен такой псевдокод:

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

Есть ли у вас какие-либо советы по отправным точкам?

1 Ответ

5 голосов
/ 19 июля 2010

Вы должны использовать оболочку Web API, предоставляемую Chromium;в частности, класс WebDocument содержит необходимые вам функции.Вы можете назвать это так:

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

// Manipulate the DOM here using docElement
...

Вы можете просмотреть исходный код оболочки Chrome для Web API здесь. Хотя документации не так много, файлы заголовков довольнос хорошими комментариями, и вы можете просмотреть исходный код Chrome, чтобы увидеть API в действии.

Трудно начать использовать Chromium.Я рекомендую посмотреть приложение test_shell .Кроме того, такая структура, как Chromium Embedded Framework (CEF), упрощает процесс внедрения Chromium в ваше приложение;Я использую CEF в своем текущем проекте, и я очень доволен им.

...