Qt: kann ich die Webseite dom mit QWebKit laden und manipulieren, ohne die Seite zu machen?
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
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