QT:ページをレンダリングせずにqwebkitでWebページDOMをロードして操作できますか?
質問
ページをレンダリングせずにURLをロードし、ページDOMを操作する方法はありますか
解決
QNetWorkAccessManagerを使用してWebページをロードし、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();
}
}
これが役立つことを願っています
所属していません StackOverflow