2015-04-15 2 views
1

Я использую Crawler4j, чтобы просто получить HTML с обходных страниц. Он успешно сохраняет извлеченный HTML для моего тестового сайта около 50 страниц. Он использует метод shoudVisit, который я реализовал, и использует метод visit, который я реализовал. Они оба работают без проблем. Файлы также написаны без проблем. Но после того, как все страницы были посещены и сохранены, он не прекращает блокирование:Crawler4j сохраняет блокировку после обхода

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»?

+0

если вы найдете мой ответ подходящим, можете ли вы его принять? – Chaiavi

+0

Это, безусловно, полезная информация, но я не хочу отмечать ответ как принятый, прежде чем попробовать. Я дам новую версию, когда смогу. Это было какое-то время, поэтому я больше не работаю над тем же проектом. – Indigenuity

+0

Уверенный, справедливый – Chaiavi

ответ

1

Вы используете старую версию crawler4j.

Ошибка, о которой вы говорите, очень раздражает, и на самом деле это ошибка в innerDB crawler4j использует: BerklyDB.

Crawler4j использует внутреннюю границу пограничного каталога, и вы не должны беспокоиться или касаться его, так как он предназначен только для внутреннего использования.

Все сказанное выше - я исправил эту ошибку, и вы должны скачать последнюю версию crawler4j, которая содержит мои исправления (много исправлений, включая упомянутый вами).

Поэтому, пожалуйста, перейдите на наш новый сайт: https://github.com/yasserg/crawler4j

Следуйте инструкции по установке его и наслаждаться новым и очень улучшенную версию (Maven?).

Внешний API почти не менялся (только очень немного).

Наслаждайтесь новой (в настоящее время версией версии v4.1).

 Смежные вопросы

  • Нет связанных вопросов^_^