問題タブ [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.
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)ページフェッチャーはどのように機能しますか(簡単に説明してください)
質問がばかげている場合は、助けていただければ幸いです。
web-crawler - 特定の一連の Web サイトを使用して、特定のドメインの最新の記事をクロールする方法は?
特定のドメイン (「コンピューター サイエンス」) のすべての最新記事を、特定の一連の Web サイト (「ScienceDirect」など)から取得するプログラムを構築することに関心があります。ご存知のように、一部の Web サイトでは、次のように各研究論文のページを公開しています。http://www.sciencedirect.com/science/article/pii/S108480451400085X 各ページには、特定の論文の情報が含まれています。
この目的に最適なツール (オープンソース)は何ですか? 一般的な Web クローラー (Apache Nutch など) は、Web 全体をクロールするための一般的なフレームワークを提供しますが、私の場合は、Web サイト固有のクローラーが必要です。
web-crawler - 基本的なcrawler4jをフォーカスされたクローラーに変換します
シード URL からデータを取得し、ページをダウンロードできる基本的なクローラーを実装しました。さらに、指定された深さに達するまで、クローラーを同じシード Web サイトに保持できます。 事前定義されたキーワードの最小しきい値を超えた場合にのみページがダウンロードされるように、クローラーにさらに制限を課すにはどうすればよいですか? shouldvisit() 関数にそのようなメソッドはありますか?
java - クローラー4jを使用してスクレイプを取得するには?
私はこれを4時間続けていますが、何が間違っているのかわかりません。私は2つのファイルを持っています:
- MyCrawler.java
- コントローラー.java
MyCrawler.java
コントローラー.java
構造は次のとおりです。
以下を使用して、WINDOWS マシンでこれをコンパイルしようとします。
これは完全に機能し、最終的には次のようになります。
ただし、入力すると:
それは爆撃します:
だから、やるべきことをやっていないと思います。この新しい実行可能クラスを MyCrawler.class に「認識」させるもの。コマンドラインのjavac部分でクラスパスをいじってみました。また、環境変数で設定しようとしました....運が悪いです。
どうすればこれを機能させることができますか?
アップデート
このコードのほとんどは、Google Code ページ自体から取得しました。しかし、私はそこに何をしなければならないのか分かりません。これを試しても:
運がない。どういうわけか、Controller.class は MyCrawler.class を認識していません。
更新 2
問題は明らかにクラスを見つけることができないため、問題ではないと思いますが、いずれにせよ、ここに「CrawlControllerコントローラー」の署名があります。ここから撮影。
「MyCrawler」を通過しているように、実際には「クローラー」を通過しています。問題は、アプリケーションが MyCrawler が何であるかを認識していないことです。
java - Java Web アプリケーションでタスクをブロックし、Heroku サーバーでタイムアウトを要求する
Java Web プログラミングは初めてです。Web クローラーを作成しようとしています。Crawler4jサンプル コードを使用しています。
私の問題は、再投稿リクエストを送信すると、クロール タスク (ブロッキング タスク) が完了するまでに時間がかかり、Heroku ホスティングのリクエスト タイムアウトが 3 秒であるため、同期クロール タスクを実行できないことです。同じプログラムがローカル マシンで問題なく動作します。
私が読んだところによると、基本/無料のオファーで Heroku のタイムアウトを変更することはできません。
これを非同期タスクとして起動し (CrawlerController.startNonBlocking() 関数を使用して実行できることはわかっています)、それが完了するのを待って、クロール操作の結果を表示できるかどうか疑問に思っていました。
java - TimerTask で使用している間、crawler4j が動作しない
特定の間隔で特定の Web サイトをクロールできるように、クローラーを使用しようとしています。このために、タイマーにクローラーを組み込むことを試みてきました。ただし、タイマーを使用して最初にクロールが成功した後は、常にコンソールに次のように表示されます。
確認するために 10 秒間待機しているスレッドが機能していないようです... 確認するためにさらに 10 秒間待機しているスレッドが機能しておらず、これ以上の URL がキューにありません... すべてのクローラーが停止しています。プロセスを終了しています...最終的なクリーンアップの前に 10 秒間待機しています...
タイマーを使用した後続のすべてのクロール。クローラーが再び機能しなくなりました。ソースコードを調べて原因を突き止めましたが、失敗しました。
コードは次のとおりです。
public class CrawlerScheduler extends TimerTask {
}