2008-08-28 21 views
11

私は、今日のWebクローラの作成/カスタマイズについて考え始めました。また、Webクローラ/ロボットエチケットについてはほとんど知りませんでした。私が見つけた礼儀作法の大部分は古くて厄介なように見えるので、Web開発者コミュニティから最新の(そして実用的な)洞察を得たいと思っています。ウェブクローラを作成する際に考慮すべき点は何ですか?

"私はサイトXYZのマークアップが条件ABCを満たしていますか?"という単純な目的のために "ウェブ"を歩くためにクローラを使用したいと思います。

これは私のために多くの疑問を提起するが、私は道から抜け出す必要がある2つの主要な質問が最初だと思う:

  • それは行く取得から少し「あやふや」を感じています - この種のものは受け入れられますか?
  • 人を怒らせないためにクローラーが取るべき具体的な考慮事項は何ですか?

答えて

9

robots.txtに従います(あまりにも攻撃的ではないと言われています)。

あなたのユーザエージェント文字列について考えることができます。これは、あなたがやっていることや連絡方法について前向きに考えるのに適しています。

+1

あなたのスパイダーをサイト管理者に紹介し、あなたの連絡先情報を入力することで、フレンドリーで上層であることがわかるように、連絡先情報をユーザーエージェントに入れることは素晴らしい方法です。自分のサイトにぶつかって問題が発生した場合は、フィードやAPIを入手するために協力する機会があります。その情報を難読化するか、それを提供できないと、すぐに斧の手に届き、あなたのドメインを禁止することによってあなたのアクセスを遮断します。 –

2

私は、あなたが引き起こしている負荷を考慮することが非常に重要だと言いたいと思います。たとえば、クローラが1つのサイトのすべてのオブジェクトを多かれ少なかれ同時に要求すると、その特定のサイトに負荷の問題が発生する可能性があります。

つまり、クローラがあまり攻撃的でないことを確認してください。

2

セッションごとに1ページずつしかアクセスしないようにしてください。技術的には、robots.txtとno-cacheのルールに従わなければなりません。必要に応じてIPをブロックすることで、人々はあなたのボットを特にブロックすることができます。

ソースコードを探しているだけで、スタイルシートの場合は<link>、JavaScriptの場合は<script src="..."></script>になるようにビルドしたいと思うでしょう。

2

負荷は大きな考慮事項です。特定のサイトをクロールする頻度と、目標を達成するために必要な最も基本的な情報は何かを制限します。あなたがテキストを探しているなら、そのようなものをすべてダウンロードしないでください。

もちろんrobots.txtに従いますが、あなたのユーザーエージェントの文字列には正確な連絡先情報が含まれていることを確認してください。ウェブ管理者があなたからの多くのリクエストを見て、好奇心が強い場合、有益なウェブページで多くの質問に答えることができます。

3

WillDeanとEinarの答えに加えて、HTTP応答コードの意味と、クローラがそれぞれに遭遇したときにどうすべきかについて読むことが大切ですあなたのパフォーマンス、そしてより湿気の多いところでは、あなたはいくつかのサイトから禁止されています。

いくつかの便利なリンク:

HTTP/1.1: Status Code Definitions

Aggregator client HTTP tests

Wikipedia

3

あなたのロボットである理由どのような/ /説明ユーザーエージェント文字列にURLを含めるようにしてくださいしてくださいクロール。

3

また、ボットのMETAタグに従うことを忘れないでください:http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

について考えるもう一つ - クモのページは、決定物事が存在するか、エラーを持っていない、あまりにも性急なことはありません。一部のページは、保守作業や短期間で修正されたエラーのためにオフラインになっています。

+1

他のページが指しているページが存在すると思われる場合は、そのページを「再試行」キューに挿入したコードを使用しています。再度失敗した場合、カウンタがリトライ回数を超えたり、オンラインに戻ったりするまで、カウンタは増加します。 –

3

良い点はすべて、ここで作られたものです。動的に生成されるJavaやJavaScriptのリンク、パラメータ、セッションID、一重引用符や二重引用符のエスケープ、相対リンクでの試みの失敗(ルートディレクトリを通過するために../../を使用)、大文字と小文字の区別、フレーム、リダイレクト、クッキー...

私は数日間行くことができますし、ちょっと。私はこれのほとんどをカバーするRobots Checklistを持っています。私はできることに満足しています。

また、オープンソースのロボットクローラコードを使用することも考えてください。なぜなら、これらのすべての問題ではあなたに大きな足取りを与えるからです。私はそれについてのページも持っています:open source robot code。希望が助けてくれる!

2

あなたのスパイダーが迷惑メールサイトで暴走するのを避けるために、サイト/ドメインやその他のもの(IP範囲、ASNなど)をブラックリストする機能を追加する必要があります。

タイムアウトや動作に対して多くの制御を行うHTTP実装が必要です。多くのサイトが無効な返信や巨大な返信、ゴミ箱のヘッダを返すか、レスポンスなしで無期限にコネクションを開いたままにすることを期待してください。

また、「ページが存在します」という200のステータスを信用しないでください。私の経験では、サイトの大部分が「見つからない」などのエラーを200回返信します(大きなHTML文書とともに)。

+1

自分のサイトに閉じ込められ、内部的に "このページは存在しませんが、私たちはあなたにそれを伝えることによって役立っています"にリダイレクトされたカスタムエラーページに対しては '200'を取得します。このページは、スパイダーの著者を本当に助けません。 –

関連する問題