如何安排爬网程序4j爬网控件定期运行



我正在使用crawler4j构建一个简单的网络爬虫。我想做的是每10分钟调用一次爬网控制。我创建了一个servlet,它在Tomcat服务器启动时启动,在servlet中,我使用ScheduledExecutorService进行调度。然而,爬网控件只为我获取一次数据(不是像我希望的那样每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);
}

Crawler4j 3.6版及更高版本修复了该问题。我使用的是3.5版本,所以我遇到了这个问题。后来我升级到4.1版本,它开始工作了。

相关内容

  • 没有找到相关文章

最新更新