如何安排crawler4j抓取控件定期运行?

时间:2015-02-20 19:20:07

标签: scheduledexecutorservice crawler4j

我使用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);

}

1 个答案:

答案 0 :(得分:0)

Crawler4j 3.6及更高版本具有解决此问题的修复程序。我使用的是3.5版,所以我遇到了这个问题。我后来升级到4.1版,它正在运行。