我使用crawler4j构建一个简单的网络抓取工具。我想要做的是每10分钟调用一次爬网控件。我创建了一个在我的Tomcat服务器启动时启动的servlet,在servlet中我使用ScheduledExecutorService进行调度。但是,爬行控件只能获取数据ONCE(不是每10分钟就像我想要的那样)。有没有更好的方法来安排我的抓取每10分钟执行一次?下面是我在servlet中的代码。
public class ScheduleControl extends HttpServlet {
private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
@Override
public void init() throws ServletException {
final Runnable crawler = new Runnable() {
@Override
public void run() {
String[] args = {"/Users/kevin/Desktop", "7"};
try {
SaleCrawlControl.main(args);
} catch (Exception e) {
System.out.println("Exception " + e);
}
}
};
final ScheduledFuture crawlerHandle = scheduler.scheduleAtFixedRate(crawler, 0, 10, MINUTES);
scheduler.schedule(new Runnable() {
@Override
public void run() {
crawlerHandle.cancel(true);
scheduler.shutdown();
}
}, 60, MINUTES);
}
答案 0 :(得分:0)
Crawler4j 3.6及更高版本具有解决此问题的修复程序。我使用的是3.5版,所以我遇到了这个问题。我后来升级到4.1版,它正在运行。