2010-09-06 1 views

ответ

5

Я считаю, вы должны быть в состоянии загрузить веб-страницу используя QNetworkAccessManager и манипулировать его содержимым с помощью QTextDocument; ниже - небольшой пример. Также вы можете использовать класс QWebPage без отображения содержимого страницы. Я также включил его в пример ниже:

void MainWindow::on_pushButton_clicked() 
{ 
    // load web page 
    QNetworkAccessManager *manager = new QNetworkAccessManager(this); 
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); 
    manager->get(QNetworkRequest(QUrl("http://www.google.com"))); 
} 

void MainWindow::replyFinished(QNetworkReply* reply) 
{ 
    QByteArray content = reply->readAll(); 

    // process network reply using QTextDocument 
    QTextDocument page; 
    page.setHtml(content); 
    for (QTextBlock block = page.begin(); block != page.end(); block = block.next()) 
    { 
     // do smth here 
     qDebug() << block.text(); 
    } 

    // process network reply using QWebPage  
    QWebPage webPage; 
    webPage.mainFrame()->setHtml(content); 

    QWebElement document = webPage.mainFrame()->documentElement(); 
    QWebElementCollection elements = document.findAll("element_name"); 

    foreach (QWebElement element, elements) 
    { 
     // do smth here 
     qDebug() << element.toPlainText(); 
    } 
} 

надеюсь, что это помогает, считает

+0

Bumping однолетними ответ ... Как бы вы идти о разборе это без QWebPage? Точнее, что, если этот код не был в основном потоке, где вы не можете создать QWebPage? – Ahmed

Смежные вопросы