Разбор HTML с C ++ (предпочтительно с использованием Qt) - PullRequest
1 голос
/ 22 мая 2011

Я пытаюсь проанализировать HTML с C ++, чтобы извлечь все URL из HTML (URL могут быть внутри атрибутов href и src).

Я пытался использовать Webkit, чтобы выполнить тяжелую работу длямне, но по какой-то причине, когда я загружаю фрейм с HTML, сгенерированный документ все неправильно (если я заставляю Webkit получать страницу из Интернета, сгенерированный документ просто отлично, но Webkit также загружает все изображения, стили и сценарии, и я нене хочу этого)

Вот что я пытался сделать:

frame->setHtml(HTML);
QWebElement document = frame->documentElement();
QList<QWebElement> imgs = document.findAll("a"); // Doesn't find all links
QList<QWebElement> imgs = document.findAll("img"); // Doesn't find all images
QList<QWebElement> imgs = document.findAll("script");// Doesn't find all scripts
qDebug() << document.toInnerXml(); // Print a completely messed-up document with several missing elements

Что я делаю не так?Есть ли простой способ разбора HTML с Qt?(Или какая-то другая легкая библиотека)

1 Ответ

2 голосов
/ 22 мая 2011

Вы всегда можете использовать выражения XPath, чтобы упростить вашу жизнь, например, посмотрите this .

или вы можете сделать что-то подобное

QWebView* view = new QWebView(parent);
view.load(QUrl("http://www.your_site.com"));
QWebElementCollection elements = view.page().mainFrame().findAllElements("a");
...