スクレイピングとは、Webサイトからデータを収集するための技術です。
本記事では、BeautifulSoupというPythonライブラリを使用してスクレイピングを行う方法を解説します。
スクレイピングのメリットや注意点、勉強方法についても解説していきますので、ぜひ最後までお読みください。
スクレイピングとは?
スクレイピングとは、Webサイトからデータを自動的に収集する技術のことです。
通常、WebページにはHTMLという言語で書かれた情報が含まれています。
スクレイピングはこのHTMLを解析し、必要な情報を抽出することでデータ収集を行います。
スクレイピングのメリット
スクレイピングのメリットを3つ紹介します。
データ収集を効率化できる
Webサイトには多くの情報がありますが、それらを手動で1つずつコピー&ペーストして集めるのは非常に時間がかかります。
スクレイピングを使用すると、自動化されたプログラムを使って複数のページから一括でデータを収集できます。
たとえば、商品の価格や在庫情報、ニュース記事など、大量の情報を効率的に取得できるのです。
APIで得られないデータが取得できる
API(Application Programming Interface)は、一般的なデータ取得方法ですが、全てのWebサイトにAPIが用意されているわけではありません。
特定のサイトにAPIが提供されていない場合でも、スクレイピングを用いれば、そのWebサイトから直接データを収集できます。
これにより、より多様な情報源からデータを取得することが可能です。
社外のデータを活用できる
Web上の情報は非常に多岐にわたります。
他の企業のWebサイトやブログ、ニュースサイトなど、社外のデータをスクレイピングして収集することで、競合情報や市場の動向を把握したり、有益な情報を収集したりできます。
これにより、より深い洞察を得ることができ、ビジネスや研究に役立てることができるでしょう。
スクレイピングを始める前に必要なもの
スクレイピングを始める前に必要なものについて紹介します。
スクレイピングするためのプログラミング言語
スクレイピングにはさまざまなプログラミング言語が利用されていますが、初心者におすすめなのはPythonです。
Pythonはシンプルで読みやすいうえにコードも書きやすく、多くのスクレイピングライブラリが利用できるため人気があります。
そのほか、PHPやRubyについて詳しく知りたい方は以下の記事で解説していますので、あわせてチェックしてみてください。
必要なライブラリやツール
必要なライブラリやツールに関しては以下の通りです。
- Selenium
- Requests
- BeautifulSoup4
ライブラリとは、プログラミングにおいて再利用可能なコードの集まりです。
ライブラリを使うことで、同じようなコードを何度も書く必要がなくなり、効率的に開発できます。
それぞれのライブラリの役割については『スクレイピングに使うPythonライブラリ』の項で詳述しておりますので、そちらを参照ください。
上記のライブラリに加えて、Pythonのパッケージ管理ツールである『pip』も使用します。
パッケージはモジュールを集めたもので、モジュールは再利用可能なPythonのコードをまとめたものです。
データの出力形式と保存方法
データの出力形式や保存方法について解説します。
- CSV
-
一般的なテキストデータの出力形式で、Excelなどのスプレッドシートソフトで開くことができる形式です。
データはコンマで区切って並べたテキスト形式です。
たとえば、名前や年齢などの情報を表にして保存するのに使います。 - JSON
-
『JavaScript Object Notation』の略で、異なるプログラミング言語間でデータをやりとりする際に使われます。
主にウェブアプリケーションやAPIでデータのやり取りに利用されるのが一般的です。 - XML
-
『Extensible Markup Language』の略で、データを記述するために用いられるマークアップ言語です。
マークアップ言語は、テキストに特定のタグを追加することで、コンピューターに対して情報の意味や表示方法を示すものです。
近年ではJSONがメインとなっており、XMLが使われる機会は減少しつつあります。 - データベース
-
データの効率的な管理と検索を可能にするデータの集合体です。
データベースはデータを整理し、必要に応じて取り出しやすいように蓄積します。
有名なデータベースとしては『PostgreSQL』や『Microsoft SQL Server』が挙げられます。
PostgreSQLは無料で利用できますので、興味がある方は勉強してみてください。
続いてデータの保存方法について解説します。
データの保存方法としては「ファイルとして保存」または「データベースに保存」の2種類が挙げられます
- ファイルとして保存
-
ファイルとして保存する場合に使用するのは、Pythonのcsvやjsonライブラリです。
ライブラリを使用することで、データをCSVやJSONファイルとして保存できます。
これにより、データのバックアップや他のプログラムへの共有が容易になります。 - データベースに保存
-
データベースに保存する場合に使用するのは、SQLAlchemyやpymongoなどのライブラリです。
これらのライブラリを使用することで、データをデータベースに保存できます。
データベースを使用することで、データの保存と高度な検索、連携が可能になります。
スクレイピングに使うPythonライブラリ
Pythonはスクレイピングに非常に適したプログラム言語であり、以下の3つのライブラリは特によく使われています。
Selenium
Selenium(セレニウム)は、Webブラウザを制御して操作するためのライブラリです。
スクレイピングの場合、対象のWebサイトにアクセスし、JavaScriptが実行された後の動的なコンテンツを取得する際に便利です。
動的なページ(JavaScriptでコンテンツが生成されるページ)をスクレイピングする際には、Seleniumを使うことでブラウザを制御し、コンテンツを取得することができます。
Requests
Requests(リクエスト)は、PythonのHTTPライブラリです。
Webサーバーに対してHTTPリクエストを送信して、Webページのデータを取得するために使用します。
静的なページやAPIなど、JavaScriptを必要としないWebページのスクレイピングに適しています。
Requestsを使うと、WebページのHTMLデータを簡単に取得できるので、データ収集がスムーズです。
BeautifulSoup4
BeautifulSoup4(ビューティフルスープ4)は、HTMLやXMLからデータを抽出するためのライブラリです。
スクレイピングしたHTMLデータを解析して、必要な情報だけを取り出すことができます。
Requestsで取得したHTMLデータをBeautifulSoup4に渡すことで、データの抽出や加工が容易になります。
スクレイピングのやり方3ステップ
Pythonを使用したスクレイピングのやり方は以下の3ステップです。
①Pythonを使用できる環境を整える
②Requestsを使用してWebページを取得する
③BeautifulSoupを使用してスクレイピングする
今回は上記の手順に沿って、Yahoo!ニュースのページタイトルを取得してみます。
①Pythonを使用できる環境を整える
macを使ってPythonを使用できるようにするための手順を具体的に解説します。
手順は以下の6ステップです。
1. Pythonのインストール
2. ターミナルの起動
3. ターミナルでPythonのバージョンを確認
4. パッケージ管理ツールのインストール
5.Requestsのインストール
6.Beautifulsoup4のインストール
それぞれ詳しく解説します。
1. Pythonのインストール
macOSにはデフォルトでPythonがインストールされていますが、最新のPythonを使用するためには以下の手順でインストールを行います。
- Python公式サイト(https://www.python.org)にアクセスし、「Downloads」をクリック
- 最新バージョンのPythonインストーラーをダウンロード(例:Python 3.9.6)
- ダウンロードしたインストーラーを実行し、指示に従ってPythonをインストール
2. ターミナルの起動
macOSには『ターミナル』と呼ばれるアプリケーションが搭載されており、Pythonの実行やパッケージの管理に使用します。
Spotlight検索(Cmd + スペース)で「ターミナル」と入力し、ターミナルを起動します。
3. ターミナルでPythonのバージョンを確認
Pythonのインストールが正しく行われたかを確認するため、以下のコマンドをターミナルで実行します。
python --version
インストールされているPythonのバージョンが表示されれば、正しくインストールされています。
コマンドラインツールのインストールが求められた場合は、インストールしたうえで再度上記のコードを入力してください。
4. パッケージ管理ツールのインストール
Pythonのパッケージ管理にはpipというツールを使用します。
pipを使うことで、Pythonのライブラリやフレームワークを簡単にインストールできます。
以下のコマンドでpipをアップグレードしてください。
python -m pip install --upgrade pip
5.requestsのインストール
Requestsライブラリをインストールします。
pip install requests
6.Beautifulsoup4のインストール
Beautifulsoup4ライブラリをインストールします。
pip install beautifulsoup4
これで、macOS上でPythonを使用するための環境が整いました。
②Requestsを使用してWebページを取得する
WebページのURLを指定し、Requestsを使ってHTTPリクエストを送信しましょう。
これにより、WebページのHTMLソースコードを取得できます。
たとえば以下のようなコードです。
import requests
url = "https://news.yahoo.co.jp"
response = requests.get(url)
html_data = response.text
上記のコードをターミナルで入力するには、以下の手順を実行します。
1. ターミナルでPythonインタプリタを起動
- ターミナルで”python3”と入力し、Enterキーを押す。
- Pythonインタプリタが起動し、プロンプトが”>>>”と表示される。
2. コードを入力
- 「import requests」と入力し、Enterキーを押す。
- 「url = “https://news.yahoo.co.jp”」と入力し、Enterキーを押す。
- 「response = requests.get(url)」と入力し、Enterキーを押す。
- 「html_data = response.text」と入力し、Enterキーを押す。
これで、ターミナル上でPythonコードを入力して実行できます。
ここでは一行ずつ入力する方法をお伝えしておりますが「.py」のファイルを作成し、そのファイルを読み込むことで実行することも可能です。
③BeautifulSoupを使用してスクレイピングする
次に、取得したHTMLデータを解析し、必要な情報を取り出すためにBeautifulSoupライブラリを使用します。
BeautifulSoupはHTMLやXMLのパーサーライブラリであり、データの抽出や操作が簡単にできます。
以下は、BeautifulSoupを使って特定の要素を抽出する例です。
from bs4 import BeautifulSoup
# BeautifulSoupにHTMLデータを渡す
soup = BeautifulSoup(html_data, "html.parser")
# 特定の要素を検索して取得する
title = soup.find("h1").text
print(title)
ここまで実行してみると「Yahoo!ニュース」と表示されます。
終了する場合は「exit()」と入力してenterを押してください。
スクレイピングの高度なテクニック
スクレイピングを応用した高度なテクニックを3つ紹介します。
JavaScriptを用いた動的なサイトのスクレイピング
近年のWebサイトはJavaScriptを使って動的なコンテンツを生成することが多いため、従来の方法だけでは情報を取得できない場合があります。
そのような場合の解決策としては、Seleniumライブラリとブラウザを自動的に制御するためのドライバーを使うことです。
たとえばGoogleChromeの場合『ChromeDriver』というドライバーが存在しています。
大量データの効率的な取得方法
大量データの効率的な取得方法は複数存在しますが、一例として挙げられるのはキャッシュを活用することです。
キャッシュとは、データや情報を一時的に保存しておくための高速な記憶領域のことです。
頻繁に変更されないデータの場合、次回以降はキャッシュからデータを取得することでアクセス回数を減らし効率化します。
スクレイピングとAPIの併用
API(Application Programming Interface)とは、プログラム同士がコミュニケーションを取るためのルールや取り決めです。
たとえば、あなたがスマートフォンのアプリで天気情報を取得したり、マップアプリを使って経路を検索したりするシーンをイメージしてください。
そのときアプリは、APIを利用し別のシステム(天気情報の提供元やGoogleのサービス)と連携して必要な情報を取得しています。
このようにAPIが提供されている場合は、スクレイピングよりもデータを簡単に取得できる場合があります。
ただし、APIだけでは得られない情報やAPIのリクエスト回数に制限がある場合もあり、そのような場合はスクレイピングを併用するのが有効です。
スクレイピングの勉強方法
プログラミング未経験の方がスクレイピングを学ぶために必要な勉強方法について解説します。
Pythonの基礎を勉強する
スクレイピングではPythonがよく使われるため、まずはPythonの基礎を学びましょう。
Pythonはプログラミング初心者にも比較的優しい言語です。
初めてプログラミングに挑戦する場合は少々ハードルが高いかもしれませんが、Pythonについて網羅的に知りたい場合は以下の公式チュートリアルがおすすめです。
Python チュートリアル
アウトプットしながらまずは基本的なことを学習するのであれば『Progate』というオンライン学習サービスをおすすめします。
学習環境の構築が不要で、基礎を勉強できます。
HTML・CSSの基礎を勉強する
スクレイピングでは、Webサイトの情報を取得するためにHTMLとCSSの基礎的な知識が必要となります。
HTMLはWebページの構造や文章を表現する言語であり、CSSはWebページのスタイルや装飾を制御する言語です。
いずれも無料で学べる範囲で問題ないので、動画で学習したい方は『Youtube』や『Udemy』
文字ベースでの解説がほしい場合は、先ほど紹介した『Progate』もしくは初心者向けのHTML・CSSに関する書籍で勉強するのがおすすめです。
ライブラリを理解する
スクレイピングには便利なライブラリがありますが、それぞれの役割や使い方を理解する必要があります。
スクレイピングでよく使われるライブラリとしては、前述したSeleniumやRequests、BeautifulSoup4があります。
最初は深く知る必要はありませんが、なんのためのライブラリなのかを理解して使いこなせるようになりましょう。
スクレイピングの注意点
スクレイピングを行う際には、以下3つの注意点を守ることが重要です。
スクレイピング対象サイトの利用規約を確認する
Webサイトは利用規約を設けており、その中でスクレイピングに対する制約が明記されていることがあります。
スクレイピングを行う前に必ず対象サイトの利用規約を確認し、スクレイピングが許可されているかどうかを確認しましょう。
利用規約に違反するスクレイピングは、法的なトラブルなどの問題を引き起こす可能性があります。
アクセス頻度に気をつける
スクレイピングを行う際には、サーバーに対するアクセス頻度に注意する必要があります。
短時間に過度なアクセスを行うと、Webサイトのサーバーに負荷がかかり、サーバーのパフォーマンスに影響を与えることがあります。
アクセス頻度を抑えるために、適切な間隔を空けてスクレイピングを行いましょう。
連続してアクセスを行う場合には、一般的に1秒程度の遅延を挿入することが推奨されています。
robots.txtを確認する
robots.txtはWebサイトのルートディレクトリに配置されるテキストファイルで、Webクローラー(スクレイピングボット)に対してアクセス制御の指示を行うものです。
robots.txtを確認することで、Webサイトの運営者がスクレイピングに対してどのページを許可しているか、どのページを制限しているかを確認できます。
スクレイピングを行う前にrobots.txtをチェックし、Webサイトのルールに従ってスクレイピングを行うようにしましょう。
スクレイピングのやり方を理解して情報解析に役立てよう
スクレイピングは、Webサイトからデータを収集する有用な手法です。
スクレイピングにはデータ収集の効率化による業務負荷の軽減や社外データの活用など、多くのメリットがあります。
ただし、利用規約を遵守するなど適切な方法で行うことが重要です。
最初は難しく感じるかもしれませんが、非常に便利な技術ですので、スクレイピングをマスターして情報解析に役立ててみましょう。