c++之qt开发简单爬虫app实现环境(彻底解决安卓端对https的请求的问题)

2023年4月23日 21:26 ry 575

最近捣鼓qt很久了,app是我一直向往的放心,当然,开发app大都用java,flutter或者koltin,很少用c++实现,但我个人比较执着哈,追求高性能,底层方面开发,话不多说,首先配置qt开发app的环境罗,需要安装java,android-sdk,qt-for-android,ndk,具体详细步骤推荐看良风抚旧

的博客,该播主直接给了相关环境,直接按照他的步骤安装即可,我是根据他的博客配置的,注意下后面进行选择路径时,也就是打开qt后,工具-->选项->Android,中NDK路径最好不要带空格或者中文,不然会报错,如下所示其他方面配置好了后,接下来可以配置android虚拟机,建议这步直接跳过,本人亲自配置了android虚拟机,运行真的超慢,每次运行都要等3-4分钟,开发效率严重拉低,这里最好使用手机连接电脑进行开发,比虚拟机块多了,除此之外,安卓虚拟机运行时在ui文件里面的部件带中文直接会乱码,直接乱码,无论你怎么设置编码都解决不了,真机不会有这样的问题。从过来人的角度建议真机,手机如何连接呢,将你的手机数据线连接电脑,同时手机在设置里面选中开发者模式和调试模式即可,然后运行代码时,会自动检测到真机,你勾选即可运行,十分方便,接下来我开始弄我的爬虫代码了,功能很简单,首先账号密码登录界面,然后登录成功后到另一个数据采集界面,输入要采集的连接,然后请求这个连接,点击开始采集后,将响应后的数据显示在界面上。这是我的登录的ui界面,如下所示,接下来是另一个爬虫ui,如下所示我的整个项目的代码目录如下所示

然后主要部分代码widget.cpp代码如下所示

#include "widget.h"
#include "ui_widget.h"
#include "ui_mainwindow.h"
#include<mainwindow.h>
#include<QPushButton>
#include<QDebug>
#include<QMessageBox>
#include<QNetworkAccessManager>
#include<QNetworkReply>
#include<QTextCodec>
#include <QJsonDocument>
#include <QJsonObject>
#include <QCoreApplication>
#include<QNetworkRequest>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        QString account = ui->lineEdit->text();
        QString password = ui->lineEdit_2->text();
        if(account=="test"&&password=="lyp1016")
        {
            //弹出登录成功的消息提示框
           QMessageBox::StandardButton result =  QMessageBox::information(this,"登录提示","登录成功",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok);

           //创建爬虫界面
           MainWindow *mw = new MainWindow;
           this->hide();
           mw->show();

           connect(mw->ui->pushButton,&QPushButton::clicked,mw,[=](){
               QString links= mw->ui->lineEdit->text();
               QNetworkAccessManager *manager = new QNetworkAccessManager(this);
                qDebug()<<links;
               QUrl url(links);
               QNetworkRequest request(url);
//               request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
               request.setSslConfiguration(QSslConfiguration::defaultConfiguration());
               request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);

               QNetworkReply *reply = manager->get(request);

               connect(reply, &QNetworkReply::finished, [=]() {
                   if (reply->error() == QNetworkReply::NoError) {
                       // 以二进制形式读取响应数据
                       QString data = reply->readAll();


//                       QJsonDocument responseDocument = QJsonDocument::fromJson(data);
//                       QJsonObject responseObject = responseDocument.object();

                       qDebug()<<"999999999999999999";


                       mw->ui->textEdit->setPlainText(data);
                       qDebug()<<result;

                   } else {
                       qDebug() << reply->errorString();
                   }

               });

           });
        }
        else {
            int result = QMessageBox::warning(this,"登录提示","账号密码错误",tr("确定"),tr("取消"),"");
            qDebug()<<result;
        }
    });
}

Widget::~Widget()
{
    delete ui;
}

这里注意的是,我们输入的链接为https时需要配置openssl环境,否则打包成apk在手机运行时无法进行请求,配置很容易,没有网上说的那么复杂,可以看大佬的博客:喵喵叫的猴 中详细将了相关的配置方法,文件下载压缩后如下所示

接下来就可以直接在手机上运行程序了,如下所示,输入账号密码后,我们到达爬虫界面,输入要采集的网址后,点击运行,结果如下所示完美运行,接下来我将继续开发app,加油

如果上述代码帮助您很多,可以打赏下以减少服务器的开支吗,万分感谢!

欢迎发表评论~

点击此处登录后即可评论


评论列表
2023年4月24日 19:44 ry: 回复
爬虫软件定制,app爬虫定制需要的私我:qq:1449917271 微信liuyoudyping


赣ICP备2021001574号-1

赣公网安备 36092402000079号