2012-03-12 2 views
1

크롤링 응용 프로그램을 작성하고 있습니다. 어딘가에 코드에서 필자는 가지고 ...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을 구문 분석에 대한 항목의 milion처럼이있었습니다 것을 깨닫는다,하지만 난 여기에, 무슨 잘못 아무 생각이

+1

무엇이 문제입니까? 요소 또는 공백이 "toPlainText"입니까? [UPD] Oups, 제목은 그것을 말한다. – Koying

답변

1

음 ... setHtml()이 완전히 동 기적으로 작동하는지 확신 할 수 없습니다. 즉 프레임 콘텐츠가 완전히 파싱되지 않아 DOM 콘텐츠를 아직 사용할 수 없다고 생각합니다.

공백 QWebFrame::loadFinished (bool ok)에 연결하여 DOM을 크롤링해야합니다.

관련 문제