こんにちは、技術チームの陳です。 

今月も技術チーム内で技術勉強会を開催したので、その内容をお伝えしたいと思います!

今回はSCMチームの孫さんによる、【crawler浅入浅出】の勉強会でした。

■crawlerとは?

ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムである。「ボット(Bot)」、「スパイダー」、「ロボット」などとも呼ばれる。

■crawler vs 著作権

Webコンテンツは、すべて誰かの著作物となります。その為、著作権法に従うものとなります。著作権法では、次の目的は著作物が自由に使える場合とされています。

・個人や家族間で使用する。

Web検索サービスを提供する。

情報解析をする。

■crawlerのタスク分解

crawlerとは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムである。「ボット(Bot)」、「スパイダー」、「ロボット」などとも呼ばれる。

① ウェブ上の文書や画像など → 目標urlとcontentの指定

② 周期的に → batch設定

③ 取得

④ 自動的にデータベース化する → DB保存

③は一番難しそうですね。どうすれば取得できますか?

一般的には、3つの方法があります。

  • API
  • 手動
  • クローラー

■crawlerフレームワーク:scrapy

An open source and collaborative framework for extracting the data you need from websites.

In a fast, simple, yet extensible way.

■scrapy使い方

  • Spider

クロール対象のサイトへのリクエスト、レスポンスのパース処理を記述します。どのようにサイトを辿って、ページの内容をどうパースするかのロジックが Spider に書かれます。

  • allowed_domains

このスパイダーがクロールできるドメインを含む文字列のオプションのリスト。

  • start_urls

特定のURLが指定されていない場合, スパイダーがクロールを開始するURLのリスト. したがって, ダウンロードされる最初のページはここにリストされたページになります. 後続のURLは, 開始URLに含まれるデータから順番に生成されます。

  • rules

1つ(または複数)の Rule オブジェクトのリストです. 各 Rule は, サイトをクロールするための特定の動作を定義します。

  • parse(response)

これは, リクエストがコールバックを指定していないときに, ダウンロードされたレスポンスを処理するために Scrapy に使用されるデフォルトのコールバックです。

■scrapy setting

  • リクエスト間隔を設定する

settings.py を開いて DOWNLOAD_DELAY にリクエストを送信する間隔(秒)をセットしましょう(デフォルトではコメントアウトされています)。リクエスト間隔が短すぎると DoS攻撃と同等のアクセスとなってしまうので、少なくとも数秒程度は間隔を空けるようにしましょう。

  • レスポンスのキャッシュを設定する

Scrapy ではレスポンスのキャッシュ機能も用意されています。Spider の実装をして試行錯誤する時には何度も同じページへのリクエストが実行されてしまうので、特に開発中にはキャッシュを有効にした方がいいです。

■感想

日常の仕事や個人勉強などには、クローラーを活用してネット上の情報を簡単に手に入れられますが、著作権問題に注意する必要があります。また、頻繁的にサイトを巡回してしまうと、サイトのサーバに負荷が掛かるため、常識範囲内で利用したほうがいいと思います。

この記事が気に入ったら
いいね ! しよう

Twitter で