【仕事でPython活用】スクレイピングとは?やり方・学習方法を解説

蜘蛛の巣_青Python
スポンサーリンク
スポンサーリンク

「データの収集や分析を効率よくやりたい。」

「どうすればスクレイピングができるようになるの?やり方を教えてください。」

上記の疑問にお答えします。

「データの収集や分析を効率よくやりたい。」というお悩みは、スクレイピングという技術を使えば解決できます。

「技術」と聴くと、「難しいのでは?」と思うかもしれませんが、しっかりポイントを押さえて学習すれば、スクレイピングができるようになります。

この記事では、具体的には次のことを解説します。

  • スクレイピングとは
  • スクレイピングのやり方
  • スクレイピングの学習方法
  • スクレイピング禁止サイトの確認方法

 

「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し。

私のプログラミング歴は約5年で、本職での開発経験はありませんが、一応、IT業界に身を置いています。

今でもPythonなど、独学でプログラミングを勉強しつつ、そのスキルを活かして仕事の効率化を図ったり、ゲームをつくったりしています。

私も知識ゼロの状態からWebスクレイピングを習得しました。

やり方、学習方法については、私の学習経験をベースにお伝えしています。

やることはそれなりに多いですが、途中で挫折しないように、必要最低限の知識と、その習得方法を分かりやすく解説しています。

何度も読み直してスクレイピングを習得していただければ嬉しいです。

 

 

1.スクレイピングとは

まず、スクレイピングとは何かについて説明します。

スクレイピング(Webスクレイピング)とは、Webサイト上の情報を抽出・整形・解析する技術のことです。

AI開発やビックデータ活用を支える技術の一つで、AI開発やビックデータ活用の盛り上がりとともに近年、注目されることが多くなりました。

 

・スクレイピングでできること

データの収集や解析ができるスクレイピングですが、次のような場面で活躍しています。

  • 株価変動の調査
  • ショッピングサイトの価格調査
  • SNSやレビューなどの感情データの収集…など

 

定量的なものから定性的なものまで、Webサイト上のデータであれば、どんなデータでも収集できるので、上の例に出した金融やマーケティングにとどまらず、様々な分野で活用されています。

 

・メリットとデメリット

非常に便利な技術ですが、スクレイピングにもメリットだけでなく、デメリットもあります。それぞれ見ていきます。

 

・スクレイピングのメリット

まず、メリットは次の2点です。

  • コスト削減
  • データの増強

 

・コスト削減

スクレイピングの多くは、プログラミングやツールを用いて実行するので、手動でデータ収集するよりも、手間や時間などのコストを削減することができます。大量のデータを自動で効率よく収集&解析できます。

 

・データの増強

スクレイピングをうまく使うことができれば、手元に不足しているデータをWebサイトから取得、蓄積することができます。不足している情報を取り入れ、活用することで、新たな事業やサービスの立ち上げを手助けしてくれます。

 

スクレイピングのデメリット

デメリットは次の2点です。

問題に発展する可能性もあるので、スクレイピングをする際の注意事項として記憶してください。

  • 訴訟リスクがある
  • アクセス拒否される場合がある

 

・訴訟リスクがある

スクレイピングを禁止しているサイトであることを確認せずにスクレイピングしてしまった場合や、本人に妨害する意図はなくても、結果的にシステム障害が発生してしまったなど、相手に損失を与えた場合は、訴訟に発展するケースがあります。

リスクがあることを念頭に置きつつ、事前にWebサイトの利用規約などを確認し、順守するようにしてください。

 

・アクセス拒否される場合がある

頻繁にアクセスした場合などは、不審がられてアクセスを拒否される可能性があります。
頻繁なアクセスはサーバーに負荷もかかるので、節度を保つようにしましょう。

 

スクレイピングを安全にやるためにすべきことを、この記事の後半「スクレイピング禁止サイトの確認方法」で解説しています。

是非、最後までご覧ください。

 

・クローリングとの違い

スクレイピングとセットでよく「クローリング」という言葉を目にするかもしれません。

スクレイピングとクローリングは似て非なるものなので、ここで整理をしておきます。

スクレイピング
Webサイト上の情報を抽出・整形・解析する技術
クローリング
特定のWebサイトを巡回し、構造や要素を調査する技術

 

スクレイピングとクローリングは、情報収集するという共通点がありますが、上記のようにスクレイピングはデータの抽出や整理を、クローリングは巡回と調査を行うという違いがあります。

Webサイト上のデータを取得する際は、スクレイピングとクローリングを組み合わせて、同時に行うことも少なくありません。

 

2.スクレイピングのやり方

ここからは、スクレイピングのやり方について見ていきます。

スクレイピングができるプログラミング言語は、PythonやRubyなどいくつかありますが、
プログラミングの経験がない方には、Pythonがおすすめです。

Pythonは、他の言語と比較してシンプルで読みやすい文法であることから、プログラミング初心者にとっても学びやすいプログラミング言語といわれています。

また、Pythonには、スクレイピングに適したライブラリ(機能をひとまとめにしたもの)やフレームワーク(特定の目的のために機能をまとめた機能群)がそろっているので、効率よくコーディングできます。

今回のスクレイピングで、はじめてプログラミングする方も多いと思いますので、この先の説明はPythonでのスクレイピングを前提に進めたいと思います。

 

・スクレイピングの流れ

スクレイピングは、Webページのダウンロード、データの抽出、データの整形・保存の順におこなわれます。

各工程の概要は次のとおりです。

工程説明
WebページのダウンロードWebページのHTMLデータをダウンロードする。
データの抽出HTMLデータに含まれるタグなどを取り除き、必要なデータを抽出する。
データの整形・保存抽出したデータを用途にあった形に整形し、ファイルなどに保存する。

 

それぞれの工程の役割を担うライブラリやフレームワークは、いくつかあります。

使用するライブラリやフレームワークについては、このあと説明します。

 

・必要なライブラリ&フレームワーク

Pythonでスクレイピングするときに、利用するライブラリやフレームワークとその役割について解説します。

Requests
HTTP通信ライブラリ。Webサイトのデータ取得に利用する。
Beautiful Soup
HTMLデータを抽出するときに利用するライブラリ。単独ではデータ取得ができないので、Requestsと組み合わせて使用することが多い。
Pandas
データ解析用のライブラリ。
データフレームと呼ばれるデータ構造を用い、Webサイトから抽出したデータを解析することができる。解析したデータはCSVやExcelなどのファイルとして出力が可能。
Selenium
Webブラウザ操作を自動化するためのフレームワーク。Webページの取得とデータ抽出が可能。ただし、Webブラウザを操作するため動作が遅い。
Scrapy
スクレイピング・クローリング専用のフレームワーク。
Webページの取得とデータ抽出、データの保存が可能。ただし、Requests、Beautiful Soupなどに比べて覚えることが多く学習難易度は高め。

 

表にまとめると次のようになります。

ライブラリWebデータの取得データの抽出データの整形・保存
Requests××
Beautiful Soup××
Pandas××
Selenium×
Scrapy

 

それぞれのライブラリ&フレームワークでできることや特徴がお分かりいただけたと思います。

問題はどれを選択してスクレイピングを行うかですが、今回は「Requests×BeautifulSoup×Pandas」の方法を選択したいと思います。

理由は、Seleniumは動作が重く、Scrapyは初心者にとっては学習量が多いので、初心者には負担が大きいためです。

学習も実践もやりやすい「Requests×BeautifulSoup×Pandas」の方法が、初心者向きです。

 

・スクレイピングの体験学習

スクレイピングのやり方がなんとなくイメージできたところで、実際にやってみましょう。

次の『競馬予想のためのWebスクレイピング入門』は入門編として、Webスクレイピングの実践的なやり方を解説しています。

主に、

  • Webスクレイピングに必要な準備
  • Requests、BeautifulSoupの使い方

を簡単に説明しています。

競馬が題材になっていますが、実例があったほうが理解度が増します。

文字だけ追っかけても、頭に入らないことが多いので、Webスクレイピングをイメージを掴むためにも、是非トライして実際に手を動かしてみてください。

競馬予想のためのWebスクレイピング入門
競馬予想に役立つWebスクレイピングの始め方・やり方を解説します。Pythonの準備からWebスクレイピングの手順まで、この記事を読めば実践することができます。

 

3.スクレイピングの学習方法

スクレイピングで実際に何ができて、どのようにプログラミングするのか体験したところで、次はどうすれば身につくかを考えていきます。

私は知識ゼロの状態から、スクレイピングを身につけたので、その経験をベースにお話しさせていただきます。「スクレイピングかぁ。頑張ってみようかな。」という方は、参考にしてみてください。

 

・学習のマインドセット

今日、スクレイピングという言葉を目にした人にとっては、何から手を付ければいいのか分からない人も多いと思います。ましてやプログラミングをやったことがない方が、すべてを完璧にやろうとすると、挫折する確率が高くなります。

なので、ここでは必要最低限の知識を学習し、小さくやり切る学習方法をお伝えします。

まずは、基礎を押さえつつ、ご自身のやりたいことは、後で知識を肉付けするイメージで学習を進めてみてください。

 

・学習範囲

開発者などものづくりで食べている人から見れば、スクレイピングは簡単といわれがちですが、初心者にとってはそれなりの学習量が必要です。

ここでは、スクレイピングを実践するために必要な学習範囲をざっくり挙げ、学ぶ理由と内容を簡単に説明していきます。

  • Pythonの基礎
  • HTML/CSSの知識
  • 各ライブラリの使い方

 

Pythonの基礎

Pythonにはスクレイピングに便利なライブラリが用意されていますが、そもそも文法など基本的な知識が身についていないと扱いきれません。

ということで、まずはPythonの基礎を学習しましょう。

スクレイピングを実践するうえで必要となるPythonの基礎は次のとおりです。

  • Pythonの環境構築
  • Pythonの作法&基礎用語
  • if文/for文
  • 例外処理

 

Pythonの環境構築

学習を進めるにあたって、ご自分のパソコンにPythonをインストール必要があります。

インストール方法については、『Python3のインストール方法【導入は10分で完了!】』が参考になると思うのでご覧ください。

Python3のインストール方法【導入は10分で完了!】
Python3のインストール方法についてステップバイステップで説明しています。この記事に沿って手を動かしてもらえれば、迷うことなくインストールができます。

 

パソコンにPythonをインストールできない方、したくない方は『【Python】ブラウザからオンラインでプログラミングする方法』が参考になると思います。

【Python】ブラウザからオンラインでプログラミングする方法
Pythonをブラウザ上からオンラインでプログラミング&実行する方法を説明しています。様々な事情でパソコンにPythonをインストールできない方・したくない方におすすめです。

 

Pythonの作法&基礎用語

これから学習を始める方にとっては、いろいろと初対面の用語が出てくると思います。

例えば、「変数」や「データ型」など、聞きなれないかもしれませんが、これらはプログラミングに必要な前提知識ですので覚えましょう。

これからプログラミングを始める方に向けて、なるべく平易に解説した『【Python用語集】初心者のための用語解説10選』を用意したので、分からない単語が出てきたら、まず覗いてみてください。

【Python用語集】初心者のための用語解説10選
競馬予想に役立つスクレイピングのやり方・はじめ方をお教えします。 この記事ではPythonで必出の5つの用語を解説。Python学習をはじめたばかりの方、調べたけどわからないという初心者の方に向けて、わかりやすく説明しています。 この記事を読めばPython学習の理解度がアップします。

 

if文/for文

if文/for文は、Pythonに限らずプログラミングでよく使われる構文なので、覚える必要があります。

if文は条件分岐の構文です。

記述した条件が満たされたか/満たされてないかによって、処理を分けます。エクセル関数にもあるので、馴染みはあるかもしれません。

for文は繰り返し処理の構文です。記述した条件の間だけ処理を行います。

入門レベルの解説やサンプルコードをわかりやすくまとめていますので、良ければ『Python初心者のためのif文・for文【条件分岐と繰り返し処理の基本】』をご覧ください。

Python初心者のためのif文・for文【条件分岐と繰り返し処理の基本】
この記事ではPythonのif文とfor文を解説。Python学習をはじめた初学者に向け、わかりやすく説明しています。プログラミングする上で避けて通れないif文とfor文を理解することで、コーディングの幅が広がります。

 

例外処理

プログラムの実行を妨げる事象を「例外」と呼びます。プログラムを実行したとき、この例外が発生して、処理が止まってしまうと困ってしまうので、事前に想定した例外ごとの処理を決めることを「例外処理」といいます。

Pythonで例外処理はtry文を使って記述します。

try文については『Python初心者のためのtry-except文【例外処理の基本】』をご覧ください。

Python初心者のためのtry-except文【例外処理の基本】
この記事ではPythonのtry文を解説。Python学習をはじめた初学者に向け、わからりやすく説明しています。この記事を読めばエラーに上手く対応したプログラミングができるようになります。

 

・HTML/CSSの知識

WebサイトはHTMLでページをマークアップし、CSSでデザインの装飾を行っています。

Webサイト上からスクレイピングするには、対象となるWebページのHTML/CSSの情報をもとにデータを抽出するので、HTML/CSSを理解する必要があります。

とはいえ、Webサイトを一から制作するわけではないので、まずはタグの意味やWebページの構造や要素の調べ方を理解できればよいです。

Webスクレイピングに必要なHTML/CSSの知識については『WebスクレイピングのためのHTML・CSS入門』にまとめているので、ご覧ください。

WebスクレイピングのためのHTML・CSS入門
Webスクレイピングに必要なHTML/CSSの知識をお教えします。HTML/CSSの基礎を理解できれば、あなた好みのWebスクレイピングができます。

 

・各ライブラリの使い方

初心者がスクレイピングを実践しやすいのは、「Requests×BeautifulSoup×Pandas」の方法です。なので、それぞれライブラリの基礎を学ぶ必要があります。

それぞれ入門レベルの解説やサンプルコードをわかりやすくまとめていますので、学習の参考にご覧ください。

Python初心者のためのRequests入門
Webスクレイピングに必要な「Requests」の基礎知識を解説。この記事を読めばRequestsの理解が深まります。
Python初心者のためのBeautifulSoup4入門
Webスクレイピングに必要なライブラリ「BeautifulSoup」について解説。HTMLの基礎知識からパーサの説明など、初心者の方にも分かるように詳しく解説しています。
Python初心者のためのPandas入門【競馬サイトを題材にCSV出力まで解説】
Pythonのライブラリ「Pandas」を使ったWebスクレイピングの方法を解説。この記事を読めばPandasを使った実践的なWebスクレイピングができるようになります。

 

学習方法の解説は以上です。

今回、紹介した学習方法を実践してもらえれば、スクレイピングに最低限必要な知識を身につけることができます。

それでも分からないことが多いとお悩みの方や、PythonやHTML/CSSの基礎をもっと固めたい方は、paizaやProgateの活用をおすすめします。

 

スクレイピングの技術を掘り下げたい方には、Udemyがおすすめです。

Udemyは、買い切り型の動画講義が満載で、セールを活用すれば本一冊分の価格で利用できますよ。

私もセールのタイミングを見計らって、よく利用しています。

今回、解説できなかったSeleniumやScrapyについて解説している講座もあるので、幅広くスキルを身につけたい方は、まず『Python独学におすすめなUdemyとは?【講座の選び方&使い方を解説】』をご覧ください。

Udemyについて詳しく解説しています。

Python独学におすすめなUdemyとは?【講座の選び方&使い方を解説】
Pythonの学習でUdemy(ユーデミー)を使おうか悩んでいる方に向けて、おすすめの理由や講座の選び方&使い方を解説しています。この記事を読めばあなたに合った講座を選ぶことができるようになります。

 

4.スクレイピング禁止サイトの確認方法

スクレイピングを習得後、実際にスクレイピングをやろうとしたとき、「このWebサイト、スクレイピングしても大丈夫かなぁ。」と頭をよぎることがあると思います。

そんなときのために、スクレイピング禁止サイトのスクレイピングしないように3つの方法を紹介します。

確認すること3点

  • WebAPIの有無
  • robots.txtの確認
  • 利用規約の確認

 

WebAPIは、第三者へ公式に情報提供する機能です。

これがあるということは、第三者への情報提供を許可していることになるので、スクレイピングよりも安全に情報を取得できる可能性があります。

APIの制約などにもよりますが、スクレイピングのどちらを選択するのが良いか、一度検討してみるのがよいでしょう。

 

robots.txtは、クローラーに対して、どのURLにアクセスを許可するか、禁止するかを記述しているファイルです。中身をみることができれば、スクレイピングをするか否か判断ができるので、確認するようにしましょう。

 

また、利用規約には、コンテンツなどの情報の取り扱いについて、詳細に掲載されています。

会員制のWebサイトでスクレイピングが禁止されている場合は、控えたほうが無難ですが、利用規約での利用者との合意形成の考え方は、少し複雑です。

 

これら3つの具体的な確認方法や考え方については、『スクレイピング禁止サイトの確認方法【NG行為が分かる】』で解説しているので、スクレイピングするかどうか悩んだら、ご覧いただければと思います。

スクレイピング禁止サイトの確認方法【NG行為・違法性も解説】
スクレイピングを禁止しているサイトの確認方法について解説しています。スクレイピングは違法な行為と誤解されている方もいるので、違法性がないことやNG行為についても解説しています。

 

5.まとめ

以上、「スクレイピングとは?」からはじまり、やり方と学習方法について解説しました。

ボリューミーな内容になりましたが、しっかりとスクレイピングを学ぼうという方は、この記事をブックマークして戻りつつ、学習を進めてみてください。

 

・Python中級者になるために必要なこと

スクレイピングの学習がひととおり済んだら、これから紹介する記事を参考に次のステップにチャレンジしてみてください。

いわゆる初心者と呼ばれる段階から、Python中級者へ向けてステップアップする時期です。

Python中級者に向けて必要な学習方法や教材は、『【めざせ中級者】独学でPython初心者からレベルアップする方法』にまとめました。

具体的には、次のことを解説しています。

  • Python中級者に必要なこと
  • 教材ごとの特徴
  • 挫折しない勉強法
  • 分野別のおすすめ教材

 

Python中級者になるためには、入門編の課題を繰り返し解くことではなく、モノ作りを実践することです。

この記事を読めば、モノ作りの実践に必要な学習方法や適した教材が分かります。

是非ご覧ください。

【めざせ中級者】独学でPython初心者からレベルアップする方法
Pythonの入門レベルを終えた方に向けて、中級者になるための学習方法や適した教材を紹介しています。Python中級者になるにはモノ作りは必須です。この記事を読んで中級者を目指しましょう。

 

ご清聴ありがとうございました。