最近有些无聊写了一个抓取github的ss账号的东西

github是https类型的直接去load网址 程序就死了。获取不到相关的东西。

然后 我就大概在网上搜了关于Qt访问https的东西,帖子到时很多,都只是说了大概怎么用。于是就自己照着写了写,本人菜鸟一枚。

主要代码如下:


void Widget::on_pushButton_clicked()
{
    const QString strUrl = "https://github.com/Alvin9999/new-pac/wiki/ss%E5%85%8D%E8%B4%B9%E8%B4%A6%E5%8F%B7";

    QNetworkAccessManager mManager;

    QNetworkRequest request;
    request.setUrl(QUrl(strUrl));//加载网页

    QSslConfiguration config;
    config.setPeerVerifyMode(QSslSocket::VerifyNone);
    config.setProtocol(QSsl::TlsV1SslV3);//设置ssl

    request.setSslConfiguration(config);

    QNetworkReply *reply = mManager.get(request);

    QByteArray data;

    QEventLoop loop;//启动循环


    connect(reply, SIGNAL(finished()),&loop,SLOT(quit()));//读取完成后退出循环
    loop.exec();
    data = reply->readAll();//接收源码
 //   qDebug()<setHtml(QString(data));

    QWebFrame *UrlFrame = UrlPage.currentFrame();

    QWebElement doc = UrlFrame->documentElement();
    //id="user-content-ss-or-ssr免费账号长期更新"
    QWebElement ID = doc.findFirst("#wiki-body");//ID =  过滤节点

    QWebElementCollection tmp = ID.findAll("p");
    //html不熟,下面的用字符串处理
    QStringList strList;
    for(int i=0;i

html的doc节点读取还不是很熟练后面就用QString处理了。在后面的提取 用mid配合QStringList就可以提取 或者用正则直接匹配出来。


写文件的代码:

void Widget::writeFile(QString data)
{
    QString Path = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
    QString configname = "ss.txt";
    QString FilePath = Path+"/"+configname;

    QFile file(FilePath);
    bool ok = file.open(QIODevice::WriteOnly | QIODevice::Text);
    if(!ok)
    {
        QMessageBox::information(this,"Error","File OPen faild!");
        return;
    }

    QTextStream out(&file);

    out<pushButton->setText("已输出");
    connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(close()));
}

本意是要写json的,,还不熟悉json如何操作,就直接写了文本。

源码下载

你可能感兴趣的:(Qt学习,Qt访问https类型网页,QFrame,qt)