• 基于QWebEngine实现无头浏览器


    无头浏览器

    无头浏览器(Headless Browser)是一种没有图形用户界面(GUI)的浏览器。它通过在内存中渲染页面,然后将结果发送回请求它的用户或程序来实现对网页的访问,而不会在屏幕上显示网页。这种方式使得无头浏览器不仅适用于网络爬虫和测试等自动化任务,而且还能够更安全地进行网页浏览,因为它不会在屏幕上显示您的活动。

    常见的无头浏览器包括Chrome Headless、PhantomJS、Puppeteer等,常见的这些无头浏览器都属于互联网前后端开发相关的东西,与Qt技术栈相关的比较少。

    在之前的文章中我们了解到,QWebEngine能够实现内嵌浏览器的功能,基于无头浏览器的原理介绍,QWebEngine能不能实现加载网页但不显示页面呢?

    答案是,可以的。

    基于QWebEnginePage实现无头浏览器

    在之前的文章中我们有介绍到QWebEngine有两种实现方式,一个QWidget框架下的QWebEngineView,另一种是QML框架下的WebEngineView,其中QWebEngineView包含QWebEnginePage的功能,QWebEnginePage提供页面加载相关的功能,QWebEngineView用于page的显示,基于QWebEnginePage就可实现无头浏览器。

    1. auto page = new QWebEnginePage(this);
    2. page->setUrl(QUrl("https://www.qt.io/"));
    3. connect(page, &QWebEnginePage::loadFinished, this, [=](bool ok){
    4. qDebug() << __FUNCTION__ << "song" << "load is ok" << ok;
    5. });

    使用QWebEnginePage加载页面,页面加载成功后就可以做一些操作,如网络截图、爬虫、数据采集等。

    QWebEnginePage支持QWebEngine内嵌浏览器相关的功能,具体可查看相关接口

    1、获取网页相关信息

    2、注入javascript

    3、打印pdf

    更具体的应用需要自己去发掘了。

    QML的WebEngineView没有像QWebEngineView把page的功能分开,所以WebEngineView不能实现无头浏览器的效果。

    最后,需要注意的是,如果是在控制台程序中运行QWebEnginePage,main函数的应用程序类型必须是QApplication,使用QCoreApplication无法启动QWebEnginePage。

  • 相关阅读:
    使用vim对比两个文件
    MySQL - 全表分组后,获取组内排序首条数据信息
    【物联网】浅谈单片机中的看门狗
    【云原生 | 23】Docker运行Web服务实战之Tomcat
    开发这么久,gradle 和 gradlew 啥区别、怎么选?
    软件架构设计 C/S与B/S架构的区别
    你了解IP协议吗?
    信奥基本功:打字练习(盲打)
    Nginx:尚硅谷2022版Nginx笔记
    企业管理 - 现代管理學之父
  • 原文地址:https://blog.csdn.net/a137748099/article/details/132676014