素人がPythonでWebスクレイピングを実装する2

よこのじ(@yokonoji_work)です。

素人がPythonでWebスクレイピングを実装する」の第2回です。今回は、スクレイピングとは何か、スクレイピングの利用用途、スクレイピングを使用する際の注意点についてです。

スクレイピングとは?

スクレイピングとは、Webサイトから希望する特定のデータを収集(抽出)する技術・作業のことです。スクレイピングを行うプログラムのことをスクレイパーといいます。

WebサイトのHTML構造の収集を行うクローリングという作業があります。このクローリングによりWebサイト全体の情報を取得して、その中から欲しいデータを取得するのがスクレイピングになります。

また、外部サイトからデータを取得する方法にAPI(Application Programming Interface)がありますが、これはサービス側が提供するデータに一定の条件を設けており、取得できるデータが限られています。このような場合でも、Webサイトに表示されている情報を直接取得するスクレイピングであれば、希望のデータを取得することができます。

スクレイピングの利用用途

スクレイピングを利用して何をするか考えるヒントに、利用用途を調べてみました。

  • 株価やECサイトなどの価格情報を取得して、価格推移を記録する
  • Webサイトの検索順位を取得して、SEOに有効な対策を把握する
  • APIでは取得できないデータを取得する
  • 楽天市場から商品のレビューを取得する
  • Webサイトから連絡先情報を取得する
  • あるメーカーの商品・型番一覧を取得する

スクレイピング使用時の注意点

岡崎市立中央図書館事件

愛知県の岡崎市立中央図書館で起こった岡崎市立中央図書館事件は、図書館の検索システムに障害が発生して利用者の一人が逮捕されたものです。

これは、検索システムに対してクローリングを行っていたある人物が作成したクローラーが検索システムに過剰なリクエストを送っているとみなされたものでした。しかし、クローラーはリクエストの送信間隔に制限を設けるなどの適切な設計がされたもので、根本的な原因が検索システムにあったことから不起訴となっています。

しかしながら、クローリングを伴うスクレイピングを行うことは、一歩間違えれば事件に発展する可能性があるので扱いには注意する必要があります。この点については、設計に組み込む必要がありそうです。

スクレイピングの禁止

スクレイピングは外部サイトに対してリクエストを送るので、程度はありますがサーバーに負荷を与えてしまいます。これによる表示速度への影響などのコンテンツ提供の品質低下を避けるためにスクレイピングを禁止しているサービスもあります。

例えば、Yahoo!ファイナンスとTwitterはスクレイピングを禁止しています。これらの規約に反する利用を行った場合はアクセス拒否などの処置を取られることや賠償問題に発展することもありますので注意が必要です。

著作権の侵害

他人のコンテンツで、一般的に知られている内容ではないオリジナリティのあるものに対しては著作権があります。ですので、スクレイピングにより著作物を取得して著作権の侵害とならないように注意する必要があります。

しかし、著作物であっても条件を満たせば利用しても問題ありません。著作権の侵害に当たらない利用とは、私的利用(第30条)情報解析(第47条の7)のためのスクレイピングです。

スクレイピングの対象を決定するにあたっては、著作権とは何かを理解する必要があります。

ポイント1 著作権って何のためにあるの?
自分の考えや気持ちを作品として表現したものを「著作物」、著作物を創作した人を「著作者」、著作者に対して法律によって与えられる権利のことを「著作権」と言います。著作権制度は、著作者の努力に報いることで、文化が発展することを目的としています。

ポイント2 著作物にはどんなものがあるの?
著作物とは「自分の考えや気持ちを他人のまねでなく自分で工夫して、言葉や文字、形や色、音楽というかたちで表現したもの」です。それにはさまざまな種類があります。

ポイント3 著作権はどんな権利なの?
著作権は著作者人格権と著作権に分けられ、それぞれさまざまな種類の権利があります。

著作権とはどんな権利?

 

Webスクレイピングの基礎から実用例など、全般的に学べます。

素人がPythonでWebスクレイピングを実装する1
素人がPythonでWebスクレイピングを実装する3
素人がPythonでWebスクレイピングを実装する4
素人がPythonでWebスクレイピングを実装する5
素人がPythonでWebスクレイピングを実装する6
素人がPythonでWebスクレイピングを実装する7
素人がPythonでWebスクレイピングを実装する8