0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonでクローラーを開発するときに気をつけること

Last updated at Posted at 2020-06-07

クローラーの特性

状態を持つクローラー

HTTPはステートレスに設計されたプロトコルです
状態を持ちたい時は、Cookieを使います。
必ずしも、クローラー作成で、Cookieの送受信を実装する必要もない。RequestライブラリのSessionオブジェクトを使う。
また、Refererでも状態を表すことができる。

ログインの実装などに使う。

JavaScriptを解釈するクローラー

SPAなどは、HTMLにコンテンツを含まれていない。その場合h、JavaScriptを解釈する必要がある。

  • Selenium (プログラムからブラウザークォ自動操作するツール)
  • Puppeteer (Google Chromeを自動操作するためのNode.jsのライブラリ)

などが自動操作ツールとしてあります。

不特定多数の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ヘッダーに、任意の文字列を記入して、アクセスする。

ステータスコードとエラー処理

ステータスコードによって、エラー処理をかえておくことで、ネットワークエラー(接続できないなど)の場合はリトライするといった処理ができる。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?