Webスクレイピングのやり方と違法性について【Python】

IT

・Webスクレイピングをやりたい方
・Webスクレイピングで何ができるか知りたい方
・違法性が気になる方

Web上の情報があふれかえる現在では、自動で情報を取得し、分析するWebスクレイピングという技術の需要が高まっています。
Pythonを使用することで、容易に実現が可能なのでぜひ技術習得してみてください。

ただし、このWebスクレイピングには使い方によっては違法になる場合があります。
便利な技術ですが、用法・容量はきちんと守らなくてはいけません。

なので、やり方もそうですが、法律についても解説していきますので、一緒に学んでいきましょう。

Webスクレイピングとは?

Webスクレイピングは、Webサイト上のデータをプログラムにより取得する技術のことを言います。
WebサイトはHTMLという言語で記載されていますので、その言語を取得、解析し必要な情報のみを取得することができます。

多量の情報が氾濫しているWeb上の情報を収集する上では、このようなプログラムを使用がどうしても必要になってくることから、需要の高い技術となっています。

ただし、違法性の問題も多くあるため、法の知識にも明るい必要があります。
Webスクレイピングの違法性に関しては次の項で説明しています。

Webスクレイピングのやり方

Webスクレイピングを実際にやってみましょう。
使う言語は、現在注目されているPython3を使用していきます。
(Pythonの注目されている理由⇒「Pythonはなぜ注目されている?選ばれている理由は?」)
(Python2からの移行方法⇒「【Python】2系がサポート終了!3系への移行が必要です!」)

今回のPythonで使用するライブラリは、2つです。

 ①requests(Python3標準ライブラリ)
 ②BeautifulSoup

BeautifulSoupは、標準ではないためライブラリのダウンロードから必要になりますので、そこからはじめましょう。

BeatifulSoup取得

以下のコマンドを「コマンドプロンプト」から実行しましょう。

 # pip3 install beautifulsoup4

BeautifulSoupのダウンロードが開始され、以下の画像のように完了すればOKです。

HTML情報を取得する

前回のダウンロードで、準備が整ったので、ここからは実勢にWebページの情報を取得していきましょう。

まずは、Pythonで以下のプログラムを書いて実行してみましょう。

 import requests

 GetHTML=requests.get(“https://narumama.net/”)
 print(GetHTML.headers)

以下のように、取得先のWebページの情報が出てくればOKです。

取得したHTMLのデータクレンジング

取得したHTMLデータは、機械が読むためにかなり多くの情報が記載されています。
必要な情報だけを取得するためには、データクレンジングを行い不要な部分を削除する必要があります。

それを行うのが一番はじめにダウンロードしたBeautifulSoupです。
前回HTMLの情報を取得するのに書いたプログラミングに追記して、データクレンジングを行っていきましょう。

 import requests
 from bs4 import BeautifulSoup

 GetHTML=requests.get(“https://narumama.net/”)   #取得したいURLを指定
 Parser=BeautifulSoup(GetHTML.content, “html.parser”)
 print(Parser.find(“h2”))  #取得したいデータ構造を指定

以下のように取得したいページのタイトルが出てきたらOKです。

このようにWeb上のデータを取得も簡単にできそうですね。
ただし、取得するデータ構造を指定してあげる必要があるので、それは実際のWebページが探し出す必要があります。

取得対象のHTML構造の探し方

取得対象のHTML構造の探し方は、あまりにも説明が難しいので一例としてご紹介します。
詳しくは、HTMLについて勉強を進めることをお勧めします。

まずは、取得対象のサイトにfirefoxでアクセスし、取得したいデータを右クリックし、要素の調査を押しましょう。

すると、画面下部に解析したHTML構造が表示されます。
ここでは、見出しの「Recommend Article」を取得したい場合は、「h2」のclass「ArticleTitle」を指定すれば良いことがわかります。

ということで、今までに作ったプログラムを以下のように改修してみます。

 import requests
 from bs4 import BeautifulSoup

 GetHTML=requests.get(“https://narumama.net/”)   #取得したいURLを指定
 Parser=BeautifulSoup(GetHTML.content, “html.parser”)
 print(Parser.find(h2,attrs={“class”,ArticleTitle}).text)  #取得したいデータ構造を指定

以下の画像のように出てくればこれで、取得完了です。

Webスクレイピングの活用

簡単にWeb上のデータ取得のできるWebスクレイピングはかなり便利な技術です。
多種多様なことができるので一部の活用事例をご紹介します。

天気情報

簡単な例だと、天気予報を行っているサイトから自分の住む地域の天気予報情報だけを取得するということが可能です。
その後のデータ利用方法としては、メールでその情報を携帯に毎朝送付したり、より発展させると雨の日は傘を持っていくように通知を出すこともできそうです。

市場価格動向チェック

より企業での実用を考えると、市場価格の動向確認などに利用することが考えられます。

例えば、ECサイトであれば、Amazonや楽天などから特定の商品価格情報を毎日取得することで、価格変動をチェックすることができます。
市場価格から自社の類似商品に関する価格が適正か値上がり値下がりのタイミングなどを分析することが可能です。

株価データ解析

株主投資を行っている人であれば、株価データの分析も実用的かもしれません。

株価情報を提供しているWebサイト情報を取得し、Pythonのデータ分析ライブラリで分析することで上昇トレンド下降トレンドの分析が行えます。
さらに、分析した結果を用いれば、上昇傾向のときに買う下降傾向では売るなどの自動売買システムを構築することもできるでしょう。

Webスクレイピングの違法性について

Webスクレイピングはとても便利な技術で使い方次第では、大きな利益を生むことのできるものです。
活用事例にあるようにWeb上にある多大なビックデータを全て人間の手で取得し、解析し、蓄積するのはまず無理ですからね。

ただし、ここで一度取得しようとしているデータが他人が作成したものだということに立ちかえらねばなりません。
取得する手法も、解析手法も、蓄積データベースも全て自分のものだとしても、データソースは他人のものを拝借しているので、法的に問題ないかを確認していかなくてはいけません。

ここでは、Webスクレイピングが違法となる可能性がある利用事例と実際に違法と判決された判例をご紹介します。

著作権による違法性

まず、Webスクレイピングで当たる問題としては、取得しようとしているデータの著作権についてです。

著作権(ちょさくけん、英語: copyright、コピーライト)は、知的財産権(知的所有権)の一種であり、美術、音楽、文芸、学術など作者の思想や感情が表現された著作物を対象とした権利である。

https://ja.wikipedia.org/wiki/%E8%91%97%E4%BD%9C%E6%A8%A9

著作権は、「独創性」と「美術、音楽、文芸、学術など作者の思想や感情が表現された創作物」の2点を満たすことで著作物として認められ、創作者に与えれる権利です。Webサイトは創作者が独自に作ったものであり、創作者の知識や思想から導きだされる製作物として著作物として認められます。(また、実際に2点目の「~思想や感情が表現された創作物」の要件はかなりゆるいため、ほとんどのものが当てはまります。)

著作権によって保護された著作物は、所有者の同意なく「コピー」、「保存」、「二次利用」するなどの行為を行うと直ちに違法となってしまいますので、今回のWebスクレイピングもこの原則から言うと違法になってしまいます。

ただし、全てを違法としてしまった場合は、Web上の情報を活用することがほぼできなくなってしまうため、以下のような例外を作ることで、WebスクレイピングのようなWeb情報の活用/分析が可能なようになっています。

※2019年1月1日の法改正されていますので、他のサイトにて「著作権法47条の7」と記載されているものは、改正後は「著作権法30条の4」と「著作権法47条の5」にて内容が少し変わり記載されています。

改正著作権法30条の4(著作物に表現された思想又は感情の享受を目的としない利用)の一部抜粋
著作物は、次に掲げる場合その他の当該著作物に表現された思想又は感情を自ら享受し又は他人に享受させることを目的としない場合には、その必要と認められる限度において、いずれの方法によるかを問わず、利用することができる。ただし、当該著作物の種類及び用途並びに当該利用の態様に照らし著作権者の利益を不当に害することとなる場合は、この限りでない。

一 著作物の録音、録画その他の利用に係る技術開発又は実用化のための試験への利用
二 情報解析への利用
三 前二号のほか、著作物の表現についての人の知覚による認識を伴うことなく、電子計算機の情報処理の過程その他の利用に供する場合

http://www.cric.or.jp/db/domestic/a1_index.html#2_3e

改正著作権法47条の5(電子計算機による情報処理及びその結果の提供に付随する軽微利用等)の一部抜粋
電子計算機を用いた情報処理により新たな知見又は情報を創出することによって著作物の利用の促進に資する次の各号に掲げる行為を行う者(政令で定める基準に従うものに限る)は、次の各号に掲げる行為の目的上必要と認められる限度において、当該行為に付随して、いずれの方法によるかを問わず、利用(利用に供させる部分の占める割合、量、表示の精度その他の要素に照らし軽微なものに限る。)を行うことができる。ただし、著作権を侵害するものであることを知りながら当該軽微利用を行う場合その他著作物の種類及び用途並びに当該軽微利用の態様に照らし著作権者の利益を不当に害することとなる場合は、この限りでない。
 一 検索情報の特定・所在検索サービス
 二 情報解析サービス
 三 前二号のほか、電子計算機による情報処理により、新たな知見又は情報を創出し、結果を提供する行為であって、国民生活の利便性向上に寄与するものとして政令で定めるもの

http://www.cric.or.jp/db/domestic/a1_index.html#2_3e

著作権法の一部を抜粋したものを記載しましたが、Webスクレイピングしようと考えている人は全容を知っていた方が良いです。
簡単に言ってしまうと、
 「著作者の利益を不当に害することの無く、割合、量、表示の精度、その他の要素を見て軽微であれば、情報解析に著作物を使用しても可!」
です。

上記のため、情報解析のためWebスクレイピングを行うのは、著作者に不利益が出ない限り可となりますが、その情報を何らかの形でアウトプットする場合は、解析した結果として独創性を持たせていない場合は違法となる場合があるようです。(そのままのコピーを出したのでは、元の著作者の不利益を生じさせます。)

サーバ負荷による違法性

情報解析のためにWebスクレイピングで情報取得するのは可とわかりましたが、「著作権者の利益を不当に害する」場合は違法となる点をより掘り下げる必要があります。

情報と取得しようとしているサーバは他者が保有しているものであり、Webサイトとしてサービス提供を行っているものになります。
このサーバに対して、Webスクレイピングを過度に行った場合は、高負荷がかかったことで著しくサービス提供に影響が出る可能性が考えられます。

このような場合は、サイバー攻撃として有名な「DOS攻撃」と同じと見られ、「偽計業務妨害」として違法となる可能性があります。
何回までならOKというのは、サーバの性能によっても変わってきますし、「業務影響」という観点では更に定義が難しく、明確な基準はありません。一番簡単なOKラインとしたら「自然検索程度の頻度」であれば、通常のサービス利用と変わらない負荷となるので、目安とするのが良いかもしれません。

プログラムに実行させるため、アクセス頻度はきちんと使用者がコントロールしておかないと、「知らない」ではすまないことがあるのをきちんと把握しおかなくてはいけませんね。

サイトの利用方法遵守(robot.txt)

Webスクレイピングをする場合、同時にWebクローリングを行うことも多いかと思います。

ポイント

【Webクローリング】
 インターネット上のサイトをURLのリンクなどから順に順に巡回するプログラミングシステム

Webスクレイピング単体だと、指定したURLのみから情報を取得することになりますが、
Webクローラーと組み合わせると、プログラムしたサイトを巡回し、複数のサイトの情報を自動で取得するプログラムを組むことができます。
基本的にはWebスクレイピングはWebクローラーと組み合わせることで真価を発揮する技術です。

なのでWebクローラーで気をつけてあげる必要がある点に関しても解説します。
各サイトには、Webクローラー用に「robot.txt」というものが用意されています。

この「robot.txt」は、Webクローラーに対して、巡回を許可するページなどを定義したもので、検索エンジン(Yahoo,Googleなど)への指示も行っています。このようにサイト管理者は、Webクローラーに対して許可/不許可を設定しているのですが、強制力としては法的に定義されたものではないこともあり、使用者側のモラル次第になっているのが実情です。サイト管理者もSEO対策にのみ使用しており、検索エンジン以外は守る必要が無いと考えている人も多いようです。

実際に違法となった判例

ここでは、Webスクレイピングを使用したことで実際に違法になった判例を見てみましょう。

Webスクレイピングの違法性に関して、考える機会を設けた事件として岡崎市立中央図書館事件を例に説明していきます。
この事件は、2010年3月頃に発生し、Webクローラーとスクレイピングにより使用者の男性が逮捕されています。誤解されないように後にも書きますが、この男性のプログラムは違法性がないと後々にわかり、「犯罪性なし」と判断されています。

もともと、岡崎市立図書館の蔵書検索システムの使い勝手に満足していなかった方が、自身でWebクローラーとスクレイピングにより図書情報を取得していました。この行為により、他の利用者により蔵書検索システムに接続しづらいなどの苦情が寄せられたことから事件が発覚し、図書館は被害届を出し、高頻度(とはいえ、検索サービスに影響が出るとは想定できないほど常識的なレベル)のアクセスを行っていた男性が偽計業務妨害の容疑で逮捕されることになりました。

その後の取調べで、男性に故意の業務妨害の意思が無かったこと、プログラムにも違法性が無かったことから起訴猶予訴処分が認められており、はじめにも書きましたが最終的には「違法性なし」と判断されています。

本事件は、当時かなりの物議を醸しました。

  • 専門家の分析では、男性が使用したクローリングプログラムはきちんとアクセス回数の制御がされており、アクセス負荷がかからないような配慮がされていた。
  • 図書館側のソフトウェアに不具合があり、それが直接の原因となった。
  • 同様の全国図書館の横断検索サービスを提供している「カーリル」も同様のクローリングを行っていることを問い合わせた結果、「カーリルは会社なので問題ありません」という回答だった。

このような事態は技術の発展した現在のWebサイトでは稀ですが、管理の行われていないサイトでは、脆弱性の多い製品をいまだに使い続けているサイトもあります。クローリングはある程度は使用者で制御可能とはいえ、巡回するサイトを全てクローリングしても問題ないサイトかを確認するのは現実的ではありません。

当時、蔵書検索システムの「robot.txt」は全てのクローラーに対して、アクセス拒否を行っていたという話もあることから、男性のクローラーが「robot.txt」を遵守しないプログラム設計になっていたのかもしれません。

このような受け手側のサーバの問題によりクローリングが影響を及ぼしてしまう可能性もあることを覚悟して、最低限「robot.txt」を遵守するようにされた方が良いのかもしれません。この事件においても、使用者の男性には非が無いにも関わらず、逮捕という不名誉を受けてしまいました。

実は、逮捕されてしまった男性が書いた記事がありますので、是非読んでみてください。
実際の当時の情報や時系列をかなり詳細にまとめられており、検察庁へも起訴猶予の理由をお聞きに行ったりとかなり情報が載っています。

逮捕という社会的に大きな代償を払ったにもかかわらず、ネット社会の発展に何も活かされませんし、マイナスの貢献にもなりかねません。まとめサイトを公開することで、ネット社会の発展に貢献できたり、ネットを積極的に活用している方々の参考になれば幸いです。
Librahack : 容疑者から見た岡崎図書館事件

まとめ

いま流行りのWebスクレイピングに関して、ご紹介してきましたが、いかがだったでしょうか?

とても便利な技術ではありますが、一歩間違えると違法となる可能性がある物だと認識していただければと思います。
きちんと自分で使うプログラミングを制御し、取得元のサイトへ不利益を起こさないように配慮して、より効率的な使い方を生み出していただければ幸いです。

コメント

タイトルとURLをコピーしました