Qt: Могу ли я загрузить и манипулировать веб-страницей DOM с QWebkit без рендеринга страницы?

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

  •  01-10-2019
  •  | 
  •  

Вопрос

Есть ли способ загрузки URL и манипулировать страницей DOM без рендеринга страницы, мне нравится делать это проблематично, не показывая страницу в браузере

Это было полезно?

Решение

Я считаю, что вы сможете загрузить веб-страницу с помощью QNetworkaccessCanager и манипулировать своим содержанием с помощью 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();
    }
}

Надеюсь, это поможет, по отношению

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top