• 基于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。

  • 相关阅读:
    Hive (十) --------- 企业级调优
    IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建
    微秒级 TCP 时间戳
    Python3-类基础
    upload-labs 16/17关
    docker和Helm Chart的基本命令和操作
    虚拟机部署linux网络连接配置
    C Primer Plus(6) 中文版 第4章 字符串和格式化输入/输出 4.4 printf()和scanf()
    [python 刷题] 刷题常用函数
    地磁场与磁力计
  • 原文地址:https://blog.csdn.net/a137748099/article/details/132676014