爬虫4j在爬行后不断阻塞



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

什么可以阻止爬虫退出? 它写到"边界"文件夹的是什么?

您使用的是旧版本的 crawler4j。

你提到的错误非常令人恼火,实际上是内部数据库爬虫4j正在使用的错误:BerklyDB。

Crawler4j,在内部使用前沿目录,你不应该担心或触摸它,因为它只供内部使用。

综上所述 - 我已经修复了该错误,您应该下载最新版本的 crawler4j,其中包含我的错误修复(包括您提到的许多错误修复)。

因此,请访问我们的新网站:https://github.com/yasserg/crawler4j

按照有关安装它的说明进行操作(专家?并享受新的和非常改进的版本。

外部 API 几乎没有变化(只是非常轻微)。

享受新的(当前为 v4.1)版本。

相关内容

  • 没有找到相关文章

最新更新