0

私は最近、私が働いている会社で Web クローラー Heritrix を使用していますが、しばらく検索してテストした後、ニーズを解決する方法が見つかりません。

cron でヘリトリクスを毎日自動的に実行して、Web ページのリストをクロールし、その Web のリンクがドメイン リストの Web を指しているかどうかを確認します。困難な部分と方法が見つからないのは、ドメインの 1 つを指すリンクへのすべてのトレースをログに記録することです。

ジョブのログ ファイルにはすべてのリンクがいくつかの情報と共に保存されますが、トレースは保存されません。たとえば、ジョブが完了したときにスクリプトを実行して、リスト内のドメインである brazzers を grep するため、クロール ログで「brazzers」が見つかった場合、最初から最後までのトレース全体を別のログに結果として表示する必要があります。

2015-10-25T20:18:58.369Z 200 91 http://cdn1.ads.brazzers.com/robots.txt XLEP http://cdn1.ads.brazzers.com/text/plain #021 20151025201857643+726 sha1: CPA63O5POU3CVLCH3VDDIMBJCCWRVLPC - -

これを行うことは可能ですか?それとも他の方法ですか? このようなことで非常に愚かに感じ、私はプログラミングがあまり得意ではありません

事前にどうもありがとうございました

エンリケ。

4

1 に答える 1

1

実際には、クロール ジョブの終了時に最終ログを分析する方法があります。heritrix 開発者 ( https://groups.yahoo.com/neo )の応答のおかげで、Web リンクのトレースを取得するルールができました。

crawl.log の行の 4 番目のフィールドは、ダウンロードされた URI です。行の 6 番目のフィールドは、4 番目のフィールドで指定されたダウンロードされた URI を参照した (直前の) URI を示します。したがって、通常、行の 4 番目のフィールドに「ourdomain」が見つかった場合、その行の 6 番目のフィールドで URI を取得し、crawl.log の 4 番目のフィールドとしてそれを探します。そのリファラーを見つけてフォローできます。シード URI に到達するまで、このパターンに戻ります。6 番目のフィールドには URI の代わりに「-」が表示されるため、シード URI に到達するタイミングを把握しておく必要があります (5 番目のフィールドに指定された検出パスも「-」になります)。

この方法で、このクロール インスタンスがシードから "ourdomain" にたどった特定のパスを取得できますが、このインスタンスでクローラーがたどらなかった他の複数のパスが存在する可能性があります。

これにより、ログ ファイル内の行を整理して Web リンク トレースを構築する 1 つの方法は、指定された規則に従って、例として PHP でスニペットを作成することです。

于 2015-11-01T15:42:59.913 に答える