皆さんは
スクレイピングという言葉をご存じでしょうか?
例えばPythonでの機械学習を行うために必要な大量のデータが必要な場合や、あるサイトの情報を定期的に取得したい場合などに役立ちます。
ここでは
- スクレイピングって何?
- Pythonでスクレイピングはどうやるの?
といった疑問に回答しつつ、Pythonでスクレイピングする方法を解説します。
なお、ここではrequestsを使ったスクレイピングについて解説します。
Seleniumを使ったスクレイピングはこちら↓
※Seleniumの記事は次書く予定
目次
スクレイピングとは
スクレイピングとは「Webサイトから情報を収集する」技術の一つです。
主にhtmlファイルを解析して中身のデータを取得することを目的としています。スクレイピングができるようになると、他のWebサイトから情報を収集するのが容易になります。
※スクレイピングの注意点
スクレイピングは他のWebサイトから情報を取得することなので、著作権に違反するようなことはできません。
例えばスクレイピングで得たデータをそのまま公開し、そのデータで直接利益を得るといった行動は違反となります。
しかし、日本ではスクレイピングの規制が非常にゆるく、スクレイピング時の著作権の取り扱いは「データ分析、教育目的、および引用目的の範囲であれば、そのスクレイピングは著作権法上認められる範囲」とされています。
参考→https://www.itmedia.co.jp/news/articles/1710/10/news040.html
つまり、機械学習のためのデータ収集自体は問題なく、例えば大量の画像をスクレイピングで取得して、それをTensorFlow等のディープラーニングFWで学習させた成果物を、営利目的に公開・販売すること自体は特に問題ないようです。
しかし、先ほども言いましたが、取得した大量のデータをそのまま公開するのは違法です。注意しましょう。
※筆者は法律の専門家ではありません。よって、情報が間違っている、または法律の改正により、スクレイピング時の著作権法上認められる範囲が限られる可能性があります。スクレイピングを営利目的で扱う場合は専門家にご相談の上ご活用ください。
【Pythonでのスクレイピング】requestsを使ったスクレイピング方法
では実際にPythonでスクレイピングをやってみましょう。
いくつか方法がありますが、ここではrequestsを使ってhtmlを取得し、beautiful soupで取得したhtmlを解析します。
先にpipを使ってインストールしておきましょう。
pip install requests beautifulsoup4
beautiful soupは beautifulsoup4という名前なので注意しましょう。
requests
requestsはhtmlを取得するためのサードパーティライブラリです。
実はpythonにはurllibという標準ライブラリがあるのですが、requestsの方がよりシンプルに使えるので、サードパーティ製ライブラリが使えるのであれば、基本にrequestsを使うことが多いです。
requests.get()でhtmlを取得する
では実際にrequestsを使ってhtmlを取得してみましょう。
import requestsurl = 'https://webhack.jp/'response = requests.get(url)print(response.text)