PythonでスクレイピングしたデータをCSV・JSONに保存する方法を徹底解説!初心者向け完全ガイド
生徒
「Pythonでスクレイピングしたデータって、どうやって保存するんですか?」
先生
「いいところに気づきましたね。取得したデータはCSVやJSON形式で保存するのが一般的です。」
生徒
「CSVとかJSONって何ですか?難しそうです…」
先生
「大丈夫です。とてもシンプルな仕組みなので、順番にわかりやすく説明していきますね!」
1. スクレイピングデータを保存する理由とは?
PythonでWebスクレイピングを行うと、Webサイトからさまざまな情報を取得できます。しかし、そのまま画面に表示するだけでは後から使うことができません。
そこで重要になるのが「データ保存」です。CSVやJSON形式で保存することで、Excelで開いたり、別のプログラムで再利用したりできます。
たとえば、ネットショップの価格を集めて比較したり、ニュース記事をまとめて分析する場合にも役立ちます。
2. CSVとは?初心者向けにやさしく解説
CSVとは「カンマで区切られたデータ形式」のことです。表のようなデータをシンプルに保存できます。
Excelと非常に相性が良く、初心者にも扱いやすいのが特徴です。
例えば次のようなデータになります。
名前,年齢
田中,20
佐藤,25
カンマで区切るだけなので、とてもシンプルな仕組みです。
3. PythonでCSVファイルに保存する方法
Pythonでは「csvモジュール」を使うことで、簡単にCSVファイルを作成できます。モジュールとは、便利な機能がまとめられた部品のようなものです。
import csv
data = [
["名前", "年齢"],
["田中", 20],
["佐藤", 25]
]
with open("data.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerows(data)
このコードを実行すると、同じフォルダに「data.csv」というファイルが作成されます。
「with open」はファイルを開く命令で、「w」は書き込みモードを意味します。
4. JSONとは?データ保存でよく使われる形式
JSONは「データを構造的に保存できる形式」です。少し難しそうに見えますが、辞書のような形で書けるのが特徴です。
例えば以下のように書きます。
{
"名前": "田中",
"年齢": 20
}
キーと値のセットで管理できるため、複雑なデータでも扱いやすいです。
5. PythonでJSONファイルに保存する方法
JSON形式で保存するには「jsonモジュール」を使います。CSVと同じく簡単に扱えます。
import json
data = {
"名前": "田中",
"年齢": 20
}
with open("data.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=4)
「ensure_ascii=False」は日本語をそのまま保存するための設定です。「indent=4」は見やすく整形するための設定です。
6. スクレイピングデータを保存する実践例
ここでは、スクレイピングで取得したデータをCSVとJSONの両方で保存する例を紹介します。
import csv
import json
data = [
{"名前": "田中", "年齢": 20},
{"名前": "佐藤", "年齢": 25}
]
# CSV保存
with open("data.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["名前", "年齢"])
for item in data:
writer.writerow([item["名前"], item["年齢"]])
# JSON保存
with open("data.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=4)
このようにすれば、スクレイピングした情報を自由に保存できます。
7. よくあるエラーと対処法
初心者がよくつまずくポイントとして、文字コードの問題があります。日本語が文字化けする場合は「encoding="utf-8"」を指定しましょう。
また、CSV保存時に空行が入る場合は「newline=""」を忘れないようにすることが重要です。
8. CSVとJSONの使い分けポイント
CSVはシンプルな表形式のデータに向いています。一方でJSONは複雑な構造のデータに適しています。
例えば、商品名と価格だけならCSV、商品情報にレビューやカテゴリがある場合はJSONが向いています。
用途に応じて使い分けることが、Pythonスクレイピングを効率的に進めるコツです。
まとめ
スクレイピングデータ保存の重要ポイントを総復習
PythonでWebスクレイピングを行う際に取得したデータをCSVやJSON形式で保存することは、データ活用の第一歩です。 スクレイピングしたデータをそのまま画面表示するだけでは、後から分析や加工ができませんが、CSVファイルやJSONファイルとして保存しておくことで、 Excelでの閲覧やデータ分析ツールでの活用、さらには別のPythonプログラムとの連携など幅広い用途に対応できるようになります。
特にCSV形式は、表形式データの保存に適しており、初心者でも扱いやすいのが特徴です。 一方でJSON形式は、キーと値の構造を持つため、ネストされたデータや複雑な情報管理に向いています。 このように、Pythonスクレイピングでは用途に応じてCSVとJSONを使い分けることが非常に重要です。
初心者が覚えておくべき基本知識
PythonでCSVファイルを扱う場合はcsvモジュールを使用し、jsonファイルを扱う場合はjsonモジュールを利用します。 また、ファイル操作ではwith open構文を使うことで、安全かつ簡潔にファイルの読み書きが可能になります。 書き込みモードには「w」を指定し、日本語を扱う場合はencoding="utf-8"を指定することが重要です。
さらに、CSV保存時のnewline指定や、JSON保存時のensure_asciiやindent設定など、 実務で役立つ細かいポイントを理解しておくことで、より実践的なスキルが身につきます。
実務で役立つデータ保存テクニック
実際の開発現場では、スクレイピングしたデータをそのまま保存するだけでなく、 データを加工してから保存するケースが多くあります。 例えば、不要な空白の削除や数値変換、重複データの除去などを行うことで、 より品質の高いデータを作成することができます。
また、CSVとJSONの両方で保存することで、用途ごとに使い分けることも可能になります。 例えば、分析用にはCSV、システム連携用にはJSONというように、 データの活用範囲を広げることができます。
サンプルプログラムで理解を深める
以下は、スクレイピングデータをCSVとJSONの両方に保存する実践的なサンプルコードです。 初心者の方は、このコードを実際に動かしてみることで理解が深まります。
import csv
import json
# スクレイピングで取得したデータを想定
data = [
{"名前": "山田", "年齢": 30},
{"名前": "鈴木", "年齢": 28},
{"名前": "高橋", "年齢": 35}
]
# CSVに保存
with open("sample.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["名前", "年齢"])
for item in data:
writer.writerow([item["名前"], item["年齢"]])
# JSONに保存
with open("sample.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=4)
このプログラムを実行することで、Pythonでのファイル保存処理の流れを実践的に理解することができます。 スクレイピングと組み合わせることで、より高度なデータ収集と保存が可能になります。
よくあるミスと対策まとめ
初心者がつまずきやすいポイントとして、文字化けや空行問題があります。 これらはencoding指定やnewline設定で解決できます。 また、JSON保存時に日本語がエスケープされる問題もensure_ascii設定で回避できます。
こうした細かいポイントをしっかり理解することで、 Pythonスクレイピングの品質を大きく向上させることができます。
生徒
スクレイピングしたデータってそのまま使うだけじゃなくて保存するのが大事なんですね
先生
その通りですデータを保存することで後から分析したり再利用したりできるようになります
生徒
CSVとJSONの違いも少しわかってきましたシンプルならCSV複雑ならJSONですね
先生
よく理解できています用途に応じて使い分けることがPythonスクレイピングの重要なポイントです
生徒
あと文字化けとか空行の問題も気をつけないといけないんですね
先生
そうですencodingやnewlineの指定は実務でもよく使うので必ず覚えておきましょう
生徒
これでスクレイピングから保存まで一通りできそうです
先生
素晴らしいです次はデータ分析や自動化にも挑戦してみましょう