Я берусь за crawler4j.http://code.google.com/p/crawler4j/
и простое тестовое сканирование сайта прошло успешно.но я хочу добавлять URL-адреса в случайное время в процессе выполнения.
этот код показывает следующее исключение при втором построении CrawlController.Как я могу добавить URL-адреса во время прогресса?или повторно использовать CrawlController?(также не удалось повторно использовать регистр без перестройки CrawlController.)
Есть идеи?или другой хороший сканер в Java?
edit: поскольку это может быть ошибкой, я также разместил на странице crawler4j.http://code.google.com/p/crawler4j/issues/detail?id=87&thanks=87&ts=1318661893
private static final ConcurrentLinkedQueue<URI> urls = new ConcurrentLinkedQueue<URI>();
...
URI uri = null;
while (true) {
uri = urls.poll();
if (uri != null) {
CrawlController ctrl = null;
try {
ctrl = new CrawlController("crawler");
ctrl.setMaximumCrawlDepth(3);
ctrl.setMaximumPagesToFetch(100);
} catch (Exception e) {
e.printStackTrace();
return;
}
ctrl.addSeed(uri.toString());
ctrl.start(MyCrawler.class, depth);
}else{
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:638)
at edu.uci.ics.crawler4j.crawler.PageFetcher.startConnectionMonitorThread(PageFetcher.java:124)
at edu.uci.ics.crawler4j.crawler.CrawlController.<init>(CrawlController.java:77)