こちらの記事はこのような方の悩みを解決するために書いています。
- Pythonをインストールしたからスクレイピングをしてみたいんだけど、気をつけることはなにかあるのかな?
- スクレイピングで捕まった人がいるって聞いたけど、悪いことなの?
- そもそもスクレイピングってなに?
ご覧いただきありがとうございます。まっすーです。
中小企業診断士他多数の資格を持っているので、専門的なアドバイスが可能です。
今回はPythonでおこなうことのできるスクレイピングの説明と、やっていいこと悪いことの解説をしますね~。
まず、Pythonのインストールのやり方を知りたい、という方は下記のリンクをご参照ください。
スクレイピングとは?
スクレイピングはプログラムで自動的にWebサイトの情報を取得すること
まず、スクレイピングとは何なのか説明します。Wikipediaによると、
ウェブスクレイピング(英: Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。 通常このようなソフトウェアプログラムは低レベルのHTTPを実装することで、もしくはウェブブラウザを埋め込むことによって、WWWのコンテンツを取得する。
「WWWのコンテンツを取得する」ということから、インターネットのWebサイトの情報を取ってくる、というように読めます。
当然ながら、人間が手動でWebサイトの情報を取得していく、いわゆる「ネットサーフィン」とは異なり、スクレイピングはソフトウェアプログラムを使って自動で迅速にデータを取得していくというのがポイントと言えます。
スクレイピング活用の具体例
スクレイピング活用の具体例について説明します。
まず、スクレイピングの手順は
- 取得したい情報を保有しているWebサイトを特定する
- 対象のWebサイトのHTMLデータをクローラによって取得し、そのデータから必要な情報だけをスクレイピングしてサーバに保存する
- 保存したデータを整理、解析して、目的に合ったデータベースを作成する
- 作成したデータベースを活用する
となります。
スクレイピングをおこなうことで、たとえばこういうことができるんです。
ネット販売の最安値の確認
楽天市場やYahoo!ショッピング、au PAY マーケットなどのネットショップでの販売価格の一覧を入手して、最も安い販売店から購入することができます。
もちろん、これは手動で検索して確認することもできるのですが、その手間が膨大なため、普通はいくつかのサイトを調べて、その中の最安値を選びますよね。
スクレイピングをおこなうことで検索を自動化することができるようになり、多くのデータの中から最安値の販売店を選ぶことができます。
ネット販売の販売先の選定、売価の設定
スクレイピングは仕入れだけではなく、ネットで販売するような場合の販売戦略(マーケティング)の実施にも役立ちます。
例えば、売ろうと思っている商品のAmazonでの販売価格やメルカリやラクマなどのフリマサイトの販売価格、買取屋の販売価格などの一覧を入手して、そこから最も利益を出せる販売先を選定することができます。
利益商品の選定
仕入先と販売先の情報をスクレイピングで自動で入手するお話をしましたが、これらの情報を集めることができるということは、そもそもどの商品を選定すればいいか?という、個人で商売をおこなう場合に最も難しい問題を解決してくれます。
膨大なネットの情報の中から利益商品を自動で見つける、技術がなければできませんが、是非やっていきたいですね。
結局のところ、個人でビジネスをしようとした場合、選択と集中は必須です。
マーケティング戦略の基本である4P(Product・Price・Place・Promotion)のうち、個人が自由にできるのはProductとPlaceです。
- Product(商品)・・・どの商品を選ぶか?
- Price(価格)・・・値段をいくらにするか?
- Place(場所)・・・どこで売るか?
- Promotion(プロモーション)・・・どのように宣伝するか?
Priceは品薄商品であれば別ですが、市場の価格に左右されることが多いですし、Promotionは個人でやるにはお金がかかりすぎてしまいます。
そのためProduct、つまり「どの商品を選ぶか?」とPlace、つまり「どこで売るか?」を選定するのにスクレイピングを活用するというのは非常に有効といえます。
スクレイピングの例として、私はこちらの楽天ポイントの利用履歴のリストをスクレイピングで取得してExcelファイルとして保存する、という試みをしています。
こちらの記事でプログラムのコードとともに公開していますので、ご参照ください。
スクレイピングでやっていいこと
スクレイピングで問題になるケースは3つ考えられます。
逆を言えばこの3つで問題にならなければ、スクレイピングをやっていいということができそうです。
- サービス利用規約に違反していないこと
- 著作権法に違反していないこと
- スクレイピング先のサーバーに大きな負荷をかけないこと
それぞれについて解説していきますね。
サービス利用規約に違反していないこと
1つ目は、インターネットで提供されているサービスのサービス利用規約に違反していないことです。
たとえばTwitterでは、コンテンツの幅広い再使用を奨励および容認しており、Twitter APIというTwitterの情報を他のサービスで紹介するようなインターフェースを提供しています。
ですが、Twitterではサービス利用規約においてスクレイピングの禁止を定めており、これをおこなうことはサービス利用規約違反となりますのでやってはいけません。
8.コンテンツおよび本サービスの利用に対する制限
(iii) Twitterから提供されている当社の現在利用可能な公開インターフェースを経由する(かつ、その使用条件に従う)ことなく、その他の何らかの手段(自動その他を問わず)で本サービスへのアクセスもしくはその検索を行うか、またはアクセスもしくは検索を試みること。ただし、Twitterと別途締結した契約によりこれを行うことが特に認められている場合はこの限りではありません。
Twitterサービス利用規約より引用
著作権法に違反していないこと
2つ目は、著作権法に違反していないことです。
何やら難しそうな話ですね。
著作権というのは聞いたことがあるでしょうか?
誰かが作った著作物(文章、絵、曲など)には著作権というものがあり、保護されます。当たり前の話かもしれませんが、誰かが作った曲を自分でダウンロード販売することなんかできませんよね。
これは著作権法という法律によって、著作物(この場合は曲)の著作権が保護されているからです。
スクレイピングは、Webサイトの情報を取得してくることになりますので、著作物に当たる情報を勝手に取ってくることが著作権法に触れないようにする必要があります。
逆に言えば、著作権法に触れない範囲でデータを活用するというのは問題ありません。
ここではスクレイピングによるデータ取得で問題ない例を挙げておきます。
私的利用のためにデータを取得する
これは、例えばインターネット上の画像を私的利用するためにダウンロードことです。著作権法第30条に規定されています。
著作権法
第三十条 著作権の目的となつている著作物(以下この款において単に「著作物」という。)は、個人的に又は家庭内その他これに準ずる限られた範囲内において使用すること(以下「私的使用」という。)を目的とするときは、次に掲げる場合を除き、その使用する者が複製することができる。
一 公衆の使用に供することを目的として設置されている自動複製機器(複製の機能を有し、これに関する装置の全部又は主要な部分が自動化されている機器をいう。)を用いて複製する場合 二 技術的保護手段の回避(第二条第一項第二十号に規定する信号の除去若しくは改変(記録又は送信の方式の変換に伴う技術的な制約による除去又は改変を除く。)を行うこと又は同号に規定する特定の変換を必要とするよう変換された著作物、実演、レコード若しくは放送若しくは有線放送に係る音若しくは影像の復元(著作権等を有する者の意思に基づいて行われるものを除く。)を行うことにより、当該技術的保護手段によつて防止される行為を可能とし、又は当該技術的保護手段によつて抑止される行為の結果に障害を生じないようにすることをいう。第百二十条の二第一号及び第二号において同じ。)により可能となり、又はその結果に障害が生じないようになつた複製を、その事実を知りながら行う場合 三 著作権を侵害する自動公衆送信(国外で行われる自動公衆送信であつて、国内で行われたとしたならば著作権の侵害となるべきものを含む。)を受信して行うデジタル方式の録音又は録画を、その事実を知りながら行う場合
ただし、少し前に話題になりましたが著作権侵害コンテンツ、たとえば違法アップロードされた動画をダウンロードするようなのはダメですので注意が必要です。これは著作権法第119条第3項に記載があります。
著作権法
第百十九条 3.第三十条第一項に定める私的使用の目的をもつて、有償著作物等(録音され、又は録画された著作物又は実演等(著作権又は著作隣接権の目的となつているものに限る。)であつて、有償で公衆に提供され、又は提示されているもの(その提供又は提示が著作権又は著作隣接権を侵害しないものに限る。)をいう。)の著作権又は著作隣接権を侵害する自動公衆送信(国外で行われる自動公衆送信であつて、国内で行われたとしたならば著作権又は著作隣接権の侵害となるべきものを含む。)を受信して行うデジタル方式の録音又は録画を、自らその事実を知りながら行つて著作権又は著作隣接権を侵害した者は、二年以下の懲役若しくは二百万円以下の罰金に処し、又はこれを併科する。
なお、2020年6月時点では「録音か録画された著作物」が対象になっていましたが、2021年1月1日から全著作物が対象になり、マンガや小説などの違法ダウンロードも違法となりました。
いずれにしても、個人でネットショップの販売価格をチェックする、販売先サイトでの競合相手の販売価格をチェックするなどの用途でスクレイピングを利用するのは著作権法上は問題ないと考えられます。
情報解析のためにデータを取得する
また、情報解析のためにデータを取得するのは著作権法に違反しません。これは2019年1月1日に施行された著作権法第四十七条の五に規定されています。
著作権法
第四十七条の五 電子計算機を用いた情報処理により新たな知見又は情報を創出することによつて著作物の利用の促進に資する次の各号に掲げる行為を行う者(当該行為の一部を行う者を含み,当該行為を政令で定める基準に従つて行う者に限る。)は,公衆への提供又は提示(送信可能化を含む。以下この条において同じ。)が行われた著作物(以下この条及び次条第二項第二号において「公衆提供提示著作物」という。)(公表された著作物又は送信可能化された著作物に限る。)について,当該各号に掲げる行為の目的上必要と認められる限度において,当該行為に付随して,いずれの方法によるかを問わず,利用(当該公衆提供提示著作物のうちその利用に供される部分の占める割合,その利用に供される部分の量,その利用に供される際の表示の精度その他の要素に照らし軽微なものに限る。以下この条において「軽微利用」という。)を行うことができる。
ただし,当該公衆提供提示著作物に係る公衆への提供又は提示が著作権を侵害するものであること(国外で行われた公衆への提供又は提示にあつては,国内で行われたとしたならば著作権の侵害となるべきものであること)を知りながら当該軽微利用を行う場合その他当該公衆提供提示著作物の種類及び用途並びに当該軽微利用の態様に照らし著作権者の利益を不当に害することとなる場合は,この限りでない。 一 電子計算機を用いて,検索により求める情報(以下この号において「検索情報」という。)が記録された著作物の題号又は著作者名,送信可能化された検索情報に係る送信元識別符号(自動公衆送信の送信元を識別するための文字,番号,記号その他の符号をいう。)その他の検索情報の特定又は所在に関する情報を検索し,及びその結果を提供すること。 二 電子計算機による情報解析を行い,及びその結果を提供すること。 三 前二号に掲げるもののほか,電子計算機による情報処理により,新たな知見又は情報を創出し,及びその結果を提供する行為であつて,国民生活の利便性の向上に寄与するものとして政令で定めるもの
難しいことが書いていますが、インターネット上の情報を検索し、検索結果を表示する場合に、そのサイトの情報をサムネイルで表示するようなサービス(所在検索サービス)や、インターネット上の情報を収集してAI等による情報解析を行い、その結果を提供するようなサービス(情報解析サービス)は問題がないと書いています。
加えて、その他にも国民生活の利便性を向上するようなサービスでのスクレイピングの利用も認められます。
スクレイピング先のサーバーに大きな負荷をかけないこと
スクレイピングをおこなう場合、そのデータ取得元のサーバーに対して多くの情報のリクエストを送ることになります。
このリクエストの送信を短時間で膨大におこなってしまった場合、相手のサーバーに大幅な負荷がかかってしまい、最悪サーバーがダウンしてしまう可能性があります。その結果、相手先の本来の業務に影響が出てしまうことになります。
もし、このようなサーバーダウン、結果として業務に影響が出てしまった場合、民法上の損害賠償責任(業務ができていた場合に得られたはずの利益や、サーバー復旧にかかる費用など)を負うことや、刑法233条の偽計業務妨害罪、刑法234条の電子計算機損壊等業務妨害罪による逮捕も考えられます。
この有名な例として、岡崎市立中央図書館事件という事件がありました。
2010年3月に岡崎市立中央図書館事件の蔵書システムに対して、ある男性がスクレイピングのために高頻度のリクエストを故意に送りつけて、図書館のWebサイトの閲覧が困難になりました。
警察の捜査の結果、その男性のスクレイピング行為により岡崎市立中央図書館事件の業務を妨害したとして、その男性を偽計業務妨害罪で逮捕しました。
この男性は結果的に起訴猶予処分になったということですが、こうしたあらぬ疑いを避けるためには、十分に気をつけてスクレイピングをおこなう必要がありますね。
ただ、この岡崎市立中央図書館事件ですが、Wikipediaの情報によると、1秒に1回のリクエストが問題になっていました。ただ、この1秒に1回のリクエストはスクレイピングをおこなう(実際にはスクレイピングをおこなうためのWebサイトの巡回であるクローリングを含みます)上ではまだ「常識的」「礼儀正しい」という評価だそうです。
この事件からは、スクレイピングをおこなう際のリクエストがどのくらいの頻度であればいいのか、よくないのかという基準はわからないので注意しなければなりません。
スクレイピングでやってはいけないこと
ここまでスクレイピングでやっていいことを書きましたが、やっていいことの反対がやってはいけないことになります。つまり、以下のとおりです。
- サービス利用規約に違反すること
- 著作権法に違反すること
- スクレイピング先のサーバーに大きな負荷をかけること
せっかくの自動化・効率化のためにスクレイピングをおこなうのですから、法律や規約に違反するとか、相手に迷惑をかけることは絶対に避けたいですよね。
まとめ
以上のとおり、スクレイピングでやっていいことといけないことをご説明しました。
スクレイピングしたデータを販売するといったビジネスをおこなわない限り、著作権法に関してはそこまで神経質になることはないでしょう。
また、サービス利用規約については、サービスを利用する際にはほとんど何も読まずに「同意する」をクリックすることがほとんどでしょうから、スクレイピングをおこなう際には改て確認する必要がありそうです。
最も気をつけなければならないのは、やはり
スクレイピング先のサーバーに大きな負荷をかけないようにすること
となりそうです。
スクレイピングをするための自動化というのは、少しプログラムを理解すれば使えるようになります。ですが、その結果としてサーバーダウンを招くようなことがあってはいけませんし、相手先のサーバーがそこまで脆弱ではなかったとしても、F5アタックのようなサイバーテロとみなされて接続を遮断されたり、警察の捜査を受けることになってはいけませんので、十分に注意しておこなう必要があります。
もしPythonに少しでも興味をもったのであれば、こちらの書籍を手にしてみてはいかがでしょうか?たくさんのイラストが使われていて初心者にもわかりやすくPythonの説明がされていますので大変おすすめです。
最後までお読みいただきありがとうございました。