Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21097

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

$
0
0

クローラーの特性

状態を持つクローラー

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

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

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


Viewing all articles
Browse latest Browse all 21097

Trending Articles