Я пытаюсь использовать crawler4j, как было показано в этот пример, и независимо от того, как я определяю количество сканеров или меняю корневую папку, я продолжаю получать эту ошибку из кода, указывающего:
"Необходимые параметры: rootFolder (он будет содержать промежуточные данные сканирования) numberOfCralwers (количество одновременных потоков)" Основной код ниже:
public class Controller {
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.out.println("Needed parameters: ");
System.out.println("\t rootFolder (it will contain intermediate crawl data)");
System.out.println("\t numberOfCralwers (number of concurrent threads)");
return;
}
/*
* crawlStorageFolder is a folder where intermediate crawl data is
* stored.
*/
String crawlStorageFolder = args[0];
/*
* numberOfCrawlers shows the number of concurrent threads that should
* be initiated for crawling.
*/
int numberOfCrawlers = Integer.parseInt(args[1]);
Был аналогичный вопрос о том, что именно я хочу знать здесь , но я не совсем понял решение, например, где я должен был ввести java BasicCrawler Controller "arg1" "arg2" . Я запускаю этот код в Eclipse, и я все еще новичок в мире программирования. Я был бы очень признателен, если бы кто-то помог мне понять эту проблему.
Ответ 1 · Aparajith Chandran
Если вы не даете никаких аргументов при запуске файла, вы получите эту ошибку. Поместите следующее как комментарий к вашему коду или удалите его.
if (args.length != 2) {
System.out.println("Needed parameters: ");
System.out.println("\t rootFolder (it will contain intermediate crawl data)");
System.out.println("\t numberOfCralwers (number of concurrent threads)");
return;
}
И после этого установите корневую папку в ту, где вы хотите хранить метаданные.
Ответ 2 · cuneytykaya
Чтобы использовать Crawler4j в своем проекте, вы должны создать два класса. Один из них - CrawlController (который запускает краулер в соответствии с параметрами), а другой - Crawler.
Просто запустите метод main в классе Controller и посмотрите просканированные страницы
Вот файл Controller.java:
import edu.uci.ics.crawler4j.crawler.CrawlConfig;
import edu.uci.ics.crawler4j.crawler.CrawlController;
import edu.uci.ics.crawler4j.fetcher.PageFetcher;
import edu.uci.ics.crawler4j.robotstxt.RobotstxtConfig;
import edu.uci.ics.crawler4j.robotstxt.RobotstxtServer;
public class Controller {
public static void main(String[] args) throws Exception {
RobotstxtConfig robotstxtConfig2 = new RobotstxtConfig();
System.out.println(robotstxtConfig2.getCacheSize());
System.out.println(robotstxtConfig2.getUserAgentName());
String crawlStorageFolder = "/crawler/testdata";
int numberOfCrawlers = 4;
CrawlConfig config = new CrawlConfig();
config.setCrawlStorageFolder(crawlStorageFolder);
PageFetcher pageFetcher = new PageFetcher(config);
RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
System.out.println(robotstxtConfig.getCacheSize());
System.out.println(robotstxtConfig.getUserAgentName());
RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
CrawlController controller = new CrawlController(config,
pageFetcher, robotstxtServer);
controller.addSeed("http://cyesilkaya.wordpress.com/");
controller.start(Crawler.class, numberOfCrawlers);
}
}
Вот файл Crawler.java:
import java.io.IOException;
import edu.uci.ics.crawler4j.crawler.Page;
import edu.uci.ics.crawler4j.crawler.WebCrawler;
import edu.uci.ics.crawler4j.url.WebURL;
public class Crawler extends WebCrawler {
@Override
public boolean shouldVisit(WebURL url) {
// you can write your own filter to decide crawl the incoming URL or not.
return true;
}
@Override
public void visit(Page page) {
String url = page.getWebURL().getURL();
try {
String url = page.getWebURL().getURL();
System.out.println("URL: " + url);
}
catch (IOException e) {
}
}
}
Ответ 3 · UltraBates
В Eclipse: -> Нажмите на запуск -> Нажмите на конфигурации запуска...
Во всплывающем окне:
Во-первых, левый столбец: убедитесь, что ваше приложение выбрано в поддиректории Java Application, иначе создайте новое (нажмите "Новое").
Затем в центральном окне перейдите на "Аргументы".
Запишите свои аргументы в разделе "Аргументы программы". После того, как вы написали свой первый аргумент, нажмите клавишу ввода для аргументов второго и т. д. (= новая строка, потому что args - это [])
Затем нажмите Применить
И нажмите "Выполнить".