QtWebkit: консольное приложение

Я новичок в Qt.

Я создаю консольное приложение, и мне нужно обработать множество html-страниц реального мира. QtWebkit является простым выбором из-за четкого API и легкой доступности.

Я проверил документы, и они говорят, что я могу загружать страницы с помощью QWebView::load(). Но я создаю консольное приложение и не могу использовать виджет. Я получаю сообщение об ошибке: ?

QWidget: Cannot create a QWidget when no GUI is being used
The program has unexpectedly finished.

Итак, как я могу обрабатывать html-страницы с помощью QtWebkit в консольном приложении.


person Xolve    schedule 20.08.2010    source источник


Ответы (2)


QtWebkit можно использовать в среде без виджетов, но его нельзя запускать с помощью QCoreApplication.

Решение состоит в том, чтобы использовать поддельный X-сервер для выполнения программы.

Установите Xvfb, а затем:

xvfb-run --server-args="-screen 0 1024x768x24" ./framecapture google.cat google.png

PD: Использование примера Webkit для захвата кадров из документации: http://doc.qt.io/archives/qt-4.7/webkit-framecapture.html

person Marçal Juan    schedule 18.05.2011

QWebPage можно использовать в среде без виджетов.

Чтобы загрузить страницу, сделайте что-то вроде этого

QWebPage page;
QUrl url = ...;
page.mainFrame()->load(url);

Чтобы получить доступ к дереву DOM, вы можете использовать QWebFrame::documentElement() . См. API, чтобы узнать, как это использовать.

person mtvec    schedule 20.08.2010
comment
@Job Я пробовал, и это не работает. Выдает ту же ошибку, что GUI отсутствует. - person Xolve; 21.08.2010
comment
@Xolve: Хм, это очень странно... Это должно работать в соответствии с документами. Я думаю, что самый простой способ сделать то, что вы хотите, — это напрямую использовать модуль QtXml. получения дерева DOM через QtWebKit. - person mtvec; 21.08.2010
comment
@Job Фактические веб-страницы лучше анализируются реальным браузером. - person Xolve; 22.08.2010