爬蟲(chóng)的監(jiān)控俊戳。
利用WebMagic 的這個(gè)功能惨奕,可以查看爬蟲(chóng)的執(zhí)行情況——已經(jīng)下載了多少頁(yè)面雪位、還有多少頁(yè)面、啟動(dòng)了多少線(xiàn)程等信息梨撞。該功能通過(guò)JMX 實(shí)現(xiàn)雹洗,可以使用Jconsole 等JMX 工具查看本地或者遠(yuǎn)程的爬蟲(chóng)信息。推薦閱讀:JMX整理卧波。
注意: 如果你自己定義了Scheduler时肿,那么需要用這個(gè)類(lèi)實(shí)現(xiàn)MonitorableScheduler 接口,才能查看“LeftPageCount” 和“TotalPageCount” 這兩條信息幽勒。
一個(gè)例子
添加監(jiān)控非常簡(jiǎn)單嗜侮,獲取一個(gè)SpiderMonitor 的單例SpiderMonitor.instance(),并將想要監(jiān)控的Spider 注冊(cè)進(jìn)去即可啥容。你可以注冊(cè)多個(gè)Spider 到SpiderMonitor 中锈颗。
package com.sima.crawler;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.monitor.SpiderMonitor;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import javax.management.JMException;
/**
* Created by cfq on 2017/4/30.
*/
public class MonitorTest {
public static void main(String[] args){
Spider spider = Spider.create(new GankRepoPageProcessor())
.addUrl("http://gank.io")
.addPipeline(new ConsolePipeline())
.thread(5);
try {
SpiderMonitor.instance().register(spider);
} catch (JMException e) {
e.printStackTrace();
}
spider.start();
}
}
查看監(jiān)控信息
命令行輸入jconsole(windows下是在DOS下輸入jconsole.exe)即可啟動(dòng)JConsole。
選擇啟動(dòng)WebMagic的本地進(jìn)程咪惠,連接后選擇“MBean”击吱,點(diǎn)開(kāi)“WebMagic”,就能看到所有已經(jīng)監(jiān)控的Spider信息了遥昧!
這里可以選擇“操作”覆醇,在操作里可以選擇啟動(dòng)-start()和終止爬蟲(chóng)-stop(),這會(huì)直接調(diào)用對(duì)應(yīng)Spider的start()和stop()方法炭臭,來(lái)達(dá)到基本控制的目的永脓。