爬虫自动化20200719

自动爬虫使用了spring boot的Quartz定时任务方法。

本文学习借鉴了这篇博客,感谢 gnail_oug。

添加quartz依赖

在pom.xml的dependencies下添加一个quartz依赖

1
2
3
4
5
<!-- quartz -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

编辑需要自动化的类

  1. 导入quartz包
  2. extends QuartzJobBean。
  3. override executeInternal method
1
2
3
4
5
6
7
8
9
10
11
12
// package XXXXX.XXXX.XXX;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class ClassName extends QuartzJobBean{
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
//your code
}
}

配置定时任务

  1. 创建config文件
  2. 标记 @Configuration
  3. 创建一个返回JobDetail类的方法
  4. 创建一个返回Triger类的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// package XXXX.XXX.XX;

import com.bot.afvsr.services.impl.NewsServiceImpl;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QuartzConfig {
@Bean
public JobDetail saveNews() {
return JobBuilder.newJob(NewsServiceImpl.class).withIdentity("saveJsonData").storeDurably().build();
}

@Bean
public Trigger saveNewsTrigger1() {
//10分钟执行一次
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInMinutes(10)
.repeatForever();
return TriggerBuilder.newTrigger().forJob(saveNews())
.withIdentity("saveJsonData")
.withSchedule(scheduleBuilder)
.build();
}
}

小总结

这里只有方法,没有解释,停留在知其然不知其所以然的层面上,未来有机会再深究其内部运行机制