基于Echarts疫情分析系统–爬虫接口详解
项目gitee地址: 系统
https://gitee.com/krystaljungen/Covid-19-Data-Showing/tree/master
可视化大屏演示: 中国:
http://krystaljungen.gitee.io/my-krystal2/
世界:
http://krystaljungen.gitee.io/my-krystal2/
本文档针对不少对echarts展示疫情数据的同学编写,主要讲了这个项目对数据的爬取、存入数据库中的操作 后续会出ui界面的文档 由于最近有不少同学c站私信我源码,所以这两天维护了下代码;
优化了日志打印:sout(×) log(√)
修改爬虫程序:Main类(×)接口post(√)
上传sql脚本
因为系统是使用springboot + 前端 组成的 。数据来源除了可视化大屏(js调用外部接口)外,其余都要从本地数据库获取。
数据遵从真实性原则,从丁香园、腾讯新闻获取了最新数据。并优化形成了接口,调用接口即可更新本地数据库数据。
接下来介绍这四个爬虫接口的使用:
启动crawler包下的DatasourceApplication.java,启动本地服务 先查看本地系统启动后最终截图:
打开postman工具
1.爬虫并更新covid19_1表接口
covid19_1数据库表包含了自20201119以来到昨天为止的所有数据
。策略是爬取后,之后再调用接口采用更新的方式。如果出现失败,建议手动清空covid19_0表的数据,无数据情况下调用改接口会直接插入,但耗时较久。
打开postman,采用post方式,输入url:
http://localhost:9001/crawler/V01/updateCovid19_1
json参数(url参数为丁香园医生网站里的接口):
https://ncov.dxy.cn/ncovh5/view/pneumonia -> F12->Network->all->刷新一下页面 —>xxx62.json下面的xxx135.json —>headers->Request URL 就是我们需要的(注意数据是从20201119开始的,如果不是请仔细再找找,否则调用后数据会错误)
{
"url":"https://file1.dxycdn.com/2022/0116/819/3281690948332086253-135.json?t=27371983"
}
调用后耐心等待,返回信息
{
"returnCode": "000000",
"returnMsg": "本地数据插入成功!",
"isUpdated": "1",
"updateCount": "724",
"cost": "更新耗时130秒!"
}
调用花了两分钟,可以去看数据库的数据 发现数据已经更新了。
2.爬取并更新covid19_0表接口
covid19_0表是中国近两个月来的数据
该接口比较稳定 调用不需要传入url参数 采用的是腾讯新闻的数据
post方式,接口地址:
http://localhost:9001/crawler/V01/updateCovid19_0
等待返回信息:
{
"returnCode": "000000",
"returnMsg": "本地数据插入成功!",
"isUpdated": "1",
"updateCount": "60条数据",
"cost": "更新耗时10秒!"
}
可以看到 更新数据花了10s时间
3.爬取并更新covid19_234表接口
这三个表分别是省份疫情数据、城市疫情数据、境外输入等数据
也不需要url参数 直接调用就行
post方式,接口地址:
http://localhost:9001/crawler/V01/updateCovid19_234
等待响应:
{
"returnCode": "000000",
"returnMsg": "本地数据插入成功!",
"isUpdated": "1",
"updateCount": "951条数据",
"cost": "更新耗时5秒!"
}
可以看出花了5s
4.清空指定表名(慎重调用)接口
这个接口的输入参数有两个,主要用来清空指定的表,例如清空covid19_0 表数据
post方式 请求地址:
http://localhost:9001/crawler/V01/truncateTable
请求报文:
{
"tableName":"covid19_1",
"isToTruncate":"true"
}
响应:
{
"returnCode": "000000",
"returnMsg": "清空表操作成功!"
}
这时候再去数据库查看这个数据库表 数据已经被清空了
调用案例截图:
项目截图: 系统查询对应地区: 可视化大屏: 世界: ![在这里插入图片描述](https://img-blog.csdnimg.cn/1ddf875
后续还会有ui界面的设计介绍,有问题私信~
2022/1/16 by krystal
|