1

Crawler4jクローラーを使用していくつかのドメインをクロールしています。クローラーの効率を改善したいので、クローラーが帯域幅全体を使用して、特定の期間にできるだけ多くのURLをクロールするようにします。そのために、次のことを行っています設定:-

  • 号を増やしました。クローラー スレッドを 10 に (この関数 ContentCrawler('classfilename',10); を使用)
  • 礼儀正しさの遅延を 50 ミリ秒に減らしました (Crawlconfig.setpolitenessdelay(50); を使用)。
  • クロールの深さを 2 にしています (Crawlconfig.setMaxDepthOfCrawling(2) を使用)

今私が知りたいのは: -

1) この種の設定に副作用はありますか。

2) クローラーの速度を向上させるために、これ以外に何かしなければならないことはありますか?

3)すべての設定の最大制限を教えてもらえますか(例:-一度にcrawler4jでサポートされるスレッドの最大数など)。Crawler4jのコードをすでに調べましたが、どこにも制限が見つかりませんでした。

4) robots.txt ファイルをチェックしないでドメインをクロールする方法。

5)ページフェッチャーはどのように機能しますか(簡単に説明してください)

質問がばかげている場合は、助けていただければ幸いです。

4

1 に答える 1

3

ここであなたを助けるために最善を尽くします。正確性も完全性も保証できません。

  1. b) ポリシーの遅延を減らすと、クロールするサイトの負荷が大きくなり、(小規模なサーバーでは) 長期的には受信時間が長くなる可能性があります。しかし、これは最近では一般的な問題ではないため、50ms で問題ありません。また、Web サーバーからの応答を受信するのに 250 ミリ秒かかる場合でも、このスレッドが次のページをクロールするのに 250 ミリ秒かかることに注意してください。

    c)crawlDepth の値を 2 に設定して何を達成したいのかよくわかりません。たとえば、クロールの深さが 1 の場合は、シードで見つかったすべてのサイトをクロールして停止するよりも、シードをクロールすることを意味します。(crawlDepth = 2 は、さらに 1 ステップ進むなど)。これはクロール速度には影響しません。クロール時間と見つかったページだけです。

  2. CrawlerThread およびそれがカバーするすべてのメソッド/クラス内で時間のかかるアクションを実装しないでください。最後または追加のスレッドでそれらを実行します。

  3. クローラー構成自体によって提供される制限はありません。制限は、CPU (可能性は低い) またはクロールするサイトの構造 (可能性が非常に高い) によって設定されます。

  4. 次の行を CrawlController に追加します。robotstxtConfig.setEnabled(false);

次のようになります。

PageFetcher pageFetcher = new PageFetcher(config);
RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
robotstxtConfig.setEnabled(false);
RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer);
  1. ページ フェッチャーは、いくつかのパラメーターを設定し、指定された URL の Web サービスに、以前に設定されたパラメーターを使用して HTTPget 要求を送信します。Web サーバーからの応答が評価され、応答ヘッダーやバイナリ形式の HTML コードなどの情報が保存されます。

少しお役に立てば幸いです。

于 2014-10-06T11:23:47.850 に答える