無頭瀏覽器
無頭瀏覽器(Headless Browser)是一種沒有圖形用戶界面(GUI)的瀏覽器。它通過在內(nèi)存中渲染頁面,然后將結(jié)果發(fā)送回請求它的用戶或程序來實(shí)現(xiàn)對網(wǎng)頁的訪問,而不會在屏幕上顯示網(wǎng)頁。這種方式使得無頭瀏覽器不僅適用于網(wǎng)絡(luò)爬蟲和測試等自動化任務(wù),而且還能夠更安全地進(jìn)行網(wǎng)頁瀏覽,因?yàn)樗粫谄聊簧巷@示您的活動。
常見的無頭瀏覽器包括Chrome Headless、PhantomJS、Puppeteer等,常見的這些無頭瀏覽器都屬于互聯(lián)網(wǎng)前后端開發(fā)相關(guān)的東西,與Qt技術(shù)棧相關(guān)的比較少。
在之前的文章中我們了解到,QWebEngine能夠?qū)崿F(xiàn)內(nèi)嵌瀏覽器的功能,基于無頭瀏覽器的原理介紹,QWebEngine能不能實(shí)現(xiàn)加載網(wǎng)頁但不顯示頁面呢?
答案是,可以的。
基于QWebEnginePage實(shí)現(xiàn)無頭瀏覽器
在之前的文章中我們有介紹到QWebEngine有兩種實(shí)現(xiàn)方式,一個QWidget框架下的QWebEngineView,另一種是QML框架下的WebEngineView,其中QWebEngineView包含QWebEnginePage的功能,QWebEnginePage提供頁面加載相關(guān)的功能,QWebEngineView用于page的顯示,基于QWebEnginePage就可實(shí)現(xiàn)無頭瀏覽器。
auto page = new QWebEnginePage(this);
page->setUrl(QUrl("https://www.qt.io/"));
connect(page, &QWebEnginePage::loadFinished, this, [=](bool ok){
qDebug() << __FUNCTION__ << "song" << "load is ok" << ok;
});
使用QWebEnginePage加載頁面,頁面加載成功后就可以做一些操作,如網(wǎng)絡(luò)截圖、爬蟲、數(shù)據(jù)采集等。
QWebEnginePage支持QWebEngine內(nèi)嵌瀏覽器相關(guān)的功能,具體可查看相關(guān)接口
1、獲取網(wǎng)頁相關(guān)信息
2、注入javascript
3、打印pdf
更具體的應(yīng)用需要自己去發(fā)掘了。
QML的WebEngineView沒有像QWebEngineView把page的功能分開,所以WebEngineView不能實(shí)現(xiàn)無頭瀏覽器的效果。文章來源:http://www.zghlxwxcb.cn/news/detail-705176.html
最后,需要注意的是,如果是在控制臺程序中運(yùn)行QWebEnginePage,main函數(shù)的應(yīng)用程序類型必須是QApplication,使用QCoreApplication無法啟動QWebEnginePage。文章來源地址http://www.zghlxwxcb.cn/news/detail-705176.html
到了這里,關(guān)于基于QWebEngine實(shí)現(xiàn)無頭瀏覽器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!