Определение параметров на crawler4j

Я пытаюсь использовать 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, и я все еще новичок в мире программирования. Я был бы очень признателен, если бы кто-то помог мне понять эту проблему.


person Octavius    schedule 21.09.2012    source источник


Ответы (3)


Если вы не даете никаких аргументов при запуске файла, вы получите эту ошибку. Поместите следующее как комментарий к вашему коду или удалите его.

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;
        }

И после этого установите корневую папку в ту, где вы хотите хранить метаданные.

person Aparajith Chandran    schedule 11.02.2013

Чтобы использовать 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) {
    }
      }
   }
person cuneytykaya    schedule 07.02.2013

В Eclipse: -> Нажмите на запуск -> Нажмите на конфигурации запуска...

Во всплывающем окне:

Во-первых, левый столбец: убедитесь, что ваше приложение выбрано в поддиректории Java Application, иначе создайте новое (нажмите «Новое»).

Затем в центральном окне перейдите на «Аргументы».

Запишите свои аргументы в разделе «Аргументы программы». После того, как вы написали свой первый аргумент, нажмите клавишу ввода для аргументов второго и т. д. (= новая строка, потому что args — это [])

Затем нажмите Применить

И нажмите «Выполнить».

person UltraBates    schedule 02.02.2016