我正在修改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());
}
这很有效。在examineChildElements()中,当我遇到一个特定的链接时,我然后用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标记。我是否缺少一个步骤,或者是在不使用QWebView的情况下将DOM从URL直接放入QWebElement的方法?
答案 0 :(得分:0)
你确定setUrl()是同步加载URL的吗?我想你在访问DOM之前需要听QWebView :: loadFinished(bool ok)信号。