1. Przygotowanie danych do zapisu
Na poprzednich wykładach nauczyliśmy się już pobierać dane z stron internetowych za pomocą biblioteki BeautifulSoup. Teraz pora przekształcić nasze osiągnięcia web scrapingowe w coś użytecznego i wygodnego do analizy. W końcu jeśli dane zostają tylko w twoim skrypcie, niewiele z nich pożytku. Dzisiaj dowiemy się, jak zapisywać dane w formatach CSV i Excel, bo wiadomo, w życiu programisty, jak i w życiu kota, najważniejsze to znaleźć coś do jedzenia... tzn. zapisać.
Zanim zaczniemy przekształcać nasze dane w fajne tabelki, zatrzymajmy się na chwilę i przyjrzyjmy się, jak przygotować nasze dane do eksportu. Zazwyczaj dane, które pobieramy ze stron internetowych, są przedstawione w postaci list lub słowników. Warto je sformatować w taki sposób, aby były gotowe do eksportu w formacie tabeli.
Przykład danych
Załóżmy, że zebraliście następujące dane o książkach:
books = [
{"title": "Harry Potter i Kamień Filozoficzny", "author": "J. K. Rowling", "price": "350.00"},
{"title": "Władca Pierścieni", "author": "J. R. R. Tolkien", "price": "500.00"},
{"title": "Mistrz i Małgorzata", "author": "M. Bułhakow", "price": "450.00"}
]
2. Zapisywanie w formacie CSV
CSV (Comma-Separated Values) — to prosty format tekstowy, który pozwala przechowywać dane tabelaryczne. Każdy wiersz w CSV to rekord, a każda kolumna jest oddzielona przecinkiem. Nauczmy się zapisywać nasze dane w tym formacie.
Użycie biblioteki csv
Python oferuje nam wygodny moduł csv, który znacznie ułatwia pracę z plikami CSV. Oto jak można eksportować nasze dane o książkach do CSV:
import csv
with open('books.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=["title", "author", "price"])
writer.writeheader()
writer.writerows(books)
print("Dane zostały zapisane w pliku books.csv")
Uwaga: Zawsze podawaj newline='' podczas otwierania pliku w trybie w, aby uniknąć dodatkowych pustych linii w Windows.
Odczytywanie danych z CSV
Aby dopełnić obrazu, zobaczmy, jak odczytać dane z powrotem z CSV:
with open('books.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
3. Zapisywanie w formacie Excel
Do pracy z Excel w Pythonie użyjemy biblioteki pandas. Pandas pozwala łatwo przekształcić nasze dane do DataFrame i eksportować je w różnych formatach, w tym Excel.
Instalacja pandas
Jeśli jeszcze nie zainstalowaliście pandas, zróbcie to za pomocą pip:
pip install pandas openpyxl
Użycie pandas do eksportu do Excel
Teraz zapiszmy nasze dane o książkach do Excel:
import pandas as pd
df = pd.DataFrame(books)
df.to_excel('books.xlsx', index=False, engine='openpyxl')
print("Dane zostały zapisane w pliku books.xlsx")
Odczytywanie danych z Excel
Jaką radość przynosi nie tylko tworzenie, ale także ponowne użycie stworzonego! Nauczmy się odczytywać dane z Excel:
df = pd.read_excel('books.xlsx')
print(df)
4. Błędy i ich obsługa
Jak w każdym innym aspekcie programowania, podczas eksportu danych można napotkać błędy. Najczęściej występujące są związane z nieprawidłowymi ścieżkami do plików lub brakiem wymaganych bibliotek. Na przykład, jeśli zapomnicie zainstalować openpyxl, eksport do Excel się nie powiedzie.
Sprawdzanie obecności plików
Zanim spróbujecie zapisać lub odczytać plik, warto sprawdzić, czy on istnieje. Można to zrobić za pomocą modułu os:
import os
if os.path.exists('books.csv'):
print("Plik books.csv istnieje")
else:
print("Plik books.csv nie został znaleziony")
Nie uwierzycie, ale najczęstszy błąd początkujących to przypadkowe nadpisanie starych danych nowymi. Automatyzacja zapisywania historii plików to sztuka sama w sobie.
Nie zapomnijcie również uwzględnić obsługi błędów za pomocą konstrukcji try-except, aby wasz skrypt nie przestawał działać przy pierwszym napotkanym problemie.
GO TO FULL VERSION