「データの収集や分析を効率よくやりたい!」
「スクレイピングに興味はあるけど、私にできるかな?」
上記の疑問にお答えします。
「仕事や趣味でデータ収集や分析をやってるけど、手作業では時間がかかってばかりで面倒くさい。」
とお悩みのあなた。
そのお悩み、スクレイピングを使えば解決できます。
「難しいのでは?」と思うかもしれませんが、しっかりポイントを押さえて学習すれば、スクレイピングができるようになります。
これまでプログラミングをやったことがなくても、安心してください。
私も知識ゼロの状態からWebスクレイピングを習得しました。
「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し紹介させてください。
たいらーのプロフィール
- 文系四大出身。ソフトウェア開発の経験はなしですが、IT業界に身を置いています。
- 開発者やユーザーとのパイプ役など、業務にプログラミングスキルを活かす。
- Pythonは独学で習得。スクレイピングや作業の自動化などに勤しんでいます。
スクレイピングのやり方、学習方法については、私の学習経験をベースにお伝えしています。
具体的には次のことを解説します。
- スクレイピングとは
- スクレイピングのやり方
- スクレイピングの学習方法
- スクレイピング禁止サイトの確認方法
途中で挫折しないように、必要最低限の知識と、その習得方法を分かりやすく解説しています。
やることはそれなりに多いですが、スクレイピングを習得できれば、辛かったデータ収集&分析から解放されること間違いなしです。
ぜひチャレンジしてみてください。
1.スクレイピングとは
まず、スクレイピングとは何ぞやというお話から。
スクレイピング(Webスクレイピング)とは、Webサイト上の情報を抽出・整形・解析する技術のことです。
AIの開発やビックデータ活用を支える技術の一つで、ビジネスでのデータ活用の高まりもあり、近年、注目されています。
・スクレイピングでできること
データの収集や解析ができるスクレイピングですが、次のような場面で活躍しています。
- 株価変動の調査
- ショッピングサイトの価格調査
- SNSやレビューなどの感情データの収集…など
Webサイト上のデータであれば、どんなデータでも収集できるので、上の例に出した金融やマーケティングにとどまらず、様々な分野で活用されています。
実際に日本の官公庁でもデータ収集&解析に活用しています。
参考:【総務省】消費者物価指数 (CPI) へ のウェブスクレイピングの活用について
・スクレイピングのメリットとデメリット
非常に便利な技術ですが、スクレイピングにもメリットだけでなく、デメリットもあります。
それぞれ見ていきます。
・スクレイピングのメリット
まず、メリットは次の2点です。
- コスト削減
- データの増強
・コスト削減
スクレイピングの多くは、プログラミングやツールを用いて実行するので、手動でデータ収集するよりも、手間や時間などのコストを削減することができます。
大量のデータを自動で効率よく収集&解析することが可能です。
・データの増強
スクレイピングをうまく使うことができれば、不足しているデータを手元に取得、蓄積することができます。
多くの情報を取り入れ、活用することができるので、新事業やサービスの立ち上げに役立ちます。
スクレイピングのデメリット
デメリットは次の2点です。
スクレイピングをする際の注意事項として覚えておきましょう。
- 訴訟リスクがある
- アクセス拒否される場合がある
・訴訟リスクがある
スクレイピングを禁止しているサイトでスクレイピングしてしまった場合や、妨害する意図はなくても、結果的にシステム障害が発生してしまったなど、相手に損失を与えた場合は、訴訟に発展するケースがあります。
リスクがあることを念頭に置きつつ、事前にWebサイトの利用規約などを確認し、順守するようにしましょう。
・アクセス拒否される場合がある
頻繁にアクセスした場合、不正アクセスを疑われ、アクセスを拒否される可能性があります。
頻繁にアクセスすることはサーバーに負荷もかかるので、節度を保つようにしましょう。
スクレイピングのリスクを軽減する方法は、後述します。
【補足】クローリングとの違い
スクレイピングとセットでよく「クローリング」という言葉を目にするかもしれません。
スクレイピングとクローリングは似て非なるものなので、言葉を整理しておきましょう。
Webサイト上の情報を抽出・整形・解析する技術
特定のWebサイトを巡回し、構造や要素を調査する技術
スクレイピングとクローリングは、情報収集するという共通点がありますが、上記のような違いがあります。
Webサイト上のデータを取得する際は、スクレイピングとクローリングを組み合わせて、同時に行うことも少なくありません。
2.スクレイピングのやり方
スクレイピングについて理解できたところで、ここからは、スクレイピングのやり方について解説します。
スクレイピングができるプログラミング言語は、PythonやRubyなどいくつかありますが、
プログラミングの経験がない方には、Pythonをおすすめします。
Pythonは、他の言語と比較してシンプルで読みやすく理解しやすい文法のため、プログラミング初心者にとっても学びやすいプログラミング言語です。
また、Pythonには、スクレイピングに適したライブラリ(機能をひとまとめにしたもの)やフレームワーク(特定の目的のために機能をまとめた機能群)がそろっているので、効率よくプログラムを組むことできます。
この記事では、Pythonを使用することを前提にスクレイピングのやり方を説明します。
・スクレイピングの流れ
スクレイピングは、次のようなステップに分けることができます。
- Webページのダウンロード
- データの抽出
- データの整形・保存
工程 | 説明 |
---|---|
Webページのダウンロード | WebページのHTMLデータをダウンロードする。 |
データの抽出 | HTMLデータに含まれるタグなどを取り除き、必要なデータを抽出する。 |
データの整形・保存 | 抽出したデータを用途にあった形に整形し、ファイルなどに保存する。 |
以上のような流れに沿ってスクレイピングを行います。
それぞれの工程で、いくつものライブラリやフレームワークが使われますが、使用するライブラリやフレームワークの詳細は後述します。
・必要なライブラリ&フレームワーク
スクレイピングに使用するライブラリ&フレームワークとその役割について解説します。
HTTP通信ライブラリ。Webサイトのデータ取得に利用する。
HTMLデータを抽出するときに利用するライブラリ。単独ではデータ取得ができないので、Requestsと組み合わせて使用することが多い。
データ解析用のライブラリ。
データフレームと呼ばれるデータ構造を用い、Webサイトから抽出したデータを解析することができる。解析したデータはCSVやExcelなどのファイルとして出力が可能。
Webブラウザ操作を自動化するためのフレームワーク。Webページの取得とデータ抽出が可能。ただし、Webブラウザを操作するため動作が遅い。
スクレイピング・クローリング専用のフレームワーク。
Webページの取得とデータ抽出、データの保存が可能。ただし、Requests、Beautiful Soupなどに比べて覚えることが多く学習難易度は高め。
表にまとめると次のようになります。
ライブラリ | Webデータの取得 | データの抽出 | データの整形・保存 |
---|---|---|---|
Requests | ○ | × | × |
Beautiful Soup | × | ○ | × |
Pandas | × | × | ○ |
Selenium | ○ | ○ | × |
Scrapy | ○ | ○ | ○ |
重要なのは、どのライブラリ&フレームワークを使用してスクレイピングを行うのかですが、今回は「Requests」と「BeautifulSoup」と「Pandas」を組み合わせた方法を選択したいと思います。
なぜなら、理由の一つに、Scrapyは初心者にとっては学習量が多いので、Python初心者には負担が大きいです。また、Seleniumは動作が重く、ストレスを感じることがあります。
そのため、学習と実践がしやすい「Requests×BeautifulSoup×Pandas」の方法が、Python初心者には最適だと考えます。
・スクレイピングの体験学習
スクレイピングのやり方がなんとなくイメージできたら、実際にやってみましょう。
次の『PythonによるWebスクレイピング入門【競馬を題材に解説・練習サイトあり】』は入門編として、Webスクレイピングの実践的なやり方を解説しています。
主に、
- Webスクレイピングに必要な準備
- Requests、BeautifulSoupの使い方
を簡単に説明しています。
競馬が題材になっていますが、実例があったほうが理解度が増します。
文字だけ追っかけても、頭に入らないことが多いので、Webスクレイピングをイメージを掴むためにも、是非トライして実際に手を動かしてみてください。
3.スクレイピングの学習方法
スクレイピングで実際に何ができて、どのようにプログラミングするのか体験したところで、次はどうすれば身につくかを見ていきます。
私は知識ゼロの状態からスクレイピングを身につけたので、その経験をベースに話を進めます。スクレイピングを習得したい方は参考にしてください。
・学習のマインドセット
スクレイピングを習得しようにも、何から手を付ければいいのか分からない人も多いと思います。
ましてやプログラミング未経験の方が、すべてを完璧にやろうとすると、挫折する確率が高くなります。
なので、ここでは「必要最低限の知識の習得」+「小さくやり切る学習方法」をお伝えします。
まずは、お伝えしたことを押さえ、後でご自身のやりたいことに沿って、知識やスキルを肉付けするイメージで学習を進めてみてください。
・学習範囲
ソフトウェア開発で食べている人から見れば、スクレイピングの習得は簡単かもしれません。ですが、初心者にとっては結構な学習量が必要になります。
スクレイピングを実践するために必要な学習範囲は、ざっくり挙げるだけでも、次のようになります。
- Pythonの基礎
- HTML/CSSの知識
- 各ライブラリの使い方
次項から学ぶ理由と内容を説明していきます。
関連記事も載せていますので、学習の参考にしてみてください。
Pythonの基礎
Pythonにはスクレイピングに便利なライブラリが用意されていますが、そもそも文法など基本的な知識が身についていないと扱いきれません。
ということで、まずはPythonの基礎を学習しましょう。
スクレイピングを実践するうえで必要となるPythonの基礎は次のとおりです。
- Pythonの環境構築
- Pythonの作法&基礎用語
- if文/for文
- 例外処理
このあたりが身につけば、自分でスクレイピングのコードを書けるようになります。
ひとつひとつみていきましょう。
Pythonの環境構築
学習を進めるにあたって、ご自分のパソコンにPythonをインストール必要があります。
早速、『Python3のインストール方法【導入は10分で完了!】』を参考にPythonをインストールしてみましょう。
パソコンにPythonをインストールできない方、したくない方はオンラインでプログラミングする方法があります。
『【Python】ブラウザからオンラインでプログラミングする方法』が参考になると思いますので、ご覧ください。
Pythonの作法&基礎用語
はじめてプログラミング学習を始める方のなかには、専門用語がわからないと頭を抱える方がいるかもしれません。
例えば、「変数」や「データ型」などの言葉は、これまで聞いたことがなかったかもしれませんが、これらはプログラミングをするうえで理解しておく必要がある用語です。
プログラミングに必要な知識なので、一つずつ覚えていきましょう。
こちらの記事『【Python用語集】初心者のための用語解説10選』は、これからプログラミングを始めるあなたに向けて、なるべく平易な言葉で専門用語を解説しています。
分からない単語が出てきたら、覗いてみてください。
if文/for文
if文/for文は、Pythonに限らずプログラミングでよく使われる構文なので、使えるようになりましょう。
if文は条件分岐の構文です。記述した条件が満たされたか/満たされてないかによって、処理を分けます。
エクセル関数にもあるので、馴染みはあるかもしれません。
for文は繰り返し処理の構文です。記述した条件の間だけ処理を行います。
こちらの『Python初心者のためのif文・for文【条件分岐と繰り返し処理の基本】』では、入門レベルの解説やサンプルコードをわかりやすくまとめました。
良ければご覧ください。
例外処理
プログラムの実行を妨げる事象を「例外」と呼びます。
プログラムを実行したとき、この例外が発生して、処理が止まってしまうと困ってしまうので、事前に想定した例外が発生したときの処理を決めておくことを「例外処理」といいます。
Pythonで例外処理はtry文を使って記述します。
『Python初心者のためのtry-except文【例外処理の基本】』を参考に例外処理の考え方&書き方を身につけましょう。
・HTML/CSSの知識
WebサイトはざっくりいうとHTMLとCSSと呼ばれるプログラミング言語でできています。
HTMLでは、ページをマークアップ(意味づけ)し、CSSでデザインの装飾を行っています。
Webサイト上からスクレイピングするには、対象となるWebページのHTML/CSSの情報をもとにデータを抽出するので、HTML/CSSを理解する必要があります。
とはいえ、Webサイトを一から制作するわけではないので、まずはタグの意味やWebページの構造や要素の調べ方を理解できればよいです。
Webスクレイピングに必要なHTML/CSSの知識については『WebスクレイピングのためのHTML・CSS入門』にまとめているので、是非ご覧ください。
・各ライブラリの使い方
初心者がスクレイピングを実践しやすいのは、「Requests×BeautifulSoup×Pandas」の方法だと先ほど説明しました。よって、それぞれライブラリの基礎を身につける必要があります。
それぞれ入門レベルの解説やサンプルコードをわかりやすくまとめました。
学習の参考にご覧ください。
学習方法の解説は以上です。
今回、紹介した学習方法を実践してもらえれば、スクレイピングに最低限必要な知識を身につけることができます。
さらにPythonやHTML/CSSの基礎を固めたい方は、次のサービスがおすすめです。
実際に私も活用してレベルアップできたので、気になるものがあれば利用してみてください。
Udemyの情報は、こちらの『【自分をスキルアップする】Udemyとは?講座の選び方&使い方を解説』にまとめています。
Pythonの学習をサポートしてくれる講座がたくさんあるのでおすすめです。
4.スクレイピング禁止サイトの確認方法
前述したとおり、スクレイピングにはリスクが伴いますが、実際にスクレイピングする際に禁止サイトのスクレイピングしないようにするための方法を3つ紹介します。
確認すること3点
- WebAPIの有無
- robots.txtの確認
- 利用規約の確認
WebAPIは、第三者へ公式に情報提供する機能です。
これがあるということは、第三者への情報提供を許可していることになるので、スクレイピングよりも安全に情報を取得できる可能性があります。
APIの制約などにもよりますが、スクレイピングのどちらを選択するのが良いか、一度検討してみるのがよいでしょう。
robots.txtは、クローラーに対して、どのURLにアクセスを許可するか、禁止するかを記述しているファイルです。中身をみることができれば、スクレイピングをするか否か判断ができるので、確認するようにしましょう。
また、利用規約には、コンテンツなどの情報の取り扱いについて、詳細に掲載されています。
会員制のWebサイトでスクレイピングが禁止されている場合は、控えたほうが無難ですが、利用規約での利用者との合意形成の考え方は、少し複雑です。
詳しくは、『スクレイピング禁止サイトの確認方法【NG行為が分かる】』で解説しているので、スクレイピングしてもよいか悩んだら、ご覧いただければと思います。
5.まとめ
プログラミングが初めての方でも心配無用です。この記事をステップバイステップで進めれば、スクレイピングの基本が身に付きます。
スクレイピングは、仕事の効率化や生活の質の向上に大いに役立ち、Pythonなどのプログラミングスキルを深める素晴らしい機会にもなります。
続く記事もぜひご覧になって、Pythonの知識やスキルを磨いていきましょう。
ご清聴ありがとうございました。