SpringBoot小实战——定时任务(微博热搜爬取)
跟大家分享一个超有趣的实战小项目,页面可配置定时任务,代码案例已实现微博热搜爬取。
源码文末获取!!!
效果展示
展示页
操作页
任务执行效果图
相关技术介绍
SpringBoot+Layui+Jpa 快捷搭建系统实现数据增删查改
- 后端框架SpringBoot
- 前端页面Layui
- 数据库技术Jpa
Quartz
Quartz
是Java
定时任务领域一个非常优秀的框架,由OpenSymphony
(一个开源组织)开发。如果你的定时任务没有分布式需求,但需要对任务有一定的动态管理,例如任务的启动、暂停、恢复、停止和触发时间修改,那么Quartz
非常适合你。
这个框架进行了优良地解耦设计,整个模块可以分为三大部分:
Job
:顾名思义,指待定时执行的具体工作内容;Trigger
:触发器,指定运行参数,包括运行次数、运行开始时间和技术时间、运行时长等;Scheduler
:调度器,将Job
和Trigger
组装起来,使定时任务被真正执行;
简单示例
public static void main(String[] args) throws Exception {
// 1.创建Scheduler的工厂
SchedulerFactory factory = new StdSchedulerFactory();
// 2.从工厂中获取调度器实例
Scheduler scheduler = factory.getScheduler();
// 3.创建JobDetail实例,并与对应Job类绑定(Job执行内容)
JobDetail job = JobBuilder.newJob(HotSearchCrawlJob.class)
.withIdentity("job1", "group1") // job的name和group 后续启停任务的唯一标识
.build();
// 4.构建Trigger实例,每隔2s执行一次,可使用SimpleScheduleBuilder或者CronScheduleBuilder
Trigger trigger = TriggerBuilder.newTrigger()s
.withIdentity("trigger1", "group1") // trigger的name和group 后续修改的唯一标识
.startNow() //默认当前时间启动
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")) //两秒执行一次
.build();
// 5.注册任务和定时器
scheduler.scheduleJob(job, trigger);
System.out.println(System.currentTimeMillis());
// 6.启动 调度器
scheduler.start();
// 主线程睡眠3分钟
TimeUnit.MINUTES.sleep(3);
// 7,然后关闭调度器
scheduler.shutdown();
System.out.println(System.currentTimeMillis());
}
爬虫
网络爬虫就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器能做的事情,爬虫都能够做。
一般浏览器F12就可以调出开发者工具,可以在网络功能模块分析网页请求连接(如:微博请求热搜排行数据https://weibo.com/ajax/side/hotSearch)、也可以在元素模块查看html原始内容,借助正则表达式提取匹配数据。
总结
一直觉得定时任务是个很有意思的功能,定期自动运行十分省心,适用于批处理任务或数据收集与分析。通过这项目不但可以学到系统增删查改,而且可以对定时任务有更深的体验,也能感受下数据爬虫。
案例完整代码获取
关注微信公众号 菜鸟乐编程,然后发送:SpringBoot定时任务
(ps:一字不能差哦)