はじめに
この記事では、Pythonを使用してプロ野球選手の打率データを年度別にウェブからクローリングし、CSVファイルに保存する方法を詳しく解説します。データ収集から分析までの一連のステップを学び、データ活用の基盤を築きましょう。
必要なライブラリ
このプロジェクトを実行するために必要なPythonライブラリは次の通りです。必要なライブラリがインストールされていることを確認しましょう。
-requests: ウェブページからデータを取得するためのライブラリ。
-BeautifulSoup: HTMLデータを解析するためのライブラリ。
-pandas: データの整理とCSVファイルへの保存に使用するライブラリ。
コードの概要
このプロジェクトのコードは、以下の手順で実行されます。
- 年度ごとにデータをクローリングし、ウェブページから取得します。
- HTMLデータを解析してテーブルデータを抽出します。
- データを整理し、年度ごとにCSVファイルに保存します。
年度別にデータをクローリング
コード説明
年度ごとにデータをクローリングするために、forループを使用します。指定した年度から過去に遡りながらデータを収集し、CSVファイルに保存します。
python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 開始年度と終了年度(過去から遡る)
start_year = 2023
end_year = 2009
for year in range(start_year, end_year - 1, -1):
file_path = f'pro_baseball_data_{year}.csv'
if year == start_year:
url = 'https://baseball-data.com///stats/hitter-all/avg-1.html'
else:
formatted_year = year - 2000 # 年度の形式に変換(例: 2023 -> 23)
url = f'https://baseball-data.com/{formatted_year:02d}/stats/hitter-all/avg-1.html'
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table')
rows = table.find_all('tr')
data = []
for row in rows[1:]:
cols = row.find_all(['td', 'th'])
row_data = [col.get_text(strip=True) for col in cols]
data.append(row_data)
columns = [col.get_text(strip=True) for col in rows[0].find_all(['th', 'td'])]
df = pd.DataFrame(data, columns=columns)
df.drop(df.index[-1], inplace=True)
df.to_csv(file_path, index=False)
else:
print(f"Failed to retrieve the page for year {year}. Status code: {response.status_code}")
ループの詳細説明
-
start_year
とend_year
で取得したいデータの範囲を指定します。 - forループで年度ごとにデータを取得します。年度ごとのデータはCSVファイルに保存されます。
-
file_path
でCSVファイルの保存先を指定します。 -
url
でデータを取得するウェブページのURLを構築します。 -
requests.get()
でウェブページからデータを取得します。 - ウェブページから取得したデータを解析し、必要な情報を抽出します。
- データを整理して
pandas
のDataFrame
に格納します。 -
DataFrame
をCSVファイルに保存します。
注意点
- クローリングを行う際は、対象ウェブサイトの利用規約を遵守してください。
- ウェブサイトの構造が変わると、コードの調整が必要になる可能性があります。
まとめ
Pythonを使ってプロ野球のデータをクローリングし、年度別にCSVファイルに保存する方法を学びました。これにより、データ分析や研究のための基盤が整いました。データ収集の基本をマスターし、さまざまなプロジェクトで活用しましょう。