2012-03-12 67 views
1

我正在編寫一個抓取應用程序。某處在代碼Ive得到:Qt html解析沒有找到任何標籤

//normally the HTML is obtained from web with QNetworkAccessManager & QNetworkReply: 
//QString htmlCode = this->reply->readAll(); 

//exemplary test HTML 
QString htmlCode =QString("<html><body><a href=\'foo.bar\'>test1</a><h2>test2<h2><a href=\"bar.foo \">test3</a></body></html>"); 
QWebPage page; 
QWebFrame * frame = page.mainFrame(); //->setHtml(htmlCode); 
frame->setHtml(htmlCode); 
QWebElement document = frame->documentElement(); 
QWebElementCollection links = document.findAll("a"); 
foreach (QWebElement e, links) { 
    qDebug() << "exemplary link:" << e.toPlainText(); 
} 

我不知道,有一直喜歡約在這裏QT解析HTML主題的暢想,但我不知道,什麼是錯在這裏...

+1

問題是什麼?沒有元素或空白「toPlainText」? [UPD] Oups,標題說明了這一點。 – Koying 2012-03-12 12:29:53

回答

1

嗯......我不確定setHtml()是完全同步工作的,也就是說我認爲當時幀內容沒有完全解析,因此DOM內容尚不可用。

您應該嘗試連接到void QWebFrame::loadFinished (bool ok)並在那裏執行DOM爬行。