【发布时间】:2015-04-15 20:38:10
【问题描述】:
我正在使用 Crawler4j 来简单地从抓取的页面中获取 HTML。它成功地为我的测试站点存储了大约 50 页的检索到的 HTML。它使用我实现的shoudVisit 方法,它使用我实现的visit 方法。这些都运行没有任何问题。文件也写入没有问题。但是在所有页面都被访问和存储之后,它并没有停止阻塞:
System.out.println("Starting Crawl");
controller.start(ExperimentCrawler.class, numberOfCrawlers);
System.out.println("finished crawl");
第二个println 语句永远不会执行。在我的存储目标中,爬虫创建了一个名为“frontier”的文件夹,它持有锁定(我无法删除它,因为爬虫仍在使用它)。
这是我给它的配置设置(尽管我设置的设置似乎并不重要):
config.setCrawlStorageFolder("/data/crawl/root");
config.setMaxDepthOfCrawling(1);
config.setPolitenessDelay(1000);
config.setMaxPagesToFetch(50);
config.setConnectionTimeout(500);
抓取完成后大约一分钟出现错误:
java.lang.NullPointerException
at com.sleepycat.je.Database.trace(Database.java:1816)
at com.sleepycat.je.Database.sync(Database.java:489)
at edu.uci.ics.crawler4j.frontier.WorkQueues.sync(WorkQueues.java:187)
at edu.uci.ics.crawler4j.frontier.Frontier.sync(Frontier.java:182)
at edu.uci.ics.crawler4j.frontier.Frontier.close(Frontier.java:192)
at edu.uci.ics.crawler4j.crawler.CrawlController$1.run(CrawlController.java:232)
at java.lang.Thread.run(Unknown Source)
是什么阻止了爬虫退出?它在“frontier”文件夹中写入了什么?
【问题讨论】:
-
如果你觉得我的回答合适你能接受吗?
-
这当然是一条有用的信息,但我不想在尝试之前将答案标记为已接受。我会尽可能给新版本一个机会。已经有一段时间了,所以我不再从事同一个项目。
标签: web-crawler blocking crawler4j