zoukankan      html  css  js  c++  java
  • Qt基于QWebEngineView的爬虫

    1WebPage.pro文件

    QT       += core gui webenginewidgets
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    CONFIG += c++11
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    SOURCES += 
        main.cpp 
        webpage.cpp
    HEADERS += 
        webpage.h
    FORMS += 
        webpage.ui
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target

    2.webpage.h文件

    #ifndef WEBPAGE_H
    #define WEBPAGE_H
    
    #include <QWidget>
    #include<QWebEngineView>
    #include<QDebug>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class WebPage; }
    QT_END_NAMESPACE
    
    class WebPage : public QWidget
    {
        Q_OBJECT
    
    public:
        WebPage(QWidget *parent = nullptr);
        ~WebPage();
    
    private slots:
        void getPage(bool);
        void getHtml(const QString&);
    
    protected:
        void resizeEvent(QResizeEvent *);
    
    signals:
        void html(const QString& result);
    
    private:
        Ui::WebPage *ui;
        QWebEngineView* view;
        QWebEnginePage *page;
    };
    #endif // WEBPAGE_H
    

    3.webpage.cpp文件

    #include "webpage.h"
    #include "ui_webpage.h"
    
    WebPage::WebPage(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::WebPage)
    {
        ui->setupUi(this);
        connect(this,SIGNAL(html(const QString&)),this,SLOT(getHtml(const QString&)));
        view = new QWebEngineView(this);
        view->load(QUrl("https://so.iqiyi.com/so/q_你好"));
        page = view->page();
        connect(page,SIGNAL(loadFinished(bool)),this,SLOT(getPage(bool)));
    //    view->show();
    }
    
    WebPage::~WebPage()
    {
        delete ui;
    }
    
    void WebPage::resizeEvent(QResizeEvent *)
    {
        view->resize(this->size());
    }
    
    void WebPage::getPage(bool status){
        qWarning()<<status<<endl;
        page->toHtml([this](const QString& result) mutable {emit html(result);});
    }
    
    void WebPage::getHtml(const QString& reshtml){
        qWarning()<<reshtml<<endl;
    }
    

     4.main.cpp

    #include "webpage.h"
    
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        WebPage w;
        w.show();
        return a.exec();
    }
    

      

  • 相关阅读:
    React Native组件左右两端展示(flex:1、justifyContent:'space-between')
    iOS 蓝牙开发详解(基本知识、相关类图、交互流程)
    iOS 蓝牙开发 Mac地址问题
    AFNetwork监听网络失效
    查看linux系统版本和cpu
    docker常用命令
    docker 常用命令--镜像删除
    docker部署nginx
    常见数据库会话查询脚本
    DB性能瓶颈分析思路
  • 原文地址:https://www.cnblogs.com/navysummer/p/14190098.html
Copyright © 2011-2022 走看看