# 状态监听
# 状态监控器
在使用风铃虫时,我们一般都很关心风铃虫实例的运行情况,风铃虫对此提供了内置支持。
状态状态监控器是同步的,请勿在此执行任何可能阻塞进程的操作
核心代码如下
1 创建一个自定义状态监控器
import com.yishuifengxiao.common.crawler.Task;
import com.yishuifengxiao.common.crawler.domain.eunm.Statu;
import com.yishuifengxiao.common.crawler.monitor.StatuObserver;
public class CustomStatuObserver implements StatuObserver {
/**
* 任务的状态发生了变化
* @param task 任务
* @param statu 变化之后的状态
*/
@Override
public void update(Task task, Statu statu) {
//自定义业务逻辑
}
}
2 应用自定义状态监控器
//获取风铃虫实例
Crawler crawler = ...
//注意此步骤一定要在风铃启动之前进行
crawler.setStatuObserver(new CustomStatuObserver())
//启动风铃虫
crawler.start();
# 事件监听器
事件监听器主要是监听风铃虫实例在运行过程中的各种事件,使用自定义事件监听器的示例如下
事件监听器是同步的,请勿在此执行任何可能阻塞进程的操作
1 创建一个自定义事件监听器
import com.yishuifengxiao.common.crawler.Task;
import com.yishuifengxiao.common.crawler.domain.entity.Page;
import com.yishuifengxiao.common.crawler.listener.CrawlerListener;
public class CustomCrawlerListener implements CrawlerListener {
/**
* 下载页面失败的消息
*
* @param task 当前任务信息
* @param page 原始的页面信息
* @param e 失败的原因
*/
@Override
public void onDownError(final Task task, Page page, Exception e) {
//自定义业务逻辑
}
/**
* 下载页面成功的消息
*
* @param task 当前任务信息
* @param page 原始的页面信息
*/
@Override
public void onDownSuccess(final Task task, Page page) {
//自定义业务逻辑
}
/**
* 解析页面失败的消息
*
* @param task 当前任务信息
* @param page 原始的页面信息
* @param e 失败的原因
*/
@Override
public void onExtractError(final Task task, Page page, Exception e) {
//自定义业务逻辑
}
/**
* 解析页面成功的消息
*
* @param task 当前任务信息
* @param page 原始的页面信息
*/
@Override
public void onExtractSuccess(final Task task, Page page) {
//自定义业务逻辑
}
/**
* 任务因为被目标服务器封杀而退出
*
* @param task 当前任务信息
*/
@Override
public void exitOnBlock(final Task task) {
//自定义业务逻辑
}
/**
* 任务因为已经完成而退出
*
* @param task 当前任务信息
*/
@Override
public void exitOnFinish(final Task task) {
//自定义业务逻辑
}
}
2 应用自定义事件监控器
//获取风铃虫实例
Crawler crawler = ...
//注意此步骤一定要在风铃启动之前进行
crawler.setCrawlerListener(new CustomCrawlerListener ())
//启动风铃虫
crawler.start();
← 提取模拟器 Selenium下载器 →