クローラーの特性
状態を持つクローラー
HTTPはステートレスに設計されたプロトコルです
状態を持ちたい時は、Cookieを使います。
必ずしも、クローラー作成で、Cookieの送受信を実装する必要もない。RequestライブラリのSessionオブジェクトを使う。
また、Refererでも状態を表すことができる。
ログインの実装などに使う。
JavaScriptを解釈するクローラー
SPAなどは、HTMLにコンテンツを含まれていない。その場合h、JavaScriptを解釈する必要がある。
などが自動操作ツールとしてあります。
不特定多数のWebサイトを対象とするクローラー
Google botなど
この3つの特性があるが、どのパターンのクローラーであっても以下の点に気をつけた方がいい。
収集したデータの利用において注意
- 著作権
- 利用規約と個人情報
を気をつけないといけません。
クローリングの負荷に関する注意
- 同時接続数
- クロール間隔
を意識し、負荷を意識しないといけない。
robots.txt
Webサイトの管理者がクローラーに対して特定のページをクロールしないよう指示数ために、robots.txtとrobots metaタグが広く使われている。
robots.txt: Webサイトのトップディレクトリに配置されるテキストファイル
robots metaタグ: クローラーへの指示が記述されている。
urllib.robotparserというPythonのライブラリを使うと、robots.txtの情報を取得できる。
XMLサイトマップ
Webサイトの管理者がクローラーに対してクロールして欲しいURLのリストを提示捨ためのXMLファイル。
XMLサイトマップを参照してクロールすると、クロールが必要なページだけで済むので効率的でうす。
連絡先の明示
User-Agentヘッダーに、任意の文字列を記入して、アクセスする。
ステータスコードとエラー処理
ステータスコードによって、エラー処理をかえておくことで、ネットワークエラー(接続できないなど)の場合はリトライするといった処理ができる。