WEBスクレイピングの技術と懸念事項

# 1. WEBスクレイピング
昨今のビッグデータ等の風潮において、いかに多くのデータを収集するかといったことが求められてくる。

その技術の一つとして、WEBスクレイピングが採用されることがある。

この記事では、WEBスクレイピングの手法とその利用に関しての注意事項などをまとめていきたいと思います。

# 2. WEBスクレイピングとは？

>ウェブスクレイピング（英: Web scraping）とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラー[1]あるいはウェブ・スパイダー[2]とも呼ばれる。 通常このようなソフトウェアプログラムは低レベルのHTTPを実装することで、もしくはウェブブラウザを埋め込むことによって、WWWのコンテンツを取得する。
(Wikipediaより)

# 3. WEBスクレイピングにおける課題

3-1.　IPブロッキング
3-2.　会社の倫理・コンプライアンスへの準拠


## 3-2. 会社の倫理・コンプライアンスへの準拠

### 3-2-1. 著作権法

結論から、言うと、、スクレイピング行為によるサーバへの負荷、該当サイトの利用規約に該当の記載が無ければ、**情報を解析することが目的である場合**には、例外的に著作権者の同意を得ることなく、スクレイピングによって取得した他社情報などを記録媒体に記録したり翻案することに問題はないというのが一般的見解のようです。（2020/02/23時点）

#### 著作権法 第47条の5 （電子計算機による情報処理及びその結果の提供に付随する軽微利用等）

[第47条の5](https://hourei.net/law/345AC0000000048#a47_5)　電子計算機を用いた情報処理により新たな知見又は情報を創出することによつて著作物の利用の促進に資する次の各号に掲げる行為を行う者（当該行為の一部を行う者を含み、当該行為を政令で定める基準に従つて行う者に限る。）は、公衆への提供又は提示（送信可能化を含む。以下この条において同じ。）が行われた著作物（以下この条及び次条第2項第2号において「公衆提供提示著作物」という。）（公表された著作物又は送信可能化された著作物に限る。）について、当該各号に掲げる行為の目的上必要と認められる限度において、当該行為に付随して、いずれの方法によるかを問わず、利用（当該公衆提供提示著作物のうちその利用に供される部分の占める割合、その利用に供される部分の量、その利用に供される際の表示の精度その他の要素に照らし軽微なものに限る。以下この条において「軽微利用」という。）を行うことができる。ただし、当該公衆提供提示著作物に係る公衆への提供又は提示が著作権を侵害するものであること（国外で行われた公衆への提供又は提示にあつては、国内で行われたとしたならば著作権の侵害となるべきものであること）を知りながら当該軽微利用を行う場合その他当該公衆提供提示著作物の種類及び用途並びに当該軽微利用の態様に照らし著作権者の利益を不当に害することとなる場合は、この限りでない。

一　電子計算機を用いて、検索により求める情報（以下この号において「検索情報」という。）が記録された著作物の題号又は著作者名、送信可能化された検索情報に係る送信元識別符号（自動公衆送信の送信元を識別するための文字、番号、記号その他の符号をいう。）その他の検索情報の特定又は所在に関する情報を検索し、及びその結果を提供すること。

二　**電子計算機による情報解析を行い、及びその結果を提供すること。**

三　前二号に掲げるもののほか、電子計算機による情報処理により、新たな知見又は情報を創出し、及びその結果を提供する行為であつて、国民生活の利便性の向上に寄与するものとして政令で定めるもの

２　**前項各号に掲げる行為の準備を行う者（当該行為の準備のための情報の収集、整理及び提供を政令で定める基準に従つて行う者に限る。）は、公衆提供提示著作物について、同項の規定による軽微利用の準備のために必要と認められる限度において、複製若しくは公衆送信（自動公衆送信の場合にあつては、送信可能化を含む。以下この項及び次条第2項第2号において同じ。）を行い、又はその複製物による頒布を行うことができる。**ただし、当該公衆提供提示著作物の種類及び用途並びに当該複製又は頒布の部数及び当該複製、公衆送信又は頒布の態様に照らし著作権者の利益を不当に害することとなる場合は、この限りでない。

### 3-2-2. 判例

[岡崎市立中央図書館Webサイトから新着図書データを自動で取得するプログラムを実行し、同サイトの一部機能を利用できない状態にしたため、逮捕された容疑者が事件について解説(2010/5/25)](http://librahack.jp/)

[スクレイピングの倫理①海外のトラブル事例](https://qiita.com/umihico/items/bab223a959d8cfa7b11f)

### 3-2-3. 利用規約の確認

個人情報保護、荒らしを防止するためにスクレイピングを禁止しているサービスがあります。

#### 3-2-3-1. 例1：マッチングアプリ Pairs

例えば、マッチングアプリ Pairsは、利用規約で明確にスクレイピングやクローリングを禁止しています。

> 当社は、投稿コンテンツの利用を、利用者自身を除く、他の利用者その他の第三者に許諾するものではなく、利用者は他の利用者の投稿コンテンツの権利を侵害する行為を行ってはならないものとします。また、利用者は投稿コンテンツをクロール等で自動的に収集、解析する行為も行ってはならないものとします。(利用規約 | Pairs)

#### 3-2-3-2. 例2：Twitter

同様に、Twitter社も利用規約にスクレイピングを禁止しています。

> Twitterから提供されている当社の現在利用可能な公開インターフェースを経由する（かつ、その使用条件を遵守する）ことなく、その他の何らかの手段（自動その他を問わず）でTwitterにアクセスまたはその検索を行うか、またはアクセスまたは検索を試みること。ただしTwitterと別途締結した契約によりこれを行うことが特に認められている場合は、この限りではありません。Twitterのクローリングは、robots.txtファイルの規定による場合には許可されます。ただし、Twitterの事前の承諾なしにスクレイピングを行うことは明示的に禁じられています。(ルール | Twitter)

# 4. WEBスクレイピングの手法

- 人間によるコピーアンドペースト
- 全文検索と正規表現マッチ
- HTTPプログラミング
- データマイニングアルゴリズム
- DOM解析
- HTMLパーサ
- ウェブスクレイピングソフトウェア
- 垂直統合プラットフォーム
- 意味注釈認識

# 5. 検討した方法

## 5-1. ウェブスクレイピングソフトウェア(OctoParse)を用いたスクレイピング

[OctoParse](https://www.octoparse.jp/)の内蔵ブラウザで指定したWebページを開き、抽出したいデータを選択すると、クローラが作られる。プログラミングの知識不要、誰でもカンタンに利用可能。 クローラを実行すると、WEBサイトにある様々なデータをご要望の形式で出力可能。

サポートとしても、日本語に対応している、且つ、返答が早いです。

### メリット

- ブラウザ操作のため、無限スクロール、ログインが必要なサイトへの対応が容易
- Bot判定に引っかかりにくい


### デメリット

- ブラウザ操作のため、処理が重い。高速処理には不向き。


## 5-2. Pythonを用いたスクレイピング

### メリット

- フレームワークやライブラリが豊富
- 処理が早い

### デメリット

- ブラウザ操作等（無限スクロール、JavaScriptによる処理）への対応にカスタマイズが必要

## 6. 実践的に参考にしたいサイト

[［Python入門］Beautiful Soup 4によるスクレイピングの基礎 (1/2)](https://www.atmarkit.co.jp/ait/articles/1910/18/news015.html)
[10分で理解する Beautiful Soup](https://qiita.com/Chanmoro/items/db51658b073acddea4ac)
[実践/現場のPythonスクレイピング流儀](https://qiita.com/ryuta69/items/c84501993635c72540a7)


# 参考文献

[PythonでWebスクレイピングする時の知見をまとめておく](https://vaaaaaanquish.hatenablog.com/entry/2017/06/25/202924)
[ウェブスクレイピング - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0)
[スクレイピングは違法？3つの法律問題と対応策を弁護士が5分で解説](https://topcourt-law.com/internet_security/scraping-illegal#i)
[【保存版】Pythonでスクレイピングする方法を初心者向けに徹底解説！【サンプルコードあり】](https://dividable.net/python/python-scraping)