本記事では、PythonのスクレイピングツールであるBeautifulSoupの使い方を解説していきます。BeautifulSoupは、ウェブからデータを抽出するためのライブラリです。
実際に私が開発したスクレイピングサイトを使って、学習していきましょう
この記事は次のような方々におすすめです
スクレイピングとは何かを知りたい方
Pythonを使用してスクレイピングを行いたい方
筆者について
2021年から本格的にPython学習を始め、今ではPythonによる収益化に成功しフリーランスエンジニアに
大学院時代には、R言語とPythonを使って統計処理を行っていたため、Pythonを使ったデータサイエンスの知識が豊富
医療データを機械学習を用いて解析したり、学会発表も行なっている
ウェブスクレイピングの基礎知識
まずはスクレイピングの基本を理解しましょう。
スクレイピングは、ウェブサイトのHTMLからデータを抽出し、大量の情報の中から必要なものだけを選び出す作業を指します。これはAPIとは異なります。
APIはウェブサイトが提供する内部的なデータの受け渡し手段ですが、スクレイピングはウェブサイトが直接提供していない外部的なデータを取得する方法です。
そのため、スクレイピングはウェブサイトによっては禁止されていることがあり、データへのアクセスには提供されているAPIを使用する必要がある場合もあります。
この記事では、Pythonのパッケージ「BeautifulSoup」を使用して、スクレイピングの基本を学んでいきます。
スクレイピングは案件多め
Pythonのフリーランス案件などを見ていると、スクレイピングの案件も多く、単価も高め
Pythonを学び始めたばかりの方は、スクレイピング案件で実績を積むのもおすすめです
スクレイピングとは?ウェブデータ収集の基本
スクレイピングはただ単にデータを取得するだけではありません。
初めに、スクレイピング対象のウェブページにアクセスする必要があります。
直接ブラウザでHTMLをダウンロードしてもスクレイピングは可能ですが、これは効率的ではなく、リアルタイムに更新されるページに対応するのは難しいです。
クローリング
続いてクローリングという工程がありますが、これはスクレイピングに必須ではありませんが、スクレイピングについて理解する場合、知っておいた方がいいでしょう
クローリングとは、さまざまなリンクを巡ってデータを集める作業のことです。
GoogleやYahooのような検索エンジンは、代表的なクローラーの一例です。
これらの準備の後、スクレイピングが実行されます。
スクレイピングでは、HTMLを解析(パース)して、必要な情報だけを抽出します。
スクレイピングの準備
スクレイピングはいくつかに構成されます。これらのステップを一つ一つ丁寧に学ぶことで、効率的にデータを収集することができます。
1. スクレイピング対象のページを特定する
まずは、スクレイピングするWebページを特定します。
これはあなたが情報を収集したい特定のウェブサイトやページです。
この段階では、そのページがスクレイピングに適しているか、そして何よりも法的な観点から問題がないかを確認することが重要です。
2. 必要なライブラリをインストールする
Pythonでスクレイピングを行うためには、BeautifulSoupのほかにもrequestsなどのライブラリが必要になることがあります。
これらのライブラリをあらかじめインストールしておくことで、スムーズにスクレイピング作業を進められます。
3. Webページにアクセスし、HTMLを取得する
requestsライブラリを使用して、スクレイピング対象のWebページにアクセスします。
その後、ページのHTMLコンテンツを取得します。
このHTMLコンテンツが、スクレイピングで解析するデータの基盤となります。
4. Beautiful SoupでHTMLを解析する
取得したHTMLデータをBeautifulSoupで解析します。
Beautiful Soupは、HTMLタグやCSSセレクタを用いて特定のデータを抽出する機能を持っています。必要な情報が含まれるタグや属性を特定し、データを抽出します。
5. データの抽出と整形
抽出したデータを適切に整形し、必要な情報だけを取り出します。
ここでは、テキストデータのクリーニングや、データ形式の変換などが含まれます。整形されたデータは後での分析や保存のために使用されます。
6. データの保存
最後に、抽出したデータをファイル形式(例えばCSVやJSON)に保存します。これにより、後でデータを簡単にアクセスし、分析やレポート作成に利用できます。
これらを順番に実行することで、スクレイピングを行うことができます。次では、スクレイピングを行うための実際のコード例を交えて詳しく解説していきます。
Pythonで行うスクレイピング
実践的なスクレイピング方法を学ぶことで、ウェブページから必要なデータを効率的に収集するスキルが身につきます。
ここからは、具体的なスクレイピングの手順とテクニックを、BeautifulSoupを用いて紹介します。
対象ページへのアクセス方法、必要なデータの特定と抽出方法、そしてそれらを実現するためのコーディングの基本を解説します。
これらの知識を身につけることで、多様なウェブデータの収集と分析が可能になります。
環境構築:BeautifulSoupのインストール
BeautifulSoupを使用するためにはまず、このパッケージをインストールする必要があります。
これはPythonのパッケージ管理システムであるpipを使って簡単に行うことができます。
BeautifulSoupの最新バージョンであるバージョン4をインストールするには、以下のコマンドを実行します。
pip install beautifulsoup4
BeautifulSoup4は、HTMLやXMLの解析に広く使用されているライブラリで、使いやすさと柔軟性が特徴です。
このライブラリを使うことで、複雑なウェブページのデータを簡単に抽出できるようになります。
pipに関しては、Pythonのパッケージを管理し、インストールやアップデートを行うための便利なツールです。
スクレイピング対象ページへのアクセス
BeautifulSoupのインストールが完了したら、次はPythonのrequestsモジュールを使って、スクレイピングするウェブページにアクセスします。
requestsは、ウェブからデータを取得するための非常に使いやすいモジュールです。
これもpipコマンドで簡単にインストールできます。
pip install requests
requestsは`urllib2よりも直感的で使いやすく、ウェブスクレイピングにおいて非常に重宝します。
以下に基本的な使い方を示します。
import requests
# スクレイピングしたいウェブページのURL
url = "https://aistock.tech/"
# ウェブページにアクセスしてHTMLを取得
response = requests.get(url)
response.encoding = response.apparent_encoding
# 取得したHTMLを出力
print(response.text)
この例では、私が開発したAI株価予測サービスのトップページにアクセスします。
url変数を変更することで、任意のウェブページにアクセスできます。
requests.get(url)でウェブページからHTMLデータを取得し、response.apparent_encodingで適切な文字コードに変換しています。
これにより、文字化けを避けることができます。
ただし、同じウェブページに短時間で複数回アクセスするとサーバーに負担をかける可能性があるので、負荷を考慮したアクセスを心がけましょう。
データ収集:スクレイピングの実際
ここでは、BeautifulSoupを活用したスクレイピングの具体的な手順を見てみましょう。
まず、AI株価予測サービスのページにアクセスするために、Pythonのrequestsモジュールを使用し、そのHTMLデータを取得します。
import requests
from bs4 import BeautifulSoup
url = "https://aistock.tech/"
response = requests.get(url)
response.encoding = response.apparent_encoding
次に、取得したHTMLデータをBeautifulSoupに渡し、HTMLの解析を行います。
ここで使用する‘html.parser’は、HTMLを解析する際のパーサーの種類を指定しています。
soup = BeautifulSoup(response.content, 'html.parser')
#pタグを全て見つける
p_tags = soup.find_all('p')
そして、`bs.select(“p”)`を使ってページ内の全ての`p`タグを選択し、for文でそれぞれのタグからテキストを取得して表示します。
#pタグのテキストを表示
for p in p_tags:
print(p.get_text())
この方法により、以下のような様々な文章が抽出されます。
まず、株価を予測したい企業の4桁の株価コードを入力し、ファイル名を入力後に「株価データを取得」をクリックしてください。
クリック後にcsvファイルがダウンロードされます。その後、「ファイルを選択」をクリックし、先ほどダウンロードしたcsvファイルを選択してください。
「予測を開始」ボタンをクリックすることで、次の1ヶ月間の株価が現在よりも上昇するか下降するかを予測します。
詳しい使い方とAI株価予測サービス概要についてはこちら
ここまでがウェブページから特定の要素を選択してデータを取得する基本的なスクレイピングの流れです。
BeautifulSoupを使えば、これらのステップを簡単に行うことができます。
まとめ
この記事を通して、スクレイピングの基本からPythonのBeautifulSoupを用いた具体的な手法までをご紹介しました。スクレイピングの概念についての理解は深まったでしょうか?
スクレイピングには、ウェブサイトへのアクセス、HTMLの解析といった一連のステップが伴います。
提供されたサンプルコードを参考にして、スクレイピングのプロセスをしっかりと理解し、自身の開発に応用してみましょう!