カテゴリ: Python 更新日: 2026/06/15

Pythonでスクレイピングしたデータをデータベースに保存する方法!初心者でもわかる完全ガイド

Pythonでスクレイピングしたデータをデータベースに保存する方法
Pythonでスクレイピングしたデータをデータベースに保存する方法

先生と生徒の会話形式で理解しよう

生徒

「Pythonでスクレイピングしたデータって、そのままだと消えちゃいますよね?」

先生

「そうですね。データを長く使いたいなら、データベースに保存するのが基本です。」

生徒

「データベースって難しそうですが、初心者でもできますか?」

先生

「大丈夫です。まずは簡単な方法から一緒にやってみましょう。」

1. Pythonスクレイピングとデータベース保存とは?

1. Pythonスクレイピングとデータベース保存とは?
1. Pythonスクレイピングとデータベース保存とは?

PythonのWebスクレイピングとは、インターネット上の情報を自動で取得する技術です。しかし取得したデータは、そのままだと一時的にしか使えません。そこで重要になるのが「データベース保存」です。

データベースとは、データを整理して保存する箱のようなものです。ノートにメモを書く代わりに、パソコンの中にきちんと整理して保存するイメージです。

2. 初心者におすすめのデータベースSQLite

2. 初心者におすすめのデータベースSQLite
2. 初心者におすすめのデータベースSQLite

初心者には「SQLite(エスキューライト)」というデータベースがおすすめです。理由は、特別な設定が不要で、Pythonだけで簡単に使えるからです。

SQLiteは1つのファイルとして保存されるため、難しいサーバー設定がいりません。まずはこのSQLiteを使ってスクレイピングデータを保存してみましょう。

3. SQLiteに接続してテーブルを作る方法

3. SQLiteに接続してテーブルを作る方法
3. SQLiteに接続してテーブルを作る方法

まずはデータを入れるための箱(テーブル)を作ります。


import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS articles (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    link TEXT
)
""")

conn.commit()
conn.close()

ここでは「articles」というテーブルを作成しています。titleは記事タイトル、linkはURLを保存するための項目です。

4. スクレイピングしたデータを保存する方法

4. スクレイピングしたデータを保存する方法
4. スクレイピングしたデータを保存する方法

次に、スクレイピングで取得したデータをデータベースに保存します。


import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

title = "Pythonスクレイピング入門"
link = "https://example.com"

cursor.execute("INSERT INTO articles (title, link) VALUES (?, ?)", (title, link))

conn.commit()
conn.close()

INSERT文を使うことで、データベースに新しいデータを追加できます。「?」は後から値を安全に入れるための仕組みです。

5. BeautifulSoupと組み合わせた実践例

5. BeautifulSoupと組み合わせた実践例
5. BeautifulSoupと組み合わせた実践例

実際にスクレイピングとデータ保存を組み合わせてみましょう。


import requests
from bs4 import BeautifulSoup
import sqlite3

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

titles = soup.find_all("h2")

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

for t in titles:
    cursor.execute("INSERT INTO articles (title) VALUES (?)", (t.text,))

conn.commit()
conn.close()

このように、取得したHTMLの中からデータを取り出し、そのままデータベースに保存することができます。

6. 保存したデータを確認する方法

6. 保存したデータを確認する方法
6. 保存したデータを確認する方法

データが正しく保存されたか確認することも重要です。


import sqlite3

conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

cursor.execute("SELECT * FROM articles")

rows = cursor.fetchall()

for row in rows:
    print(row)

conn.close()

(1, 'Pythonスクレイピング入門', 'https://example.com')

SELECT文を使うことで、保存されたデータを取り出して確認できます。

7. エラーを防ぐためのポイント

7. エラーを防ぐためのポイント
7. エラーを防ぐためのポイント

初心者がよくつまずくポイントとして、データベース接続の閉じ忘れや、commitの忘れがあります。これを忘れるとデータが保存されません。

また、スクレイピング対象のサイト構造が変わるとデータが取得できなくなるため、定期的に確認することも大切です。

8. Pythonスクレイピングとデータベース保存の活用例

8. Pythonスクレイピングとデータベース保存の活用例
8. Pythonスクレイピングとデータベース保存の活用例

この技術を使うことで、ニュースサイトの記事収集、商品価格の記録、ブログ記事の分析など、さまざまな用途に応用できます。

データを蓄積することで、後から分析や比較ができるようになるため、スクレイピングとデータベースはセットで覚えることが重要です。

まとめ

まとめ
まとめ

Pythonスクレイピングとデータベース保存の重要ポイント

本記事では、Pythonを使ったWebスクレイピングと、そのデータをデータベースに保存する方法について、初心者にも理解しやすい形で解説してきました。スクレイピングは、インターネット上の情報を自動で取得できる便利な技術ですが、取得したデータをそのままにしておくと一時的にしか利用できません。そのため、データを長期的に活用するためには、データベースへの保存が非常に重要になります。

特に初心者にとって扱いやすいSQLiteは、サーバーの準備が不要で、Pythonだけで簡単に利用できる点が大きなメリットです。データベースファイルとして一つにまとまるため、管理もしやすく、小規模なアプリケーションや学習用途には最適です。今回紹介したように、テーブルの作成、データの挿入、データの取得という基本的な流れを理解することで、スクレイピングした情報を効率よく蓄積することが可能になります。

実務でも役立つデータ管理の考え方

スクレイピングとデータベースを組み合わせることで、単なる情報取得から一歩進んで、データ分析や自動化の基盤を構築することができます。例えば、ニュース記事の収集、ECサイトの商品価格の比較、ブログ記事のトレンド分析など、さまざまな場面で活用できます。継続的にデータを蓄積することで、時間の経過による変化を分析することも可能になります。

また、SQLの基本であるINSERT文やSELECT文の使い方を理解しておくことで、より柔軟にデータを操作できるようになります。プレースホルダを使った安全なデータ挿入も重要なポイントであり、セキュリティ対策としても必須の知識です。PythonとSQLiteの組み合わせは、シンプルでありながら実用性が高く、初心者が最初に学ぶデータベース技術として非常に適しています。

よくある失敗と対策

初心者がつまずきやすいポイントとして、commitの書き忘れや、データベース接続のclose忘れがあります。これらを忘れると、せっかく取得したデータが保存されないという問題が発生します。また、スクレイピング対象のHTML構造が変更されると、データ取得ができなくなるため、定期的なメンテナンスも重要です。

エラーを防ぐためには、処理の流れをしっかり理解し、こまめに動作確認を行うことが大切です。特に初心者のうちは、一つひとつの処理を確認しながら進めることで、確実にスキルを身につけることができます。

復習用サンプルプログラム


import requests
from bs4 import BeautifulSoup
import sqlite3

# データベース接続
conn = sqlite3.connect("sample.db")
cursor = conn.cursor()

# テーブル作成
cursor.execute("""
CREATE TABLE IF NOT EXISTS articles (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT
)
""")

# スクレイピング
url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

titles = soup.find_all("h2")

# データ保存
for t in titles:
    cursor.execute("INSERT INTO articles (title) VALUES (?)", (t.text,))

conn.commit()

# データ確認
cursor.execute("SELECT * FROM articles")
rows = cursor.fetchall()

for row in rows:
    print(row)

conn.close()
先生と生徒の振り返り会話

生徒

「Pythonでスクレイピングしたデータは、そのままだと一時的なものだから、データベースに保存する必要があるんですね。」

先生

「その通りです。特にSQLiteを使えば、初心者でも簡単にデータ保存の仕組みを作ることができます。」

生徒

「テーブルを作って、INSERTでデータを入れて、SELECTで確認する流れが基本なんですね。」

先生

「はい、その基本がとても重要です。この流れを理解すれば、さまざまなデータ処理に応用できます。」

生徒

「commitやcloseを忘れるとデータが保存されないのも注意ポイントですね。」

先生

「そうですね。小さなミスですが、初心者がよくつまずくポイントなので意識しましょう。」

生徒

「スクレイピングとデータベースを組み合わせると、データ分析や自動化にも使えるんですね。」

先生

「はい。今回学んだ内容は基礎ですが、実務でもそのまま活かせる非常に重要なスキルです。しっかり復習しておきましょう。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python のWebスクレイピングの記事一覧へ
新着記事
New1
Python
Pythonの整数と浮動小数点数の違いとは?数値型の基本を解説
New2
Python
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
New3
Python
Pythonのbreakとcontinueの違いとは?ループの制御方法をマスター
New4
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.3
Java&Spring記事人気No3
Python
Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
No.4
Java&Spring記事人気No4
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.5
Java&Spring記事人気No5
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.6
Java&Spring記事人気No6
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.7
Java&Spring記事人気No7
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
No.8
Java&Spring記事人気No8
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()