2

Web クロールの Perl スクリプトに関する管理および管理ソリューションの開発を検討しています。基本的に、現在、スクリプトは SVN に保存され、SysAdmin/devs などによって手動で開始されます。新しいソースからデータを取得する必要があるたびに、ビジネスの指示と目標を含むチケットを作成する必要があります。ご想像のとおり、最適なソリューションではありません。

このシステムには 3 つの一貫したテーマがあります。

  1. データの検索には、より適切なフレーズがないための「概念構造」があります。つまり、情報の検索は特定の経路をたどります。
  2. 私たちは非常に具体的な情報のみを探しているので、しばらくの間は大規模なクロールについて心配する必要はありません (数千から数万のページと数百万のページを考えてみてください)
  3. クロールは、サイト ベースではなく URL ベースです。

このアルファ版をより実稼働レベルのベータ版に拡張する際に、データ取得の自動化と管理を追加したいと考えています。さらに、私たちの他のシステムは Java (私はこちらの方が得意です) であり、外部の助けに大きく依存する必要がないように、perl の側面を区分したいと考えています。

通常の容疑者NutchDroidなどを評価しましたが、特定の情報検索に合わせてこれらのフレームワークを変更するのに費やした時間は正当化できません。

そこで、以下のアーキテクチャについてご意見をお聞かせください。

ソリューションを作成したい

  • perl スクリプトの管理と実行のためのインターフェースとして Java を使用する
  • 構成とデータ アクセスに Java を使用する
  • 検索のためにperlに固執する

ユースケースの例は次のとおりです。

  1. データ アナリストから、クロールの要件が提示されました
  2. perl 開発者は必要なスクリプトを作成し、この webapp を使用してスクリプトを送信します (スクリプトはファイルシステムに保存されます)。
  3. スクリプトは、特定のパラメーターを使用して webapp から開始されます ....

Webapp は、perl スクリプトの複数のスレッドを作成して、複数のクローラーを開始できる必要があります。

だから質問は

  1. どう思いますか
  2. 特にJavaからPerlを呼び出すことから、JavaとPerlの間の統合がどれほど堅実であるか
  3. 実際にperlリポジトリの一部であるそのようなシステムを誰かが使用しましたか

本当の目標は、整理されていない perl スクリプトを大量に持たないようにし、情報検索にある程度の管理と組織を配置することです。また、perl を使用して必要な Web 部分を実行できることもわかっていますが、前に述べたように、perl に焦点を合わせ続けようとしています。しかし、私はこれをすべて perl ソリューションにすることに反対ではないようです。

すべての提案や意見を受け入れます。

ありがとう

4

3 に答える 3

1

特にJavaからPerlを呼び出すことから、JavaとPerlの間の統合がどれほど堅実であるか

IMO、Java から Perl を呼び出す最良の方法は、Java に Perl プログラムを別のプロセスで起動させることです。JNI / JNA を使用して Java から直接 Perl を呼び出すこともできますが、正しく行うのは困難です。間違えると、クラッシュした JVM に対処することになります。

すべての提案や意見を受け入れます。

IMO 純粋な Perl または純粋な Java を使用すると、より保守しやすいソリューションが得られます。それが Perl を学ばなければならないことを意味するのであれば、それはそれで構いません。(適切に構造化された保守可能なアプリを Perl で作成することは可能です。それについては、訓練する必要があるだけです。)

于 2009-12-22T07:18:18.163 に答える
1

私は Lucene を使用して Java でクローラーを作成することにかなりの割合を占めてきました。実際、Web クローラーの実際の作成プロセスと構造に関する以前の関連する質問にここで回答しました。これはあなたの質問には直接当てはまりませんが、ここで言及する価値があると思います。

とにかく、私はStephen Cに同意しなければなりません。純粋な Java または純粋な perl ソリューションを使用する方が、両方を混在させるよりも良いでしょう。またはそれ以上)異なる考え方を一緒にすることは、通常、人ができる最も最適なことではありません。

あなたが説明したことは、主に実際のクロールパターンに関する部分である、自分のクローラー(最初の段落でリンクした他の回答で参照したもの)の改善についても考えさせました。特定のパターンで特定の URL をクロールするように Java アプリケーションに手動で指示する方法を開発するには、perl で行う場合と同じように、はるかに多くの時間がかかると私は信じていますが、Java でそれを行うと、最終的にははるかに使いやすい部分につながるでしょう。維持するのに苦労しない、あらゆる種類の興味深い小さな機能を備えたソフトウェアの。

一方、Java のスクリプティング側は少しややこしいです。スクリプティング API がありますが、スクリプティングはやりたいことを大まかに定義するものであり、Java は面倒なほど厳密な場合があるため、希望するほど柔軟ではありません。

本当に意見を述べるには、プログラミング言語の保守が難しい部分を最小限に抑えるべきだと思います。どれがあなた向けかはわかりませんが、perl だと思います。基本的に、言語の 1 つに専念し、それを最大限に活用します。他の言語を近道として使用しないでください。

于 2009-12-22T07:36:25.753 に答える
0

HtmlUnit または Selenium で Web クロールを試したり、Quartz を使用してスケジュールを設定したり、Glassfish などのアプリケーション サーバーにプロジェクト全体を配置したりできます。Perl を使い続けたい場合は、おそらく crontab を使用できます。Web クロールに使用できる Perl API には、適切な Cookie 処理がない場合があります。それがあなたにとって問題ではないことを願っています。これについて私が知っている唯一のハックは、wget を呼び出すことです。

于 2010-03-13T17:40:15.393 に答える