Scraping liefert Ihnen Zeilen strukturierter Web-Daten, aber rohe Zeilen sind noch keine Erkenntnis. In dem Moment, in dem Sie Fragen über diese Daten stellen möchten, welche Produkte im Preis gefallen sind, welche Kategorien die meisten Rezensionen tragen, wie die mittlere Bewertung nach Marke aussieht, wollen Sie SQL. GoogleSQL ist der SQL-Dialekt hinter Google Cloud SQL und BigQuery, und er lässt sich sauber mit einem Crawlbase-Scrape kombinieren: Sammeln Sie die Daten einmalig, laden Sie sie in eine verwaltete Tabelle und fragen Sie sie dann mit einfachem SQL ab statt jedes Mal Wegwerf-Parsing-Skripte zu schreiben.
Dieser Leitfaden ist ein ausführbarer Walkthrough dieser Pipeline. Sie rufen strukturierte Produktdaten über die Crawling API ab, speichern sie als CSV, laden sie in eine Google Cloud SQL-Tabelle und schreiben dann GoogleSQL-Abfragen dagegen: Filter, Aggregate, Ranking und einige Muster, die Sie auf Ihren eigenen Quellen wiederverwenden können. Das Scraping-Beispiel verwendet öffentliche Amazon-Suchergebnisse, aber die SQL-Hälfte gilt für jeden strukturierten Datensatz, den Sie erheben.
Was Sie aufbauen werden
Eine kleine Datenpipeline, die in einer abfragbaren SQL-Tabelle endet. Das laufende Beispiel ruft Amazon-Suchergebnisse für ein Produkt ab, aber jeder Schritt nach dem Scraping ist quellenunabhängig. Sie erstellen:
- Eine CSV der gescrapten Datensätze eine Zeile pro Produkt mit Name, Preis, Währung, Bewertung und Rezensionsanzahl.
- Eine Cloud SQL-Tabelle eine typisierte PostgreSQL-Tabelle, die die importierten Zeilen enthält.
- Einen Abfragesatz wiederverwendbare GoogleSQL-Abfragen zum Filtern, Aggregieren, Ranken und Zusammenfassen der Daten.
- Eine wiederholbare Schleife ein Muster, das Sie auf jede andere gescrapte Quelle anwenden können, indem Sie den Scraper und das Tabellenschema austauschen.
Was GoogleSQL in einfachen Worten ist
GoogleSQL ist die Bezeichnung für den SQL-Sprachstil, der in den verwalteten Datenbankdiensten von Google Cloud verwendet wird. In Cloud SQL ist es das Standard-SQL, das Sie gegen eine verwaltete MySQL-, PostgreSQL- oder SQL Server-Instanz schreiben, bei der Google die Hardware und den Großteil des Betriebsaufwands für Sie übernimmt. In BigQuery ist es der Dialekt, mit dem Sie sehr große Datensätze verarbeiten. In beiden Fällen ist die Idee dieselbe: Sie verwalten keine eigenen Server, Sie verbinden sich mit einer verwalteten Engine, schreiben Abfragen und lassen Google das Backend verwalten.
In diesem Tutorial verwenden wir Cloud SQL mit PostgreSQL, weil es der direkteste Weg von einer CSV mit gescrapten Daten zu einer abfragbaren Tabelle ist. Das GoogleSQL, das Sie hier schreiben, ist gewöhnliches SQL: SELECT, WHERE, GROUP BY, ORDER BY und Fensterfunktionen. Der Mehrwert liegt nicht in einer exotischen Syntax, sondern darin, dass Ihre gescrapten Web-Daten in einer verwalteten Tabelle liegen, in der diese Abfragen in Millisekunden ablaufen.
Voraussetzungen
Einige Dinge müssen vorhanden sein, bevor Sie Code schreiben. Nichts davon dauert lange.
Ein Crawlbase-Konto und Token. Registrieren Sie sich, öffnen Sie Ihr Dashboard und kopieren Sie Ihr normales Anfragen-Token von der Konto-Dokumentationsseite. Crawlbase enthält bis zu 20.000 kostenlose Anfragen zu Beginn, was für diesen Leitfaden mehr als ausreicht. Behandeln Sie das Token wie ein Passwort und halten Sie es aus der Versionskontrolle heraus.
Python 3 und die requests-Bibliothek. Bestätigen Sie Ihre Version mit python --version, dann installieren Sie die eine Abhängigkeit, die der Scraper benötigt. Sowohl json als auch csv sind in der Standardbibliothek enthalten.
Ein Google Cloud-Konto. Sie benötigen ein Projekt mit aktivierter Abrechnung, um eine Cloud SQL-Instanz zu erstellen. Google bietet kostenlose Credits für neue Konten an, sodass Sie dies durcharbeiten können, ohne sich vorab zu einem bezahlten Plan zu verpflichten. Grundlegende SQL-Kenntnisse helfen, sind aber nicht erforderlich; die Abfragen hier werden Zeile für Zeile erklärt.
Das Projekt einrichten
Erstellen Sie ein Arbeitsverzeichnis und installieren Sie die eine Bibliothek, die der Scraper verwendet.
python --version mkdir googlesql-crawlbase && cd googlesql-crawlbase pip install requests
Das ist die gesamte lokale Einrichtung. Der Scraping-Schritt läuft in Python, und alles danach geschieht innerhalb von Google Cloud SQL, wo Sie GoogleSQL direkt in der Konsole oder über einen beliebigen SQL-Client Ihrer Wahl schreiben.
Schritt 1: Strukturierte Daten als CSV scrapen
Die erste Aufgabe ist es, abfragenswerte Daten zu sammeln. Das folgende Skript ruft die Crawlbase Crawling API mit dem amazon-serp-Scraper auf, der geparsten JSON für eine Amazon-Suchergebnisseite zurückgibt, und vereinfacht die Produkte dann zu einer CSV. Speichern Sie es als crawl_data.py und ersetzen Sie den Token-Platzhalter durch Ihren eigenen.
import csv import json import requests API_TOKEN = "YOUR_CRAWLBASE_TOKEN" API_ENDPOINT = "https://api.crawlbase.com/" def crawl_data(search_url): params = { "token": API_TOKEN, "url": search_url, "scraper": "amazon-serp", } response = requests.get(API_ENDPOINT, params=params) response.raise_for_status() return response.text FIELDNAMES = ["name", "price", "currency", "rating", "reviews"] def save_to_csv(payload, filename="data.csv"): products = payload.get("body", {}).get("products", []) if not products: print("No products found") return with open(filename, "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=FIELDNAMES) writer.writeheader() for p in products: writer.writerow({ "name": p.get("name", ""), "price": p.get("rawPrice", ""), "currency": p.get("currency", ""), "rating": p.get("customerReview", ""), "reviews": p.get("customerReviewCount", ""), }) print(f"Saved {len(products)} products to {filename}") if __name__ == "__main__": raw = crawl_data("https://www.amazon.com/s?k=wireless+headphones") save_to_csv(json.loads(raw), "data.csv")
Führen Sie es mit python crawl_data.py aus. Die Crawling API übernimmt das Parsen für Sie, sodass Sie statt Selektoren zu schreiben ein sauberes products-Array erhalten und die gewünschten Felder auswählen. Das Skript behält fünf bei: name, price (entnommen aus dem numerischen rawPrice, damit es als Zahl importiert wird), currency, rating und reviews. Das Ergebnis ist eine data.csv, die zum Laden in Cloud SQL bereit ist.
Der oben verwendete amazon-serp-Scraper gibt geparsten JSON statt rohem HTML zurück, sodass Sie das Schreiben und Pflegen von CSS-Selektoren vollständig überspringen. Die Crawling API rendert die Seite, rotiert Residential-IPs, verarbeitet CAPTCHAs serverseitig und gibt strukturierte Felder zurück, was genau die saubere Eingabe ist, die eine SQL-Tabelle benötigt. Zeigen Sie sie auf einer öffentlichen Suchseite im kostenlosen Tier auf, und Sie haben abfragefertige Daten in einem einzigen Aufruf.
Schritt 2: Eine Cloud SQL-Instanz und Datenbank erstellen
Bevor Sie die Daten abfragen können, braucht sie einen Platz zum Wohnen. Richten Sie in der Google Cloud-Konsole eine verwaltete PostgreSQL-Instanz und eine Datenbank darin ein.
- Öffnen Sie die Google Cloud Console und erstellen oder wählen Sie ein Projekt mit aktivierter Abrechnung.
- Aktivieren Sie die Cloud SQL Admin API über den Bildschirm "APIs und Services".
- Gehen Sie zur Seite der Cloud SQL-Instanzen und klicken Sie auf Instanz erstellen, dann wählen Sie PostgreSQL.
- Legen Sie eine Instanz-ID, eine Region und ein Passwort für den Standardbenutzer fest, dann erstellen Sie die Instanz.
- Öffnen Sie die neue Instanz, gehen Sie zum Tab Datenbanken und erstellen Sie eine Datenbank mit dem Namen
analytics_example_db.
Google stellt die Engine bereit und verwaltet sie für Sie. Sobald die Instanz läuft und die Datenbank existiert, können Sie Cloud SQL Studio öffnen, den integrierten Abfrage-Editor, und GoogleSQL direkt darin ausführen.
Schritt 3: Die Tabelle definieren
Öffnen Sie Cloud SQL Studio, melden Sie sich bei analytics_example_db an, starten Sie einen neuen Abfrage-Tab und erstellen Sie eine Tabelle, die den CSV-Spalten entspricht. Datentypen sind hier wichtig: price und reviews werden als numerisch deklariert, damit Sie sie später summieren, mitteln und vergleichen können, während Textfelder als TEXT oder VARCHAR bleiben.
CREATE TABLE "public"."amazon_products" ( "name" TEXT, "price" DECIMAL(10, 2), "currency" VARCHAR(10), "rating" DECIMAL(3, 2), "reviews" INTEGER );
Damit wird eine leere amazon_products-Tabelle mit fünf typisierten Spalten erstellt. Die numerischen Typen sind der Kern der ganzen Übung: Ein als DECIMAL gespeicherter Preis kann gemittelt und gerankt werden, während ein als Text gespeicherter Preis nur angezeigt werden kann. Das Schema hier korrekt zu definieren ist das, was die Abfragen in Schritt 5 möglich macht.
Schritt 4: Die CSV in die Tabelle importieren
Wenn die Tabelle bereit ist, laden Sie die gescrapten Zeilen. Cloud SQL importiert CSV-Dateien aus einem Cloud Storage-Bucket.
- Gehen Sie zur Seite der Cloud SQL-Instanzen und öffnen Sie Ihre Instanz.
- Wählen Sie Importieren und wählen Sie CSV als Dateiformat.
- Laden Sie
data.csvin einen Cloud Storage-Bucket hoch und wählen Sie ihn als Quelldatei aus. - Setzen Sie
analytics_example_dbals Zieldatenbank undamazon_productsals Tabelle. - Klicken Sie auf Importieren.
Das Skript schreibt eine Kopfzeile in die CSV. Beim Importieren teilen Sie Cloud SQL mit, die erste Zeile zu überspringen, damit die Spaltennamen nicht als Datenzeile geladen werden. Wenn Ihr Client diesen Schalter nicht bietet, entfernen Sie die Kopfzeile aus der Datei vor dem Hochladen.
Sobald der Import abgeschlossen ist, sind die Zeilen abfragbar. Alles von hier an ist GoogleSQL.
Schritt 5: Daten mit GoogleSQL abfragen
Hier zahlt sich die strukturierte Daten aus. Jede Abfrage unten läuft in Cloud SQL Studio oder einem beliebigen PostgreSQL-Client, der mit der Instanz verbunden ist. Beginnen Sie mit den Grundlagen und bauen Sie darauf auf.
Alles lesen. Die einfachste Abfrage bestätigt, dass der Import funktioniert hat, und zeigt Ihnen die Form der Daten.
SELECT * FROM amazon_products LIMIT 10;
Filtern und sortieren. Finden Sie die gut bewerteten Produkte unter einer Preisobergrenze, günstigstes zuerst. Das ist die Art von Frage, die in einer Tabellenkalkulation mühsam und in SQL trivial ist.
SELECT name, price, rating, reviews FROM amazon_products WHERE price < 100 AND reviews > 500 ORDER BY price ASC;
Aggregieren. Fassen Sie das gesamte Ergebnis in einer Zeile zusammen: wie viele Produkte, was sie im Durchschnitt kosten und die Preisspanne.
SELECT COUNT(*) AS total_products, ROUND(AVG(price), 2) AS avg_price, MIN(price) AS cheapest, MAX(price) AS most_expensive FROM amazon_products;
Gruppieren und ranken. Wenn Ihre Daten eine Kategoriespalte haben, wandelt GROUP BY eine flache Tabelle in einen Vergleich um. Hier gruppiert das Beispiel nach Währung, aber dasselbe Muster funktioniert für Marke, Kategorie oder jede andere Spalte, die Sie scrapen.
SELECT currency, COUNT(*) AS listings, ROUND(AVG(rating), 2) AS avg_rating FROM amazon_products GROUP BY currency ORDER BY listings DESC;
Fensterfunktion. Ranken Sie Produkte nach Rezensionsanzahl, ohne die Zeilen zu kollabieren, sodass Sie jedes Produkt neben seiner Stellung im Set behalten. RANK() ist Standard-GoogleSQL und funktioniert in Cloud SQL und BigQuery gleich.
SELECT name, reviews, RANK() OVER (ORDER BY reviews DESC) AS popularity_rank FROM amazon_products ORDER BY popularity_rank LIMIT 10;
Wie die Ausgabe aussieht
Die Ranking-Abfrage gibt eine Zeile pro Produkt mit seiner Stellung in der Reihenfolge zurück, sodass die am häufigsten rezensierten Artikel nach oben steigen, während jedes Produkt seine eigene Zeile behält.
name,reviews,popularity_rank Wireless Over-Ear Headphones,12840,1 Noise Cancelling Earbuds,9325,2 Bluetooth Sport Headphones,7710,3 Studio Monitor Headphones,4188,4 Budget Wireless Earbuds,3902,5
Die Aggregat-Abfrage kollabiert stattdessen zu einer einzigen Zusammenfassungszeile, der Anzahl, dem Durchschnittspreis und der Preisspanne über die gesamte Tabelle. Da die Daten typisiert und in einer verwalteten Engine indiziert sind, liefern diese Abfragen sofort Ergebnisse und bleiben gleich schnell, wenn die Tabelle von wenigen Zeilen auf einige Hunderttausend wächst.
Anpassung an eigene Quellen
Nichts in der SQL-Hälfte ist spezifisch für Amazon. Um dieselbe Pipeline auf einer anderen Quelle auszuführen, ändern sich drei Dinge, der Rest bleibt.
- Den Scraper austauschen. Zeigen Sie die Scraper API auf ein anderes unterstütztes Ziel, oder rufen Sie rohen HTML über die Crawling API ab und parsen Sie ihn selbst. Die gewünschte Ausgabe ist weiterhin eine flache CSV mit konsistenten Spalten.
-
Das Schema anpassen. Bearbeiten Sie die
CREATE TABLE-Anweisung, damit Spaltennamen und Typen zu Ihren neuen Feldern passen. Behalten Sie alles, das Sie aggregieren oder vergleichen möchten, als numerischen Typ. - Abfragen wiederverwenden. Die Filter-, Aggregat-, Gruppen- und Rank-Muster oben funktionieren für jede Tabelle. Ändern Sie die Spaltennamen, und sie passen zu einem neuen Datensatz.
Für größere Aufträge sammeln Sie Daten mit dem asynchronen Crawler, der Anfragen in die Warteschlange stellt und Ergebnisse an einen Webhook liefert, und importieren Sie dann die Daten in Cloud SQL nach Zeitplan. Wenn Sie eine tiefere Behandlung der Lade-und-Analyse-Hälfte möchten, deckt der Leitfaden zum Speichern und Analysieren gescrapter Daten in SQL Schema-Design und Indizierung ab, und wie man eine skalierbare Web-Datenpipeline aufbaut behandelt, wie man das auf wiederkehrender Basis ausführt.
Verantwortungsvolles Scraping
Das SQL können Sie frei ausführen, aber der Scrape, der es speist, sollte einige Regeln befolgen. Sammeln Sie nur öffentliche Daten, die Produktnamen, Preise, Bewertungen und Rezensionsanzahlen, die jeder Besucher ohne Anmeldung sehen kann, und bleiben Sie bei allem hinter Authentifizierung fern. Respektieren Sie die Nutzungsbedingungen jeder Quelle und deren robots.txt, und halten Sie Ihre Anfragerate vernünftig, damit Sie keine Server belasten. Wenn eine Quelle eine offizielle API veröffentlicht, bevorzugen Sie diese für Bulk- oder kommerzielle Nutzung. Und wenn Ihr Datensatz jemals personenbezogene Daten enthält, behandeln Sie diese unter den entsprechenden Datenschutzregeln wie DSGVO oder CCPA: Aggregieren Sie sie, erstellen Sie keine Profile von Einzelpersonen, und speichern Sie nur das, was Sie benötigen.
Wichtigste Erkenntnisse
-
GoogleSQL ist gewöhnliches SQL auf einer verwalteten Engine. Es ist der Dialekt, den Cloud SQL und BigQuery verwenden, sodass die
SELECT-,GROUP BY- und Fensterabfragen, die Sie bereits kennen, alle anwendbar sind, mit Google, der das Backend betreibt. - Zuerst als saubere CSV scrapen. Die Crawling API gibt geparsten JSON zurück, sodass Sie Felder nach Namen auswählen und eine flache CSV schreiben statt Selektoren zu pflegen.
-
Typen entscheiden über den Erfolg der Abfragen. Die Deklaration von
priceundreviewsals numerisch imCREATE TABLE-Schritt ist das, was es Ihnen ermöglicht, sie später zu mitteln, zu vergleichen und zu ranken. - Die Abfragemuster sind wiederverwendbar. Filter-, Aggregat-, Gruppen- und Rank-Abfragen übertragen sich auf jeden gescrapten Datensatz, indem nur die Spaltennamen geändert werden.
- Anpassen durch Austauschen von drei Dingen. Ändern Sie den Scraper, passen Sie das Tabellenschema an und verwenden Sie die Abfragen wieder, um die gesamte Pipeline auf eine neue Quelle zu richten.
Häufig gestellte Fragen
Was ist der Unterschied zwischen GoogleSQL in Cloud SQL und in BigQuery?
GoogleSQL ist der gemeinsame SQL-Dialekt, aber die zugrunde liegende Engine unterscheidet sich. Cloud SQL führt verwaltete Instanzen von MySQL, PostgreSQL oder SQL Server aus und eignet sich für transaktionale, mittelgroße Datensätze wie eine gescrapte Produkttabelle. BigQuery ist ein serverloses Warehouse, das für sehr große analytische Abfragen gebaut wurde. Die Abfragesyntax in diesem Leitfaden, einschließlich der RANK()-Fensterfunktion, funktioniert in beiden. Beginnen Sie mit Cloud SQL für ein Projekt dieser Größe und wechseln Sie zu BigQuery erst, wenn Ihre Daten eine einzelne Instanz überschreiten.
Muss ich für Google Cloud SQL bezahlen?
Sie müssen die Abrechnung für Ihr Google Cloud-Projekt aktiviert haben, um eine Cloud SQL-Instanz zu erstellen, aber neue Konten erhalten kostenlose Credits, sodass Sie diesen Walkthrough ohne eigene Ausgaben abschließen können. Stoppen oder löschen Sie die Instanz, wenn Sie fertig sind, um laufende Kosten zu vermeiden. Die Crawlbase-Seite enthält bis zu 20.000 kostenlose Anfragen, was mehr als genug für den Scrape in diesem Tutorial ist.
Kann ich diese Methode für andere Quellen als Amazon verwenden?
Ja. Die Pipeline ist nach dem Scraping quellenunabhängig. Zeigen Sie die Scraper API auf ein anderes unterstütztes Ziel, oder rufen Sie eine Seite über die Crawling API ab und parsen Sie sie, dann erstellen Sie eine CSV mit konsistenten Spalten. Aktualisieren Sie das CREATE TABLE-Schema, um Ihre neuen Felder zu entsprechen, und die gleichen Import- und Abfrageschritte gelten unverändert.
Was passiert, wenn sich mein Datenformat später ändert?
Wenn eine Quelle Felder hinzufügt oder Sie beschließen, mehr zu erfassen, fangen Sie nicht von vorne an. Verwenden Sie eine ALTER TABLE-Anweisung, um Spalten zur vorhandenen Tabelle hinzuzufügen, und importieren Sie dann die neuen Zeilen. Ihre vorhandenen Daten bleiben intakt, und jede Abfrage, die nicht auf die neuen Spalten verweist, funktioniert weiterhin genau wie zuvor.
Warum in eine CSV scrapen statt Zeilen direkt einzufügen?
Eine CSV ist das einfachste Austauschformat und Cloud SQL importiert sie nativ, was Scraping und Laden entkoppelt. Sie können die Datei prüfen, sie erneut importieren oder in ein anderes System laden, ohne das Scraping erneut ausführen zu müssen. Für hoch volumige oder kontinuierliche Pipelines würden Sie stattdessen Zeilen programmatisch einfügen, aber für einen periodischen Batch hat der CSV-dann-Import-Weg die wenigsten beweglichen Teile.
Funktionieren diese Abfragen in Standard-SQL-Clients?
Ja. Sobald die Cloud SQL-Instanz läuft, können Sie jeden PostgreSQL-kompatiblen Client verbinden, das integrierte Cloud SQL Studio, psql oder ein Desktop-Tool, und dieselben GoogleSQL-Abfragen ausführen. Die Abfragen in diesem Leitfaden verwenden Standard-SQL-Features, sodass sie portabel über PostgreSQL-Clients sind statt an einen Editor gebunden.
Crawlen Sie jede Website im großen Maßstab, ohne gegen die Infrastruktur zu kämpfen.
Crawlbase übernimmt Proxys, Fingerprints und CAPTCHAs, damit Ihr Team Datenpipelines ausliefert, statt Crawl-Infrastruktur zu pflegen. 1.000 Anfragen kostenlos, keine Karte erforderlich.

