Я модифицирую пример DOM Traversal, который поставляется с Qt. Однако всякий раз, когда я вижу ссылку, я хочу «перейти» на этот URL и также просмотреть его DOM, но я не хочу перезагружать GUI. Прямо сейчас я все еще использую код из примера, чтобы получить домашнюю страницу:
void Window::on_webView_loadFinished()
{
treeWidget->clear();
QWebFrame *frame = webView->page()->mainFrame();
QWebElement document = frame->documentElement();
examineChildElements(document, treeWidget->invisibleRootItem());
}
Это прекрасно работает. В examChildElements (), когда я сталкиваюсь с определенной ссылкой, я затем вызываю другую функцию с URL (я проверил строку URL; она правильная):
void Window::parse_page(QString page_URL)
{
QWebView *innerPage = new QWebView();
innerPage->setUrl(page_URL);
QWebFrame *frameInner = innerPage->page()->mainFrame();
QWebElement documentBetrieb = frameInner->documentElement();
get_biz_info(documentBetrieb);
delete innerPage;
return;
}
Но когда я просматриваю этот документ (documentBetrieb), появляется только тег HTML. Есть ли пропущенный шаг или способ поместить DOM из URL-адреса непосредственно в QWebElement без использования QWebView?
Вы уверены, что setUrl () загружает URL-адрес синхронно? Я полагаю, вам нужно прослушать сигнал QWebView :: loadFinished (bool ok) перед доступом к DOM.