---
title: "Web Scraping mit Python: Bücher von Books to Scrape"
author: "Dein Name"
format: 
  html:
    toc: true
    code-tools: true
jupyter: python3
---

# Einleitung

In diesem Tutorial lernen wir, wie man die Website [Books to Scrape](https://books.toscrape.com/) mit Python und `BeautifulSoup` scrapt. Diese Seite dient oft als Beispiel für Web-Scraping, da sie eine einfache Struktur hat und keine komplexen Schutzmaßnahmen gegen Scraping implementiert.

## Voraussetzungen

Stellen Sie sicher, dass Sie die folgenden Python-Bibliotheken installiert haben:

```bash
pip install requests beautifulsoup4 pandas
```

# Scraping der Buchdaten

## Schritt 1: HTML-Inhalt abrufen

Zuerst verwenden wir die `requests`-Bibliothek, um den HTML-Inhalt der Seite abzurufen.

```{python}
import requests

# URL der Website
url = "https://books.toscrape.com/"

# HTML-Inhalt abrufen
response = requests.get(url)

# Überprüfen, ob die Anfrage erfolgreich war
if response.status_code == 200:
    print("HTML-Inhalt erfolgreich abgerufen.")
else:
    print(f"Fehler beim Abrufen der Seite: {response.status_code}")
```

## Schritt 2: HTML mit BeautifulSoup parsen

Jetzt parsen wir den abgerufenen HTML-Inhalt mit `BeautifulSoup`.

```{python}
from bs4 import BeautifulSoup

# HTML-Inhalt parsen
soup = BeautifulSoup(response.text, 'html.parser')

# Überprüfen des Titels der Seite
print(soup.title.string)
```

## Schritt 3: Daten extrahieren

Wir extrahieren nun die Titel und Preise der Bücher.

```{python}
# Listen zur Speicherung der Daten
book_titles = []
book_prices = []

# Alle Buchcontainer finden
books = soup.find_all('article', class_='product_pod')

# Daten extrahieren
for book in books:
    title = book.h3.a['title']  # Titel des Buches
    price = book.find('p', class_='price_color').text  # Preis des Buches
    book_titles.append(title)
    book_prices.append(price)

# Daten anzeigen
for title, price in zip(book_titles, book_prices):
    print(f"{title}: {price}")
```

## Schritt 4: Daten in einem DataFrame speichern

Um die extrahierten Daten zu speichern, verwenden wir `pandas`, um sie in einem DataFrame zu organisieren.

```{python}
import pandas as pd

# DataFrame erstellen
books_df = pd.DataFrame({
    'Title': book_titles,
    'Price': book_prices
})

# DataFrame anzeigen
print(books_df.head())
```

# Fazit

In diesem Tutorial haben wir gelernt, wie man die Website [Books to Scrape](https://books.toscrape.com/) mit Python und `BeautifulSoup` scrapt. Wir haben die Titel und Preise der Bücher extrahiert und in einem DataFrame gespeichert. Dieses Beispiel kann als Grundlage für komplexere Scraping-Projekte dienen.

# Weiterführende Ressourcen

- [BeautifulSoup-Dokumentation](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)
- [Requests-Dokumentation](https://docs.python-requests.org/en/latest/)
- [Pandas-Dokumentation](https://pandas.pydata.org/docs/)
