最近有些无聊写了一个抓取github的ss账号的东西
2017-04-20 10:06
281 查看
github是https类型的直接去load网址 程序就死了。获取不到相关的东西。
然后 我就大概在网上搜了关于Qt访问https的东西,帖子到时很多,都只是说了大概怎么用。于是就自己照着写了写,本人菜鸟一枚。
主要代码如下:
html的doc节点读取还不是很熟练后面就用QString处理了。在后面的提取 用mid配合QStringList就可以提取 或者用正则直接匹配出来。
写文件的代码:
本意是要写json的,,还不熟悉json如何操作,就直接写了文本。
源码下载
然后 我就大概在网上搜了关于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()<<QString(data); QWebPage UrlPage; UrlPage.mainFrame()->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<tmp.count();i++) { // qDebug()<<i<<" "<<tmp.at(i).toPlainText(); bool ok = tmp.at(i).toPlainText().startsWith("服务器"); if(ok) { strList<<tmp.at(i).toPlainText(); } } QString strData; for(int i = 0; i<strList.count();i++) { strData+= strList.at(i)+"\n"; }//服务器 各项提取可以用mid json不熟暂时不谢json,直接写文本了。 writeFile(strData); }
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<<data.toUtf8()<<endl; file.close(); ui->pushButton->setText("已输出"); connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(close())); }
本意是要写json的,,还不熟悉json如何操作,就直接写了文本。
源码下载
相关文章推荐
- 最近在和朋友一起写一个socket的聊天的东西
- 最近无聊做了一个新站玩玩(www.01zhc.cn)
- 谈下最近做的一个手机app,学习到的东西挺多的哦
- 最近在写导出excel表格的代码,发现网上大部分代码都是导出简单格式的excel,所以自己顺便就写了一个导出复杂表格的工具类,有些代码是借鉴网友的,同时也谢谢分享代码的朋友们.
- ProjectOne(07) - 番外篇04 注册一个Github账号,并提交代码
- 无聊写了一个js的东西,关于按键的控制
- 最近看了一段时间Python,练习写了一个抓取淘女郎的爬虫,话不多说,上代码
- 最近,我参与的一个项目,我主要负责这些东西
- 如何在同一台电脑使用不同的账号提交到同一个github仓库
- 推荐一个 github 项目 spider163,抓取网络数据,歌曲评论等数据
- 最近写了一个HTTP代理服务器, 有些心得, 与大家分享
- 最近一个项目用到PostgresSQl数据库,有些不同于oracle数据库,尤其时间处理上,结合PostgreSQL手册以及网上转载些资料,如下,方便开发中用到
- 转帖一个最近用到的东西:“在QT下为开发板的键盘编写输入插件”,加上部分自己的补充说明
- 最近做的一个安卓项目,里面有些比较实用的代码,整理一下,以备今后使用
- 刚刚闲着无聊,随便写了一个抓取博客园的py
- 中午吃饭时无聊,偶然发现了一个叫芝诺悖论的东西。
- 最近写一个C#关于U盘的操作,在弹出U盘是遇到了些问题,C#调WINdoWs底层的东西太麻烦了,看样子要看看VC或C了
- 最近写一个涉及到打印IC的软件。写一些东西以免以后忘记;
- React Native ——实现一个简单的抓取github上的项目数据列表
- 一个Mac同时管理两个github账号