我正在修改 Qt 附带的 DOM Traversal 示例。但是,每当我看到一个链接时,我都想“去”那个 URL 并遍历它的 DOM,但我不想重新加载 GUI。现在我仍在使用示例中的代码来获取主页:
void Window::on_webView_loadFinished()
{
treeWidget->clear();
QWebFrame *frame = webView->page()->mainFrame();
QWebElement document = frame->documentElement();
examineChildElements(document, treeWidget->invisibleRootItem());
}
这很好用。在 inspectChildElements() 中,当我遇到特定链接时,我会使用 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 的方法?