CodeGym /Java Kurs /Python SELF DE /Daten speichern und cachen

Daten speichern und cachen

Python SELF DE
Level 34 , Lektion 4
Verfügbar

1. Warum ist Caching notwendig?

Okay Leute, wir sind bei einem der spannendsten Teile des Web-Scrapings angekommen – Daten-Caching. Warum Caching? Weil es so ist, als ob man seinen eigenen "sauberen Fünf-Minuten-Rekord" beim Arbeiten mit Skripten aufstellt! Lass uns klären, warum das notwendig ist und wie es funktioniert – einfach erklärt, damit der Kopf nicht raucht.

Stell dir vor: Du hast das Web-Scraping einer Webseite durchgeführt, alle benötigten Daten gesammelt, und morgen möchtest du sie aktualisieren. Muss man wieder in die Endlosschleife von Anfragen eintauchen? Nein, man kann sich doppelte Arbeit sparen und die Daten mit Hilfe von Caching speichern.

Vorteile von Caching:

  • Geschwindigkeit: Gespeicherte Daten stehen schneller zur Verfügung, als sie erneut vom Server zu laden. Das ist, als ob du schnellen Zugriff auf dein Lieblingsgebäck hättest: Du musst nicht erneut in die Bäckerei gehen, es ist schon bei dir im Kühlschrank!
  • Sparen: Du überlastest die Server nicht mit unnötigen Anfragen und sparst auch deinen Internettraffic. Ein kostenloser Bonus!
  • Zuverlässigkeit: Caching hilft, mit vorübergehenden Verbindungsproblemen umzugehen. Wenn die Seite plötzlich nicht verfügbar ist, hast du trotzdem die benötigten Daten. Fast so, als hättest du einen Ersatzfallschirm.

2. Grundlagen des Daten-Cachings

Was ist ein Cache?

Ein Cache ist ein temporärer Speicher, der die Wiederverwendung von zuvor abgerufenen Daten ermöglicht. In der Programmierung hilft Caching, erneute Anfragen für dieselben Daten zu vermeiden. Stell dir vor, ein Cache sei deine persönliche Bibliothek häufig genutzter Informationen.

Arten von Caches:

  • Cache im Speicher: Schnell, aber wird gelöscht, wenn der Strom abgeschaltet wird. Funktioniert wie der Arbeitsspeicher.
  • Datei-Cache: Daten werden auf der Festplatte gespeichert, was stabiler und langlebiger ist.

3. Praktisches Caching mit Python

Um Daten in Python zu cachen, können wir die Bibliothek requests verwenden. Allerdings unterstützt requests Caching nicht von Haus aus. Hier kommt requests-cache ins Spiel, das eine einfache Möglichkeit bietet, Caching zu deinen Anfragen hinzuzufügen.

Installation der Bibliothek

Bash

pip install requests-cache

Konfiguration des Caches

Lasst uns den Cache in unserem Skript konfigurieren:

Python

import requests_cache

# Den Cache in SQLite einrichten
requests_cache.install_cache('demo_cache', expire_after=180)

import requests

# Anfrage senden
response = requests.get('https://jsonplaceholder.typicode.com/todos/1')

# Prüfen, ob die Antwort aus dem Cache kam
print(f'From cache: {response.from_cache}')

# Daten ausgeben
print(response.json())

Zuerst richten wir den Cache ein, indem wir requests_cache.install_cache aufrufen. Das erstellt eine SQLite-Datenbank zum Speichern der gecachten Daten. Der Parameter expire_after gibt die Zeit (in Sekunden) an, nach der die gecachten Daten gelöscht werden. Hier haben wir das Caching auf drei Minuten eingestellt.

Besonderheiten des Cachings

Wenn du dieses Skript erneut ausführst, beachte response.from_cache. Diese Variable wird für die nächsten drei Minuten nach der ersten Anfrage auf True gesetzt.

Cache löschen

Den Cache zu löschen ist einfach: Lösch die Datenbankdatei oder verwende die Methode requests_cache.clear(), um alle Einträge aus deinem Cache zu entfernen.

4. Erweiterte Caching-Möglichkeiten

Bedingtes Caching

Manchmal benötigst du ein kontrollierteres Caching. Zum Beispiel wenn du keine Daten cachen möchtest, die veraltet sind oder wenn sich bestimmte Parameter der Anfrage ändern.

Für solche Fälle kannst du requests-cache mit zusätzlichen Parametern verwenden:

Python

requests_cache.install_cache('custom_cache',
             allowable_methods=['GET', 'POST'],
             allowable_codes=[200, 404],
             ignored_parameters=['timestamp'])

Hier erlauben wir das Caching für die Methoden GET und POST und nur für die Antworten mit den Codes 200 und 404. Wir ignorieren auch den Parameter timestamp, damit Anfragen mit unterschiedlichen Zeitstempeln nicht als unterschiedliche betrachtet werden.

Arbeiten mit Redis

Wenn du eine leistungsfähigere Lösung brauchst, wie z. B. Unterstützung für verteiltes Caching, kannst du redis verwenden. Das ist ein In-Memory Daten-Caching-System, das in der Big-Data-Welt beliebt ist.

Arbeitsschritte:

  1. Installiere Redis und die Python-Bibliothek:
    Bash
    
    brew install redis  # für macOS-Nutzer
    pip install redis
    
  2. Richte Redis in deinem Projekt ein:
    Python
    
    import redis
    import requests
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    def get_cached_response(url):
        if r.get(url):
            return r.get(url).decode('utf-8')
        else:
            response = requests.get(url)
            r.setex(url, 3600, response.text)  # Cache für 1 Stunde
            return response.text
    
    print(get_cached_response('https://jsonplaceholder.typicode.com/todos/1'))
    

Dieses Beispiel verwendet Redis, um Antworten für eine Stunde zu speichern. Wir prüfen, ob Daten im Cache vorhanden sind, und führen nur dann eine HTTP-Anfrage aus, wenn keine vorliegen.

5. Fehlerbehandlung

Beim Arbeiten mit Caching kann es vorkommen, dass die Datenbank beschädigt wird oder der Cache nicht aktualisiert wird. In solchen Fällen ist es eine gute Praxis, Logs zu führen und die Daten regelmäßig zu überprüfen.

Beispielcode zum Logging:

Python

import logging

logging.basicConfig(level=logging.INFO)

try:
    response = get_cached_response('https://jsonplaceholder.typicode.com/todos/1')
    logging.info("Daten erfolgreich aus dem Cache abgerufen")
except Exception as e:
    logging.error("Fehler beim Abrufen der Daten: %s", str(e))

Fazit

Caching ist nicht nur ein Werkzeug zur Beschleunigung der Arbeit. Es ist ein Weg, um deine Anwendungen zuverlässiger zu machen und gegen vorübergehende Netzwerkunterbrechungen oder Serverüberlastungen zu wappnen. Mit Tools wie requests-cache oder redis kannst du Anfragen effizient verwalten und Daten zur späteren Nutzung speichern. Werde ein Cache-Guru und überlaste deine Skripte nicht mit unnötigen Anfragen! Und wie es in der alten Programmierer-Weisheit heißt: "Besser einmal cachen, als hundert Mal nachfragen".

1
Опрос
Umgehung von Parsing-Einschränkungen,  34 уровень,  4 лекция
недоступен
Umgehung von Parsing-Einschränkungen
Umgehung von Parsing-Einschränkungen
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION