📊 Pythonスクレイピング応用編:BeautifulSoup+pandasでCSV保存!
前回の記事では、BeautifulSoup を使ってWebページからデータを取得する方法を紹介しました。
今回はその続きをテーマに、取得したデータを pandas と組み合わせてCSVファイルとして保存する方法を解説します。
このステップを覚えると、「データを取るだけ」から「蓄積・分析」へと一歩進むことができます!
✅ 必要なライブラリのインストール
まずは必要なライブラリをインストールします。
pip install requests beautifulsoup4 pandas
pandasは表形式データの処理に最適なライブラリです。
🌐 1. Webページを取得する
まずは前回と同じようにWebページを取得します。
import requests
from bs4 import BeautifulSoup
url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
📰 2. タイトルとリンクを取得
次に、Webページ内のニュースタイトルとリンクを抽出してみましょう。
articles = soup.find_all("a")
data = []
for a in articles[:10]:
title = a.text.strip()
link = a.get("href")
if title and link:
data.append({"タイトル": title, "リンク": link})
print(data[:3]) # 先頭3件を確認
ここまでで、ニュースタイトルとURLを辞書形式のリストとして取得できました。
💾 3. pandasでCSVに保存
次に、pandasを使ってこのデータをCSVファイルに保存します。
import pandas as pd
df = pd.DataFrame(data)
df.to_csv("news_data.csv", index=False, encoding="utf-8-sig")
print("CSVファイルを保存しました!")
このコードを実行すると、同じフォルダに news_data.csv が作成されます。
Excelなどで開くと、ニュースタイトルとリンクが表形式で表示されます。
📂 4. 出力されたCSVの中身(例)
| タイトル | リンク |
|---|---|
| Example Domain | https://example.com |
| More Information | https://example.com/info |
| Contact Us | https://example.com/contact |
このように、取得したデータをきれいに整理・保存できます。
⚙️ 5. 応用:毎日自動でデータを更新
定期的にスクレイピングしてデータを更新したい場合は、Pythonの schedule ライブラリを使うのが便利です。
pip install schedule
import schedule
import time
def job():
# 上で書いたスクレイピング処理をここに入れる
print("データ更新完了!")
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
これで、毎日午前9時にデータを自動収集できます。
🏁 まとめ
- BeautifulSoupでHTMLを解析
- pandasで表形式データに整形
- CSV形式で保存して再利用
この流れをマスターすれば、ニュースサイトや商品情報、株価データなどを自動で収集し、Excel感覚で管理できます。
データを“取る”から“活かす”へ — Pythonであなたもデータ収集の達人に!
🧩 次のステップ
- BeautifulSoup+Seleniumで動的ページもスクレイピング
- GoogleスプレッドシートAPIと連携してクラウド保存
- matplotlibやplotlyでグラフ可視化
この記事が役立ったら、ブックマーク&シェアをお願いします!
