Web Scraping22 min read

Saving Scraped Data

Learn how to store scraped data properly in CSV and JSON files so it can be reused for analysis, reports, or databases.

David Miller
November 30, 2025
3.4k98

Scraping is useless if you don’t save data.

Your goal is not just to print results, but to:

  • store them
  • reuse later
  • analyze
  • share

Why saving matters

If you scrape:

  • today: 100 products
  • tomorrow: prices change

You want history.

Common formats

  • CSV: simple tables (Excel friendly)
  • JSON: structured/nested data (APIs, configs)

Save to CSV

CSV = comma separated values.

import csv

data = [
  ["Name", "Price"],
  ["Apple", 120],
  ["Banana", 80],
]

with open("products.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerows(data)

You can open this file in Excel.


Save scraped data to CSV

import requests, csv
from bs4 import BeautifulSoup

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

rows = []
rows.append(["Text", "Link"])

for a in soup.find_all("a"):
    rows.append([a.text.strip(), a.get("href")])

with open("links.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerows(rows)

Save to JSON

JSON is great for nested data.

import json

data = [
  {"name": "Apple", "price": 120},
  {"name": "Banana", "price": 80}
]

with open("products.json", "w", encoding="utf-8") as f:
    json.dump(data, f, indent=2)

Graph: scraping to storage

flowchart LR
  A[Scraper] --> B[Extracted Data]
  B --> C[CSV File]
  B --> D[JSON File]

Remember

  • Always save data, not just print
  • CSV for tables
  • JSON for structured data
  • Use utf-8 encoding
#Python#Beginner#Data Storage