問題タブ [crawler4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2063 参照

java - Crawler4j-Crawler の効率性、スケーラビリティの向上

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

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

今私が知りたいのは: -

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

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

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

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

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

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

0 投票する
0 に答える
345 参照

web-crawler - 特定の一連の Web サイトを使用して、特定のドメインの最新の記事をクロールする方法は?

特定のドメイン (「コンピューター サイエンス」) のすべての最新記事を、特定の一連の Web サイト (「ScienceDirect」など)から取得するプログラムを構築することに関心があります。ご存知のように、一部の Web サイトでは、次のように各研究論文のページを公開しています。http://www.sciencedirect.com/science/article/pii/S108480451400085X 各ページには、特定の論文の情報が含まれています。

この目的に最適なツール (オープンソース)は何ですか? 一般的な Web クローラー (Apache Nutch など) は、Web 全体をクロールするための一般的なフレームワークを提供しますが、私の場合は、Web サイト固有のクローラーが必要です。

0 投票する
1 に答える
235 参照

web-crawler - 基本的なcrawler4jをフォーカスされたクローラーに変換します

シード URL からデータを取得し、ページをダウンロードできる基本的なクローラーを実装しました。さらに、指定された深さに達するまで、クローラーを同じシード Web サイトに保持できます。 事前定義されたキーワードの最小しきい値を超えた場合にのみページがダウンロードされるように、クローラーにさらに制限を課すにはどうすればよいですか? shouldvisit() 関数にそのようなメソッドはありますか?

0 投票する
3 に答える
2628 参照

java - クローラー4jを使用してスクレイプを取得するには?

私はこれを4時間続けていますが、何が間違っているのかわかりません。私は2つのファイルを持っています:

  1. MyCrawler.java
  2. コントローラー.java

MyCrawler.java

コントローラー.java

構造は次のとおりです。

以下を使用して、WINDOWS マシンでこれをコンパイルしようとします。

これは完全に機能し、最終的には次のようになります。

ただし、入力すると:

それは爆撃します:

だから、やるべきことをやっていないと思います。この新しい実行可能クラスを MyCrawler.class に「認識」させるもの。コマンドラインのjavac部分でクラスパスをいじってみました。また、環境変数で設定しようとしました....運が悪いです。

どうすればこれを機能させることができますか?

アップデート

このコードのほとんどは、Google Code ページ自体から取得しました。しかし、私はそこに何をしなければならないのか分かりません。これを試しても:

運がない。どういうわけか、Controller.class は MyCrawler.class を認識していません。

更新 2

問題は明らかにクラスを見つけることができないため、問題ではないと思いますが、いずれにせよ、ここに「CrawlControllerコントローラー」の署名があります。ここから撮影。

「MyCrawler」を通過しているように、実際には「クローラー」を通過しています。問題は、アプリケーションが MyCrawler が何であるかを認識していないことです。

0 投票する
1 に答える
270 参照

java - Java Web アプリケーションでタスクをブロックし、Heroku サーバーでタイムアウトを要求する

Java Web プログラミングは初めてです。Web クローラーを作成しようとしています。Crawler4jサンプル コードを使用しています。

私の問題は、再投稿リクエストを送信すると、クロール タスク (ブロッキング タスク) が完了するまでに時間がかかり、Heroku ホスティングのリクエスト タイムアウトが 3 秒であるため、同期クロール タスクを実行できないことです。同じプログラムがローカル マシンで問題なく動作します。

私が読んだところによると、基本/無料のオファーで Heroku のタイムアウトを変更することはできません。

これを非同期タスクとして起動し (CrawlerController.startNonBlocking() 関数を使用して実行できることはわかっています)、それが完了するのを待って、クロール操作の結果を表示できるかどうか疑問に思っていました。

0 投票する
0 に答える
237 参照

java - TimerTask で使用している間、crawler4j が動作しない

特定の間隔で特定の Web サイトをクロールできるように、クローラーを使用しようとしています。このために、タイマーにクローラーを組み込むことを試みてきました。ただし、タイマーを使用して最初にクロールが成功した後は、常にコンソールに次のように表示されます。

確認するために 10 秒間待機しているスレッドが機能していないようです... 確認するためにさらに 10 秒間待機しているスレッドが機能しておらず、これ以上の URL がキューにありません... すべてのクローラーが停止しています。プロセスを終了しています...最終的なクリーンアップの前に 10 秒間待機しています...

タイマーを使用した後続のすべてのクロール。クローラーが再び機能しなくなりました。ソースコードを調べて原因を突き止めましたが、失敗しました。

コードは次のとおりです。

public class CrawlerScheduler extends TimerTask {

}