BeautifulSoupとPandasのパワフルな連携!スクレイピングの基本

BeautifulSoupとPandasの概要とその特徴

BeautifulSoupは、Pythonのライブラリの1つで、HTMLやXMLの解析に特化したツールです。BeautifulSoupを使うことで、Webページの情報を簡単にスクレイピングすることができます。

Pandasは、Pythonのライブラリの1つで、データ分析のために開発されたツールです。Pandasを使うことで、データの集計、可視化、加工が簡単にできます。

この2つのライブラリを組み合わせることで、Webページからデータを収集し、データ分析まで一気通貫で行うことができます。

BeautifulSoupとPandasのインストール方法

BeautifulSoupとPandasのインストール方法を紹介します。

BeautifulSoupのインストール方法

BeautifulSoupは、pipコマンドを使って簡単にインストールすることができます。

pip install beautifulsoup4

Pandasのインストール方法

Pandasも、pipコマンドを使って簡単にインストールすることができます。

pip install pandas

BeautifulSoupを使用したウェブスクレイピングの基本

BeautifulSoupを使ったウェブスクレイピングの基本的な流れを紹介します。

1. ライブラリのインポート

まずは、必要なライブラリをインポートします。

from bs4 import BeautifulSoup
import requests

2. Webページの取得

次に、スクレイピングしたいWebページを取得します。ここでは、requestsライブラリを使って取得します。

url = "https://example.com"
response = requests.get(url)
html = response.content

3. HTMLの解析

取得したHTMLをBeautifulSoupに渡して解析します。

soup = BeautifulSoup(html, "html.parser")

4. 要素の取得

解析したHTMLから、必要な要素を取得します。

element = soup.find("div", class_="example")

5. データの取得

取得した要素から、必要なデータを抽出します。

data = element.text

Pandasを使用したデータ分析の基本

Pandasを使ったデータ分析の基本的な流れを紹介します。

1. ライブラリのインポート

まずは、必要なライブラリをインポートします。

import pandas as pd

2. データの読み込み

Pandasを使って、データを読み込みます。

df = pd.read_csv("data.csv")

3. データの加工

データを加工して、必要な情報を取り出します。

df = df[df["age"] > 20]

4. データの集計

データを集計して、必要な情報をまとめます。

df.groupby("gender").sum()

BeautifulSoupとPandasの連携によるデータ収集と分析の効率化

BeautifulSoupとPandasを組み合わせることで、Webページからデータを収集し、データ分析まで一気通貫で行うことができます。

具体的なBeautifulSoupとPandasの連携例とその解説

ここでは、具体的なBeautifulSoupとPandasの連携例を紹介します。

例:Webページからのデータ収集と分析

以下のようなWebページから、商品情報を収集し、Pandasで分析する例を紹介します。

<html>
  <body>
    <div class="item">
      <h2>商品A</h2>
      <p class="price">1000円</p>
      <p class="stock">在庫あり</p>
    </div>
    <div class="item">
      <h2>商品B</h2>
      <p class="price">2000円</p>
      <p class="stock">在庫あり</p>
    </div>
    <div class="item">
      <h2>商品C</h2>
      <p class="price">3000円</p>
      <p class="stock">在庫なし</p>
    </div>
  </body>
</html>

まずは、このWebページから商品情報を収集します。

url = "https://example.com/items"
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html, "html.parser")
items = soup.find_all("div", class_="item")
data = []
for item in items:
    name = item.find("h2").text
    price = item.find("p", class_="price").text
    stock = item.find("p", class_="stock").text
    data.append([name, price, stock])
df = pd.DataFrame(data, columns=["name", "price", "stock"])
print(df)

次に、在庫ありの商品だけを抽出して、その平均価格を計算します。

df_stock = df[df["stock"] == "在庫あり"]

df_stock['price'] = df_stock['price'].str.replace('円', '').astype(float)
mean_price = df_stock["price"].mean()
print(mean_price)

まとめ

BeautifulSoupとPandasを組み合わせることで、Webページからデータを収集し、データ分析まで一気通貫で行うことができます。Webスクレイピングとデータ分析に興味のある方は、ぜひ試してみてください。