Shein ist einer der größten Fast-Fashion-Händler im Web, mit einem umfangreichen Katalog aus Damen- und Herrenbekleidung, Accessoires und Haushaltswaren, der sich ständig erneuert. Jede Kategorie- und Suchergebnisseite zeigt ein öffentliches Produktraster: ein Titel, ein Preis, eine Sternebewertung und ein Link zur jeweiligen Produktseite, alles sichtbar für jeden Besucher ohne Account. Diese öffentlichen Listingdaten sind es, die Dropshipper, Preisbeobachter und Marktforscher verfolgen, um Angebote zu entdecken, Preise zu beobachten und Trendthemen zu erkennen.
Dieser Leitfaden zeigt, wie man Shein-Listings mit Python scrapt. Es wird ein kleines, lauffähiges Scraper-Skript erstellt, das eine Shein-Kategorie- oder Suchseite über die Crawling API abruft, für jedes Produkt einen sauberen Datensatz parst, die Paginierung abhandelt und die Ergebnisse als JSON und CSV exportiert. Der gesamte Walkthrough bleibt auf öffentliche Listingdaten beschränkt: Produktnamen, Preise, Bewertungen und Links, die jeder auf einer Shein-Listingseite ohne Login einsehen kann.
Was du bauen wirst
Ein Python-Skript, das eine Shein-Kategorie- oder Such-URL nimmt, die gerenderte Seite über die Crawling API abruft und für jedes Produkt im Raster einen strukturierten Datensatz extrahiert. Als laufendes Beispiel dient eine Damenbekleidungs-Kategorieseite. Aus jeder Produktkarte werden folgende Felder gezogen:
- Titel der auf der Listingkarte angezeigte Produktname.
- Preis der aktuelle Verkaufspreis, sofern die Karte einen anzeigt.
- Bewertung die auf der Karte gezeigte durchschnittliche Sternebewertung.
- Link die absolute URL zur eigenen Detailseite des Produkts.
- Bild die Produkt-Bild-URL aus dem Thumbnail der Karte.
Diese Felder entsprechen direkt den im ursprünglichen Walkthrough gesammelten Feldern (Produktname, Preis, Bewertungen und Bild-URLs), reduziert auf das, was ein Listingraster tatsächlich ausgibt. Details wie SKU, vollständige Beschreibung, Farben und Größen befinden sich auf der eigenen Produktseite, die man über das link-Feld erreicht und auf dieselbe Weise parst.
Warum eine einfache Anfrage bei Shein scheitert
Richtet man einen einfachen HTTP-Client auf eine Shein-Kategorie-URL, bekommt man selten das gesuchte Produktraster. Zwei Faktoren spielen dagegen. Erstens rendert Shein seine Listings clientseitig: Der Server liefert eine leichte Hülle, und die Produktkarten werden erst befüllt, wenn das JavaScript der Seite ausgeführt wird und man scrollt. Eine Bibliothek, die nur die erste HTTP-Antwort liest, sieht eine nahezu leere Seite.
Zweitens erkennt Shein automatisierten Traffic. Rechenzentrum-IP-Bereiche und Anfragemuster, die nicht wie ein echter Käufer aussehen, werden mit einer Challenge-Seite, einer regionalen Weiterleitung oder einer vollständigen Blockierung beantwortet, bevor man überhaupt das Raster erreicht. Ein funktionsfähiger Shein-Scraper braucht daher zwei Dinge in einer Anfrage: einen Browser, der die Seite rendert, und eine IP, die Shein als echten Besucher einstuft. Das kann man selbst mit einem Headless-Browser und einem Pool aus rotierenden Residential-Proxys zusammenstellen, aber diesen Stack am Laufen zu halten, ist der Großteil der Arbeit. Die Crawling API bündelt beides in einem einzigen Aufruf: Man sendet ihr die Listing-URL, sie rendert die Seite hinter einer vertrauenswürdigen Residential-IP, übernimmt die Rotation und eventuelle Challenges und liefert fertiges HTML zum Parsen zurück.
Voraussetzungen
Vor dem Schreiben von Code müssen einige Dinge bereitstehen. Keines davon dauert lange.
Python-Grundkenntnisse. Man sollte in der Lage sein, ein Python-Skript zu schreiben, auszuführen und Pakete mit pip zu installieren. Wer neu in der Sprache ist, findet in der offiziellen Python-Dokumentation oder einem Einsteigerkurs das für dieses Tutorial nötige Niveau; unsere Anleitung zur Verwendung von BeautifulSoup in Python erklärt die Parsing-Bibliothek ausführlich.
Python 3.8 oder neuer. Die Version mit python --version (oder python3 --version) prüfen. Falls nicht vorhanden, unter python.org herunterladen und sicherstellen, dass Python im System-PATH enthalten ist.
Ein Crawlbase-Konto und Token. Für ein kostenloses Konto anmelden, das Dashboard öffnen und den Token von der Account-Docs-Seite kopieren. Das kostenlose Kontingent umfasst bis zu 20.000 Anfragen ohne Kreditkarte, was für den Aufbau und Test dieses Scrapers ausreicht. Shein benötigt den JavaScript-Token, da das Listing clientseitig gerendert wird. Den Token wie ein Passwort behandeln und aus der Versionskontrolle heraushalten.
Das Projekt einrichten
Eine virtuelle Umgebung erstellen, damit Projektabhängigkeiten isoliert bleiben, dann die beiden Bibliotheken installieren, die der Scraper benötigt. crawlbase ist der offizielle Client für die Crawling API, und beautifulsoup4 parst das zurückgegebene HTML, damit man jedes Feld aus den Produktkarten per CSS-Selektor extrahieren kann.
python --version python -m venv shein_env source shein_env/bin/activate pip install crawlbase beautifulsoup4
Unter Windows die Umgebung statt mit der source-Zeile mit shein_env\Scripts\activate aktivieren. Sobald beide Bibliotheken installiert sind, die Skriptdatei anlegen, die im weiteren Verlauf aufgebaut wird:
touch shein_listing.py
Die Listingseite verstehen
Ein Shein-Listing ist unter einer Kategorie-URL wie https://www.shein.com/Women-Clothing-c-2030.html oder einer Such-URL wie https://www.shein.com/pdsearch/dress/ erreichbar. Beide zeigen ein Produktkarten-Raster, eine Karte pro Produkt, mit denselben wenigen Feldern: ein Vorschaubild, ein Titel, ein Preis, eine optionale Sternebewertung und ein Link zur Detailseite des Produkts.
Bevor man Selektoren schreibt, sollte man eine Listingseite im Browser öffnen, mit der rechten Maustaste auf eine Produktkarte klicken und "Untersuchen" wählen. Shein umschließt jedes Produkt in einem Abschnitt mit einem class-Attribut, das product-card enthält, hält den Titel in einem Link- oder Namenselement vor, zeigt den Preis in einem dedizierten Preiselement und stellt das Thumbnail und den Produktlink in diesem Container bereit. Das sind die Elemente, die man anvisiert. Sheins genaue Klassennamen ändern sich im Laufe der Zeit; wo möglich, auf partielle Übereinstimmungen wie einen product-card-Teilstring statt auf eine fragile vollständige Klassenverkettung setzen.
Schritt 1: Die gerenderte Listingseite abrufen
Zunächst die fertige Seite abrufen. Die Klasse CrawlingAPI importieren, sie mit dem Token initialisieren, die Listing-URL setzen und sie mit aktiviertem Rendering anfordern. Den Statuscode vor dem Parsen zu prüfen, hält Fehler laut statt still.
from crawlbase import CrawlingAPI api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"}) def crawl(page_url): options = {"ajax_wait": "true", "page_wait": 5000} response = api.get(page_url, options) if response["status_code"] == 200: return response["body"].decode("utf-8", "ignore") print(f"Request failed: {response['status_code']}") return None if __name__ == "__main__": listing_url = "https://www.shein.com/Women-Clothing-c-2030.html" html = crawl(listing_url) print(html[:500] if html else "No HTML returned")
Die beiden Wait-Optionen sind wichtig für ein Raster, das sich erst beim Laden füllt. ajax_wait weist die API an, auf den Abschluss asynchroner Inhalte zu warten, und page_wait hält nach dem Laden eine festgelegte Anzahl von Millisekunden inne, damit spät gerenderte Karten erscheinen, bevor die Seite erfasst wird. Das Skript ausführen, und es sollte echtes Produkt-Markup zu sehen sein, keine nahezu leere Hülle. Damit ist bestätigt, dass das Rendering funktioniert, bevor ein einziger Selektor geschrieben wird.
Das Produktraster erscheint erst, nachdem das JavaScript der Seite ausgeführt wurde, und nur wenn Shein die Anfrage als echten Käufer einstuft. Die Crawling API nimmt den Token, führt die Listingseite in einem echten Browser aus, rotiert serverseitig durch Residential-IPs und übernimmt eventuelle Challenges, und übergibt dann fertiges HTML. Man überspringt den Betrieb einer Headless-Browser-Flotte und eines Proxy-Pools. Zunächst im kostenlosen Kontingent von bis zu 20.000 Anfragen mit einer Kategorie- oder Such-URL testen.
Schritt 2: Produktkarten mit BeautifulSoup parsen
Mit dem gerenderten HTML lädt man es in BeautifulSoup, findet alle Produktkarten und zieht jedes Feld per Selektor heraus. Shein umschließt jedes Produkt in einem Karten-Container, der als Selektor dient, hält den Titel in einem Namens-Link vor, zeigt den Preis in einem Preiselement und stellt das Thumbnail-Bild und den Produktlink im Container bereit. Jede Karte in ein try/except einwickeln, damit eine fehlerhafte Listing nicht den gesamten Lauf zum Absturz bringt.
from bs4 import BeautifulSoup BASE = "https://www.shein.com" def text_of(card, selector): el = card.select_one(selector) return el.get_text(strip=True) if el else None def absolute(href): if not href: return None if href.startswith("//"): return "https:" + href return href if href.startswith("http") else BASE + href def parse_link(card): a = card.select_one("a[href]") return absolute(a["href"]) if a else None def parse_image(card): img = card.select_one("img") if not img: return None src = img.get("src") or img.get("data-src") return absolute(src) def scrape_listing(html): soup = BeautifulSoup(html, "html.parser") cards = soup.select("section[class*='product-card']") results = [] for card in cards: try: title = text_of(card, "a.goods-title-link") if not title: continue results.append({ "title": title, "price": text_of(card, "span.product-card__price"), "rating": text_of(card, "span.rate-num"), "link": parse_link(card), "image": parse_image(card), }) except Exception as e: print(f"Skipped a card: {e}") return results
Der Helfer text_of fragt ein Element innerhalb einer Karte ab und gibt None zurück, wenn es fehlt, statt bei einem .get_text()-Aufruf auf nichts eine Ausnahme zu werfen. Das hält die Extraktion robust, wenn ein Feld fehlt, was häufig vorkommt, da nicht jedes Produkt eine Bewertung zeigt. Der Helfer absolute normalisiert Links und Bildquellen zu vollständigen URLs, da Shein oft eine protokollrelative //-Quelle oder einen relativen href ausliefert. Karten ohne Titel zu überspringen, entfernt die leeren Platzhalter-Slots, die Shein im Raster lässt.
Sheins Klassennamen (der Karten-Container, das Preis-Span, das Bewertungselement) verschieben sich mit Site-Updates, während strukturelle Muster wie ein product-card-Teilstring und ein innerer Anker langlebiger sind. Die klassenbasierten Selektoren oben als Ausgangspunkt betrachten, nicht als Vertrag. Wenn ein Feld für jede Karte als None zurückkommt, die Live-Listingseite in den Browser-DevTools erneut untersuchen und den Selektor aktualisieren. Periodische Selektor-Wartung ist bei jedem produktiven Scraper normal.
Schritt 3: Das Skript zusammensetzen und JSON und CSV exportieren
Jetzt das Abrufen und Parsen in ein lauffähiges Skript einbinden und die Datensätze in JSON und CSV schreiben, damit sie in ein Notebook oder eine Tabellenkalkulation geladen werden können. Die gerenderte Listingseite abrufen, an den Parser übergeben und die strukturierten Zeilen ausgeben.
import csv import json from crawlbase import CrawlingAPI from bs4 import BeautifulSoup api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"}) BASE = "https://www.shein.com" FIELDS = ["title", "price", "rating", "link", "image"] def crawl(page_url): options = {"ajax_wait": "true", "page_wait": 5000} response = api.get(page_url, options) if response["status_code"] == 200: return response["body"].decode("utf-8", "ignore") print(f"Request failed: {response['status_code']}") return None def text_of(card, selector): el = card.select_one(selector) return el.get_text(strip=True) if el else None def absolute(href): if not href: return None if href.startswith("//"): return "https:" + href return href if href.startswith("http") else BASE + href def parse_link(card): a = card.select_one("a[href]") return absolute(a["href"]) if a else None def parse_image(card): img = card.select_one("img") if not img: return None src = img.get("src") or img.get("data-src") return absolute(src) def scrape_listing(html): soup = BeautifulSoup(html, "html.parser") cards = soup.select("section[class*='product-card']") results = [] for card in cards: try: title = text_of(card, "a.goods-title-link") if not title: continue results.append({ "title": title, "price": text_of(card, "span.product-card__price"), "rating": text_of(card, "span.rate-num"), "link": parse_link(card), "image": parse_image(card), }) except Exception as e: print(f"Skipped a card: {e}") return results def export(rows, name="shein_listing"): with open(f"{name}.json", "w", encoding="utf-8") as f: json.dump(rows, f, indent=2, ensure_ascii=False) with open(f"{name}.csv", "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=FIELDS) writer.writeheader() writer.writerows(rows) print(f"Saved {len(rows)} products to {name}.json and {name}.csv") def main(): url = "https://www.shein.com/Women-Clothing-c-2030.html" html = crawl(url) if not html: return rows = scrape_listing(html) export(rows) if __name__ == "__main__": main()
Das vollständige Skript mit python shein_listing.py ausführen. Es ruft die gerenderte Listingseite ab, parst eine Zeile pro Produkt und schreibt sowohl shein_listing.json als auch shein_listing.csv. Die gemeinsame FIELDS-Liste hält die CSV-Spaltenreihenfolge synchron mit den Dictionary-Keys, damit die beiden Exporte nie auseinanderlaufen.
Wie die Ausgabe aussieht
Man erhält eine saubere Liste von Produktdatensätzen, in Reihenfolge des Rasters, bereit zum Schreiben in JSON, CSV oder eine Datenbank.
[ { "title": "Women's Ribbed Knit Long Sleeve Bodycon Dress", "price": "$12.49", "rating": "4.92", "link": "https://www.shein.com/Ribbed-Knit-Bodycon-Dress-p-12345678.html", "image": "https://img.ltwebstatic.com/images/ribbed-dress.jpg" }, { "title": "Floral Print Tie Front Blouse", "price": "$9.00", "rating": "4.78", "link": "https://www.shein.com/Floral-Print-Blouse-p-87654321.html", "image": "https://img.ltwebstatic.com/images/floral-blouse.jpg" } ]
Über mehrere Seiten und Kategorien skalieren
Eine Seite ist eine Demo; ein echter Recherchejob läuft über die gesamte Kategorie. Shein paginiert seine Listings mit einem ?page=-Query-Parameter, also werden die Seiten der Reihe nach durchlaufen, bis eine Seite leer zurückkommt, dann geht es mit der nächsten Kategorie weiter. Die Anfragen so verteilen, dass Shein nicht in einer engen Schleife bombardiert wird.
import time CATEGORIES = { "women-clothing": "https://www.shein.com/Women-Clothing-c-2030.html", "dresses": "https://www.shein.com/Dresses-c-1727.html", } def scrape_categories(categories, max_pages=5): everything = {} for name, base_url in categories.items(): rows = [] for page in range(1, max_pages + 1): sep = "&" if "?" in base_url else "?" page_url = f"{base_url}{sep}page={page}" html = crawl(page_url) if not html: break found = scrape_listing(html) if not found: break rows.extend(found) print(f"{name} page {page}: {len(found)} products") time.sleep(2) everything[name] = rows return everything
Der Leer-Ergebnis-Break stoppt den Lauf frühzeitig, wenn einer Kategorie die Produkte ausgehen. Die max_pages-Begrenzung hält einen Lauf in Grenzen, und das time.sleep(2) zwischen Anfragen verteilt den Lauf, damit kein Rapid-Fire-Traffic ausgelöst wird. Die Ausgabe nach Kategorienamen zu schlüsseln, hält jede Liste separat, was gewünscht ist, wenn Preise über Kategorien hinweg verglichen werden. Um Preisänderungen im Laufe der Zeit zu verfolgen, den Job nach einem Zeitplan ausführen, jeden Export mit dem Datum stempeln und aufeinanderfolgende Snapshots vergleichen. Das führt direkt in einen Preisanalyse-Workflow, bei dem die hier gesammelten Listing-Felder das Rohmaterial liefern.
Entsperrt bleiben
Selbst mit übernommenem Rendering beobachtet Shein Scraper-artigen Traffic. Einige Gewohnheiten halten einen Lauf gesund, und sie gelten für jedes schwierige kommerzielle Ziel.
- Anfragen verteilen. Anfragen mit einer Verzögerung zwischen Seiten und Kategorien aufteilen, statt alles mit voller Geschwindigkeit zu crawlen. Schwerere Jobs außerhalb der Stoßzeiten einplanen, um Sheins Server zu entlasten.
- Auf Rotation setzen. Ein Pool aus Residential-IPs verteilt Anfragen über viele echte Nutzeradressen, damit keine einzelne ein Rate-Limit auslöst. Die Crawling API übernimmt das; wer seinen eigenen Stack aufbaut, sollte hier besonders sorgfältig vorgehen.
- Nur das Nötige behalten. Die Listing-Felder speichern, die das Projekt benötigt, und den Rest verwerfen. Die Selektoren regelmäßig überprüfen, damit der Scraper mit Markup-Änderungen Schritt hält.
Das umfassendere Playbook zum Umgehen von Blockierungen findet sich unter wie man Websites scrapt, ohne blockiert zu werden, und zur Frage, warum Rendering hier wichtig ist, unter wie man JavaScript-Websites crawlt. Den breiteren Kontext des Extrahierens strukturierter Produktdaten aus Online-Shops deckt unsere Übersicht zum E-Commerce-Web-Scraping ab.
Ist es legal, Shein zu scrapen?
Ob das Scrapen von Shein erlaubt ist, hängt von Sheins Nutzungsbedingungen, der jeweiligen Rechtsordnung und dem Verwendungszweck der Daten ab. Sheins Bedingungen schränken automatisierten Zugriff ein, daher kann Scraping gegen diese Bedingungen verstoßen, unabhängig davon, wie sorgfältig das Tooling ist. Keiner der Codes hier ändert das; er lässt nur den technischen Teil funktionieren. Die Shein-Nutzungsbedingungen und die robots.txt lesen und beide als Grenze für das Sammeln behandeln. Bei kommerzieller oder wettbewerbsorientierter Nutzung wird die rechtliche Lage komplexer; die Konsultation eines Rechtsexperten zum konkreten Fall ist die vernünftige Vorgehensweise.
Einige Grenzen sind es wert, einzuhalten. Nur öffentliche Daten sammeln: die Produkttitel, Preise, Bewertungen, Listing-Links und Thumbnail-Bilder, die jeder auf einer Shein-Listingseite ohne Account sehen kann. Das Anfragevolumen niedrig genug halten, damit Sheins Server nicht belastet werden, und personenbezogene Daten meiden, einschließlich allem, was mit identifizierbaren Käufern oder Rezensenten verknüpft ist, über das hinaus, was öffentlich gelistet ist. Sheins Produktfotografie nicht als eigene weiterverbreiten; eine Bild-URL ist eine Referenz, keine Lizenz zur Weiterveröffentlichung der Medien. Wer die Daten kommerziell nutzen möchte, sollte Genehmigung oder eine offizielle Vereinbarung einholen, statt Schweigen als Zustimmung zu werten.
Dieser Leitfaden ist bewusst auf öffentliche Kategorie- und Suchlisting-Seiten beschränkt, da das die Grenze ist, die die Arbeit verteidigbar macht. Er deckt nichts hinter einem Login, konto- oder bestellbezogene Daten, personenbezogene Informationen oder Versuche, Authentifizierung oder eine Challenge zu umgehen, zu der man nicht berechtigt ist, ab. Wenn Shein ein Affiliate- oder Partner-Datenprogramm anbietet, das zum Anwendungsfall passt, ist das das richtige Tool für große Volumen, garantierte Struktur oder kommerzielle Rechte. Wenn ein Projekt mehr als öffentliche Listingdaten benötigt, ist ein offizieller Kanal oder eine Datenvereinbarung der richtige Weg, kein clevererer Scraper.
Wichtigste Erkenntnisse
- Listings sind öffentliche Produktsignale. Jede Shein-Kategorie- und Suchseite zeigt Titel, Preise, Bewertungen und Links, weshalb sie für Preisverfolgung und Produktrecherche so nützlich ist.
- Rendering und eine vertrauenswürdige IP werden zusammen benötigt. Shein füllt das Produktraster clientseitig und blockiert Bot-Traffic; die Crawling API rendert die Seite hinter einer Residential-IP in einem Aufruf.
-
BeautifulSoup übernimmt die Extraktion. Die
product-card-Container durchlaufen und Titel, Preis, Bewertung, Link und Bild auf aktuelle Selektoren abbilden, wobei damit zu rechnen ist, dass diese Selektoren sich verschieben. -
In JSON und CSV exportieren. Eine gemeinsame Feldliste hält beide Dateien synchron, und das Paginieren mit
?page=bis eine Seite leer ist, skaliert den Lauf über eine ganze Kategorie. - Bei öffentlichen Daten bleiben. Sheins Nutzungsbedingungen und robots.txt respektieren, Produktbilder nicht weiterveröffentlichen und niemals Konten, Bestellungen oder personenbezogene Informationen berühren.
Häufig gestellte Fragen
Warum liefert eine einfache Anfrage keine Produkte von Shein?
Shein rendert seine Listings clientseitig, daher liefert eine reine HTTP-Anfrage eine nahezu leere Hülle ohne Produktkarten. Zusätzlich dazu schlägt oder blockiert Shein Traffic, der nicht wie ein echter Browser aussieht. Das Rendern der Seite über die Crawling API hinter einer vertrauenswürdigen IP löst beides, weshalb der Scraper hier seine Anfragen darüber leitet statt die URL direkt abzurufen.
Wie scrapt man eine bestimmte Shein-Kategorie oder Suche?
Den Scraper auf die Kategorie-URL richten, beispielsweise /Women-Clothing-c-2030.html, oder auf eine Such-URL wie /pdsearch/dress/. Beide rendern dasselbe Produktkarten-Raster, daher gelten die gleichen Selektoren. Um mehrere Kategorien abzudecken, eine Zuordnung von Namen zu URLs anlegen und darüber iterieren, wobei Anfragen mit einer kurzen Verzögerung zwischen Seiten verteilt werden.
Kann man SKU, Farben und Größen für jedes Produkt abrufen?
Diese Felder befinden sich auf der eigenen Detailseite jedes Produkts, nicht im Listing-Raster. Zuerst das link-Feld aus dem Listing sammeln, dann jede Produktseite über dieselbe crawl-Funktion abrufen und SKU, vollständige Beschreibung, Farboptionen und Größenangaben von dieser Seite parsen. Die Legacy-Felder entsprechen einem zweistufigen Scraping: das Listing zur Entdeckung, die Detailseite für die Tiefe.
Wie handhabt man die Paginierung bei Shein?
Shein paginiert Listings mit einem ?page=-Query-Parameter. Die Seiten der Reihe nach durchlaufen, stoppen, wenn eine Seite keine Produkte zurückliefert, und die Schleife mit einer maximalen Seitenanzahl begrenzen, damit ein Lauf begrenzt bleibt. Der obige scrape_categories-Helfer tut genau das, und das Verteilen jeder Anfrage mit einem kurzen Sleep hält den Lauf davon ab, wie Rapid-Fire-Traffic auszusehen.
Soll man in JSON oder CSV exportieren?
In beide, und das Skript schreibt beide aus denselben Datensätzen. JSON behält die verschachtelte Struktur und lässt sich leicht wieder in Python laden, während CSV direkt in einer Tabellenkalkulation zum schnellen Filtern und Erstellen von Diagrammen geöffnet werden kann. Die gemeinsame FIELDS-Liste hält die CSV-Spalten in derselben Reihenfolge wie die Dictionary-Keys, damit die beiden Dateien nie auseinanderlaufen.
Wie vermeidet man Blockierungen beim Scrapen von Shein?
Die Anfragerate pro IP niedrig halten, eine Verzögerung zwischen Seiten und Kategorien einbauen und über rotierende Residential-IPs leiten, damit keine einzelne Adresse ein Rate-Limit auslöst. Die Crawling API verwaltet Rotation, einen vertrauenswürdigen IP-Pool und die Bearbeitung von Challenges; wer seinen eigenen Stack aufbaut, sollte dort investieren. Die Statuscodes beobachten und zurückrudern, wenn Challenges auftreten.
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.
