Qt: kann ich die Webseite dom mit QWebKit laden und manipulieren, ohne die Seite zu machen?

StackOverflow https://stackoverflow.com/questions/3649755

  •  01-10-2019
  •  | 
  •  

Frage

Gibt es eine Möglichkeit zu Last-URL und die Seite dom zu manipulieren, ohne die Seite Rendering Ich mag es zu tun in problematischer Weise, ohne die Seite zeigt es sich von selbst im Browser

War es hilfreich?

Lösung

Ich glaube, sollte es möglich sein, die Web-Seite mit QNetworkAccessManager zu laden und manipulieren, dessen Inhalt QTextDocument verwendet wird; unten ist ein kleines Beispiel. Sie können auch QWebPage Klasse ohne zu zeigen, den Inhalt der Seite verwenden. Ich enthalten sie auch in das folgende Beispiel:

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();
    }
}

hoffe, das hilft, Grüße

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top