(一)目的
设置页面下载成功、失败的监听器,方便失败的时候做一些善后处理,比如把失败的url再加入到爬取队列里面,这样就不会遗漏一些页面的爬取。
通过设置Request.CYCLE_TRIED_TIMES设置失败重试次数,可以强制把url加到待爬队列里面,避免去重机制把url看成已爬过的。
(二)代码
private static void addSpiderListeners(Spider spider) {
ArrayList<SpiderListener> spiderListeners = new ArrayList<>();
spiderListeners.add(new SpiderListener() {
@Override
public void onSuccess(Request request) {
}
@Override
public void onError(Request request) {
Integer cycleTriedTimes = (Integer) request.getExtra(Request.CYCLE_TRIED_TIMES);
request.putExtra(Request.CYCLE_TRIED_TIMES, cycleTriedTimes == null ? 1 : cycleTriedTimes + 1);
spider.addRequest(request);
}
});
spider.setSpiderListeners(spiderListeners);
}