C/C++ | Qt 实现爬虫功能,爬取CSDN博客文章
发布日期:2021-06-30 10:51:48
浏览次数:2
分类:技术文章
本文共 1910 字,大约阅读时间需要 6 分钟。
话不多说,先看程序运行截图:
注意:
本人没有看过爬虫相关的书籍,第一次写这种程序,这个程序是半屌子的,原理很简单,没有学习过爬虫的朋友,也可以写。
程序思路如下:
1.下载要爬网站的页面。
2.用正则表达式去掉空格,使得程序处理得快。
3.因为CSDN博客文章前面的链接都一样,所以我们只要提取尾部文章编号。
(如:http://blog.csdn.net/qq78442761/article/details/xxxxxxxx)
4.扫描整个文件,得到文章标题。
5.保存为csv格式文件
源码下载如下链接:(还在审核,不知道能不能下载)
关于界面,在此不再说明。
来说下下载网页(此处只有伪代码,源码请从上面的链接下载):
void Widget::on_id_getWebCode_pushButton_clicked(){ const QString URLSTR=ui->id_url_lineEdit->text(); const QString FILE_NAME=ui->id_SaveFileName_lineEdit->text(); QUrl url(URLSTR); QEventLoop loop; QNetworkAccessManager manager; //发出请求 QNetworkReply *reply=manager.get(QNetworkRequest(url)); //请求结束并下载完成后,退出子事件循环 connect(reply,SIGNAL(finished()),&loop,SLOT(quit()),Qt::UniqueConnection); //开启子事件循环 loop.exec(); //将读取到的信息写入文件 sourceCode=reply->readAll(); QFile file(FILE_NAME); file.open(QIODevice::WriteOnly); QTextStream out(&file); out<< 10){ QMessageBox::information(this,tr("提示"),tr("网站数据获取成功!"),QMessageBox::Ok); hasSourceFile=true; } else{ QMessageBox::information(this,tr("提示"),tr("网站数据获取失败!"),QMessageBox::Ok); hasSourceFile=false; } file.close(); if(file.size()<10){ file.remove(); }}
下面就得到了txt文件(这文件就是网站浏览器读取到的源码)
接下来用正则表达式去空格:
QString divisionSource=sourceCode; if(!urlLack.isEmpty()&&!titleLack.isEmpty()){ divisionSource.remove(QRegExp("\\s"));
关于如何寻址指定字符串,本程序提供了2个方法,一个是把QString转成char型,进行查找,代码如下:
int urlNumtemp=0; //为了添加webURLAndTitle[128][2]这个 for(int i=0;iid_URL_division_lineEdit->text()+temp; qDebug()<
第二个是用QString里面的mid函数(估计效率很低)进行查找:
//下面是提取置顶title int urlNum=0; //为了添加webURLAndTitle[128][2]这个 for(int i=0;i
最后是保存为CSV文件
void Widget::saveURLandTilte(){ QFile file("URL&Title.csv"); file.open(QIODevice::WriteOnly); QTextStream out(&file); for(int i=0;i
感谢大家阅读。
转载地址:https://it1995.blog.csdn.net/article/details/79288295 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月17日 11时59分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
htmlunit 操作table表格(一)
2019-04-30
htmlunit 操作table表格(二)
2019-04-30
zookeeper安装
2019-04-30
Dubbo Admin管理控制台
2019-04-30
eclipse debug ctrl+shift+i查看表达式的值
2019-04-30
消费Dubbo服务
2019-04-30
telnet 如何退出
2019-04-30
开启Nginx限流
2019-04-30
aircrack-ng破解wifi密码基础教程
2019-04-30
浏览器验证Elasticsearch是不是同一集群环境
2019-04-30
JAVA中两个不同对象的equals方法使用注意点
2019-04-30
JAVA判断奇数的正确方法
2019-04-30
linux安装jdk
2019-04-30
百度移动搜索转码
2019-04-30
小程序app.json配置
2019-04-30
微信小程序上线发布流程
2019-04-30
你不知道的微信命令行
2019-04-30
Echarts饼图代码
2019-04-30
小本生意,请各位博友多多支持
2019-04-30