0

この例で使用されているように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で実行していますが、プログラミングの世界にはまだかなり慣れていません。誰かがこの問題を理解するのを手伝ってくれたら本当にありがたいです

4

3 に答える 3

0

プロジェクトでcrawler4jを使用するには、2つのクラスを作成する必要があります。それらの1つはCrawlController(パラメーターに従ってクローラーを開始する)であり、もう1つはCrawlerです。

Controllerクラスのmainメソッドを実行するだけで、クロールされたページを確認できます

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) {
    }
      }
   }
于 2013-02-07T14:16:19.173 に答える
0

ファイルを実行しているときに引数を指定しないと、そのエラーが発生します。あなたのコードにコメントとして以下を入れるか、それを削除してください。

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

その後、ルートフォルダをメタデータを保存するフォルダに設定します。

于 2013-02-11T09:34:30.587 に答える
0

Eclipseの場合:->実行をクリック->実行構成をクリック...

ポップアップウィンドウで:

まず、左側の列:アプリケーションがサブディレクトリのJavaアプリケーションで選択されていることを確認します。それ以外の場合は、新しいアプリケーションを作成します([新規]をクリックします)。

次に、中央のウィンドウで、[引数]に進みます

「プログラム引数」の下に引数を記述します。最初の引数を記述したら、2番目の引数に対してEnterキーを押します。以下同様です...(= argsは[]であるため、改行)

次に、[適用]をクリックします

そして、[実行]をクリックします。

于 2016-02-02T22:36:38.080 に答える