TikTok ist eine der größten Quellen öffentlicher Kurzvideos im Web, und die Trends, Hashtags und Engagement-Zahlen, die es bietet, sind für Marktforschung, Content-Strategie und Trend-Tracking genuinen Wert. Es ist auch eine der schwieriger programmatisch zu lesenden Oberflächen: Seiten rendern clientseitig mit JavaScript, die Plattform fordert automatisierten Datenverkehr heraus, und eine einfache HTTP-Anfrage an eine Such- oder Profil-URL gibt normalerweise eine nahezu leere Hülle ohne die Daten zurück, die Sie in einem Browser sehen können.

Diese Anleitung zeigt Ihnen, wie Sie öffentliche TikTok-Daten mit Python scrapen, auf eine Weise, die tatsächlich funktioniert und dabei strikt innerhalb dessen bleibt, was öffentlich und aggregiert ist. Alles hier ist auf öffentliche Suchergebnisse, öffentliche Hashtag-Feeds und öffentliche Profilvideos beschränkt: Untertitel, Like-, Kommentar- und Share-Zählungen, Video-URLs und Veröffentlichungsdaten. Es deckt nichts hinter einem Login, private Accounts oder personenbezogene Daten einzelner Personen ab. Lesen Sie den Abschnitt zur Rechtslage am Ende, bevor Sie dies auf etwas Echtes anwenden, und bevorzugen Sie für den Produktionseinsatz TikToks offizielle API.

Was Sie bauen werden

Ein kleines Python-Skript, das eine öffentliche TikTok-Such- oder Hashtag-URL entgegennimmt, die vollständig gerenderte Seite über die Crawling API mit einem JavaScript-Token abruft und eine Handvoll öffentlicher, aggregierter Felder von jeder Videokarte parst:

  • Untertitel der auf der Videokarte angezeigte öffentliche Text.
  • Like-, Kommentar- und Share-Zählungen die aggregierten Engagement-Zahlen, die eine Karte anzeigt, nicht die dahinterstehenden Personen.
  • Video-URL der öffentliche Permalink zu jedem Video.
  • Veröffentlichungsdatum das auf der Karte angezeigte Upload-Datum.
  • Hashtags die an jedes Video angehängten öffentlichen Tags.

Beachten Sie, was bewusst fehlt: keine Followerlisten, keine Kommentator-Identitäten, keine Inhalte privater Accounts, keine Kontaktdaten. Das sind personenbezogene Daten von Einzelpersonen, und deren Erhebung liegt hier bewusst außerhalb des Geltungsbereichs. Wir behandeln Benutzernamen als beiläufigen Kontext für ein öffentliches Video, nicht als ein anzureicherndes Profil.

Warum eine einfache Anfrage bei TikTok scheitert

Fordern Sie eine TikTok-Such- oder Hashtag-URL mit einem einfachen HTTP-Client an und Sie erhalten eine technisch erfolgreiche und praktisch nutzlose Antwort. Der Body ist eine JavaScript-Hülle: der echte Inhalt, die Videokarten, Untertitel und Zählungen, erscheint erst, nachdem die Skripte der Seite in einem Browser ausgeführt und Daten von internen Endpunkten abgerufen werden. Zudem kennzeichnet TikTok automatisierten Datenverkehr schnell. Datacenter-IP-Bereiche, fehlendes Browser-Verhalten und repetitive Anfragemuster werden herausgefordert oder ratenlimitiert, bevor interessante Inhalte jemals geladen werden.

Ein funktionierender TikTok-Scraper benötigt also zwei Dinge in derselben Anfrage: einen echten Browser, der die Seite rendert, und eine IP-Adresse, die die Plattform als gewöhnlichen Besucher liest. Sie können das selbst mit einem Headless-Browser und einem Pool rotierender Residential-Proxys aufbauen, aber diesen Stack gesund zu halten ist der Großteil der Arbeit. Die Crawling API fasst beides in einem einzigen Aufruf zusammen. Sie senden eine URL mit einem JavaScript-Token, sie rendert die Seite hinter einer vertrauenswürdigen Residential-IP und gibt fertiges HTML zurück, das Sie parsen können. Den tieferen Hintergrund finden Sie in unserem Leitfaden zu JavaScript-Websites crawlen.

Why the JS token

Crawlbase bietet zwei Token-Typen an. Das normale Token ruft statisches HTML ab; das JavaScript-Token (JS-Token) rendert die Seite zuerst in einem echten Browser. TikTok ist clientseitig gerendert, daher benötigen Sie hier das JS-Token. Das normale Token gibt dieselbe Hülle wie ein einfacher Abruf zurück, ohne etwas Nützliches zum Parsen.

Voraussetzungen

Zunächst ein paar Dinge zu erledigen. Keines davon dauert lange.

Grundlegende Python-Kenntnisse. Sie sollten in der Lage sein, ein Skript auszuführen und Pakete mit pip zu installieren. Wenn Sie neu beim Parsen von HTML sind, deckt unser Primer zu BeautifulSoup in Python verwenden die Extraktionsseite ab.

Python 3.8 oder höher. Überprüfen Sie mit python --version und pip --version. Falls nicht vorhanden, installieren Sie es von python.org.

Ein Crawlbase-Konto und JS-Token. Registrieren Sie sich, öffnen Sie Ihr Dashboard und kopieren Sie Ihr JavaScript-Token (JS-Token). Sie erhalten bis zu 20.000 kostenlose Anfragen, keine Kreditkarte erforderlich. Behandeln Sie das Token wie ein Passwort: Es authentifiziert Ihre Anfragen, also halten Sie es aus der Versionskontrolle heraus.

Das Projekt einrichten

Erstellen Sie eine isolierte virtuelle Umgebung und installieren Sie dann die Bibliotheken, die der Scraper benötigt.

bash
python --version

python -m venv tiktok_env
source tiktok_env/bin/activate

pip install crawlbase beautifulsoup4

Unter Windows aktivieren Sie mit tiktok_env\Scripts\activate statt der source-Zeile. Zwei Abhängigkeiten erledigen die Arbeit: crawlbase ist der offizielle Client für die Crawling API, und beautifulsoup4 parst das zurückgegebene HTML, damit Sie einzelne Felder per Selektor extrahieren können.

Schritt 1: Die gerenderte Seite abrufen

Beginnen Sie damit, die fertige Seite zu laden. Importieren Sie CrawlingAPI, initialisieren Sie es mit Ihrem JS-Token und fordern Sie eine öffentliche Such- oder Hashtag-URL an. TikTok lädt Inhalte asynchron, also übergeben Sie ajax_wait und page_wait, damit die Seite sich setzen kann, bevor sie erfasst wird. Überprüfen Sie den Status vor dem Parsen, damit Fehler laut statt stumm bleiben.

python
from crawlbase import CrawlingAPI
import urllib.parse

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

options = {
    "ajax_wait": "true",
    "page_wait": 10000,
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
}

def crawl(page_url):
    response = api.get(page_url, options)
    if response["headers"]["cb_status"] == "200":
        return response["body"].decode("utf-8")
    print(f"Request failed. Crawlbase status: {response['headers']['cb_status']}")
    return None

if __name__ == "__main__":
    query = urllib.parse.quote("cooking recipes")
    url = f"https://www.tiktok.com/search/video?q={query}"
    html = crawl(url)
    print(html[:500] if html else "No HTML returned")

Die Warteoptionen sind für ein clientseitig gerendertes Ziel wichtig. ajax_wait weist die API an, auf asynchrone Inhalte zu warten, bis sie fertig geladen sind, und page_wait hält für eine feste Anzahl von Millisekunden nach dem Laden, damit spät rendernde Karten vor der Erfassung erscheinen. Zehn Sekunden sind ein vernünftiger Ausgangspunkt für TikTok; erhöhen Sie es, wenn Karten leer zurückkommen. Das Beispiel fragt ein Thema ab (Kochrezepte), genau weil es unpersönlich und öffentlich ist. Führen Sie das Skript aus und Sie sollten echtes Seiten-Markup sehen, was bestätigt, dass das Rendering funktioniert, bevor Sie einen einzigen Selektor schreiben.

Crawlbase Crawling API

TikTok benötigt eine gerenderte Seite hinter einer vertrauenswürdigen IP, in einem einzigen Aufruf. Die Crawling API nimmt ein JS-Token, führt die Seite in einem echten Browser aus, damit ajax_wait und page_wait etwas haben, worauf sie warten können, rotiert serverseitig durch Residential-IPs und gibt Ihnen fertiges HTML, sodass Sie kein eigenes Headless-Browser-Fleet und keinen Proxy-Pool betreiben müssen. Richten Sie es zunächst auf eine öffentliche Suchanfrage im kostenlosen Tarif.

Schritt 2: Die Videokarten in der Suchliste finden

Mit dem gerenderten HTML in der Hand laden Sie es in BeautifulSoup und lokalisieren die Suchliste, den Container, der jedes Ergebnis auf der Seite enthält. TikTok markiert Schlüsselelemente mit data-e2e-Attributen, die weitaus stabiler sind als seine tief verschachtelten, häufig umbenannten CSS-Klassen. Die Suchergebnisse befinden sich unter div[data-e2e='search_video-item-list'], und jedes direkte Kind ist eine Videokarte.

python
from bs4 import BeautifulSoup

def find_video_cards(html):
    soup = BeautifulSoup(html, "html.parser")
    return soup.select("div[data-e2e='search_video-item-list'] > div")

Das gibt eine Liste von Kartenelementen zurück. Jede Karte ist eigenständig: Der Untertitel, die Engagement-Zählungen, der Video-Link, das Veröffentlichungsdatum und die Hashtags befinden sich alle darin, sodass das restliche Parsen auf einer Karte gleichzeitig arbeitet.

Schritt 3: Die öffentlichen Videofelder parsen

Von jeder Karte werden die öffentlichen, aggregierten Felder extrahiert. Der Untertitel befindet sich unter data-e2e='search-card-video-caption', der Video-Link unter data-e2e='search_video-item', das Veröffentlichungsdatum in einem Element, dessen Klasse DivTimeTag enthält, und die Engagement-Zählung unter data-e2e='search-card-like-container'. Jeder Selektor unten ist so eingebettet, dass ein fehlendes Element None zurückgibt statt den Lauf zum Absturz zu bringen, da TikTok nicht jedes Feld auf jeder Karte rendert.

python
def text_of(card, selector):
    el = card.select_one(selector)
    return el.text.strip() if el else None

def scrape_video_details(card):
    link = card.select_one("div[data-e2e='search_video-item'] a")
    return {
        "caption": text_of(card, "div[data-e2e='search-card-video-caption'] > div > span"),
        "video_url": link["href"].strip() if link and link.has_attr("href") else None,
        "posted_date": text_of(card, "div[class*='DivTimeTag']"),
        "like_count": text_of(card, "div[data-e2e='search-card-like-container'] > strong"),
    }

Das zieht nur aggregierte, nicht-persönliche Felder: den Untertiteltext, die öffentliche Video-URL, das Veröffentlichungsdatum und die öffentliche Like-Zählung. Like-, Kommentar- und Share-Zählungen sind Zahlen; die dahinterstehenden Personen gehören nicht Ihnen zur Ernte. Wir lesen keine individuellen Kommentare oder wer das Video geliked hat, und diese Zurückhaltung ist das, was die Arbeit vertretbar macht.

Selectors drift

TikTok ändert sein Markup ohne Ankündigung, weshalb dieser Code auf data-e2e-Attribute statt auf spröde verschachtelte Klassen setzt. Wenn ein Feld als None zurückkommt, inspizieren Sie die Live-Seite in den Dev Tools Ihres Browsers und aktualisieren Sie den Selektor. Periodische Wartung ist bei jedem Produktions-Scraper normal, kein Zeichen dafür, dass etwas kaputt ist.

Schritt 4: Die Hashtags parsen

Hashtags sind öffentliche Tags, die das Thema eines Videos beschreiben, was sie zum nützlichsten aggregierten Signal auf der Seite für Trend-Arbeit macht. Sie befinden sich in ihren eigenen Ankern unter data-e2e='search-common-link'. Sammeln Sie sie in eine Liste pro Karte.

python
def scrape_hashtags(card):
    tags = card.select("a[data-e2e='search-common-link'] > strong")
    return {"hashtags": [t.text.strip() for t in tags]}

Das Aggregieren von Hashtags über eine Suche oder einen Hashtag-Feed hinweg gibt Ihnen eine Themenverteilung, ohne eine einzige identifizierbare Einzelperson zu berühren. Das ist die Art von Analyse, für die dieser Ansatz gedacht ist: Zählungen, Trends und Ko-Vorkommen statt Profile.

Schritt 5: Alles zusammensetzen

Verbinden Sie nun Abrufen und Parsen in einem lauffähigen Skript. Es ruft eine öffentliche Suchseite ab, geht jede Videokarte durch, fügt die Videofelder mit den Hashtags zusammen und gibt eine saubere JSON-Liste aus.

python
from crawlbase import CrawlingAPI
from bs4 import BeautifulSoup
import urllib.parse
import json

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

options = {
    "ajax_wait": "true",
    "page_wait": 10000,
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
}

def crawl(page_url):
    response = api.get(page_url, options)
    if response["headers"]["cb_status"] == "200":
        return response["body"].decode("utf-8")
    print(f"Request failed. Crawlbase status: {response['headers']['cb_status']}")
    return None

def text_of(card, selector):
    el = card.select_one(selector)
    return el.text.strip() if el else None

def scrape_video_details(card):
    link = card.select_one("div[data-e2e='search_video-item'] a")
    return {
        "caption": text_of(card, "div[data-e2e='search-card-video-caption'] > div > span"),
        "video_url": link["href"].strip() if link and link.has_attr("href") else None,
        "posted_date": text_of(card, "div[class*='DivTimeTag']"),
        "like_count": text_of(card, "div[data-e2e='search-card-like-container'] > strong"),
    }

def scrape_hashtags(card):
    tags = card.select("a[data-e2e='search-common-link'] > strong")
    return {"hashtags": [t.text.strip() for t in tags]}

def scrape_search(url):
    html = crawl(url)
    if not html:
        return []
    soup = BeautifulSoup(html, "html.parser")
    cards = soup.select("div[data-e2e='search_video-item-list'] > div")

    results = []
    for card in cards:
        video = scrape_video_details(card)
        video.update(scrape_hashtags(card))
        results.append(video)
    return results

def main():
    query = urllib.parse.quote("cooking recipes")
    url = f"https://www.tiktok.com/search/video?q={query}"
    results = scrape_search(url)
    print(json.dumps(results, indent=2, ensure_ascii=False))

if __name__ == "__main__":
    main()

Dasselbe Skript funktioniert für einen öffentlichen Hashtag-Feed: Tauschen Sie die Such-URL gegen eine Hashtag-URL wie https://www.tiktok.com/tag/cooking aus und passen Sie den Kartenselektor an, falls sich die Seitenstruktur unterscheidet. Die Form der Ausgabe bleibt dieselbe, was der Sinn davon ist, das Parsen auf eine Karte gleichzeitig zu beschränken.

Wie die Ausgabe aussieht

Führen Sie das vollständige Skript aus und Sie erhalten einen sauberen Datensatz öffentlicher Felder pro Video, bereit zum Schreiben in JSON, CSV oder eine Datenbank.

json
[
  {
    "caption": "Crispy potato snacks recipe",
    "video_url": "https://www.tiktok.com/@artofcooking.example/video/7344763014572182789",
    "posted_date": "3-10",
    "like_count": "8.7M",
    "hashtags": ["#potatosnacks", "#snacks", "#foryou", "#fyp"]
  },
  {
    "caption": "Crispy potato bread rolls",
    "video_url": "https://www.tiktok.com/@recipesoftheworld.example/video/7155082128521186587",
    "posted_date": "2022-10-16",
    "like_count": "6.6M",
    "hashtags": ["#breadroll", "#snacks", "#foodie", "#streetfood"]
  }
]

Die Zählungen kommen als Anzeigezeichenfolgen wie 8.7M statt als rohe Ganzzahlen an, weil das das ist, was TikTok rendert. Wenn Sie sie als Zahlen für die Aggregation benötigen, normalisieren Sie sie in einem kleinen Nachbearbeitungsschritt (erweitern Sie die K- und M-Suffixe), bevor Sie sie speichern.

Paginierung behandeln

TikTok verwendet scroll-basierte Paginierung: Neue Karten laden, wenn der Benutzer nach unten scrollt, nicht auf nummerierten Seiten. Die Crawling API kann dieses Scrollen für Sie simulieren. Setzen Sie scroll auf true und optional scroll_interval, um zu steuern, wie lange sie zwischen den Scrolls wartet (in Millisekunden). Das lädt mehr Karten in das HTML, bevor es zurückgegeben wird, sodass eine einzelne Anfrage ein tieferes Ergebnisset liefert.

python
options = {
    "ajax_wait": "true",
    "page_wait": 10000,
    "scroll": "true",
    "scroll_interval": 10000,
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
}

Halten Sie scroll_interval großzügig. Aggressives Scrollen auf einem stark verteidigten Ziel ist der schnellste Weg, ein Ratenlimit auszulösen. Ziehen Sie eine vernünftige Stichprobe und hören Sie auf, anstatt zu versuchen, einen gesamten Feed in einem Lauf zu scrollen.

In CSV speichern

Sobald Sie die Datensätze haben, macht das Schreiben in CSV das Laden in ein Tabellenkalkulationsprogramm oder ein Notebook für aggregierte Analysen einfach. Glätten Sie die Hashtag-Liste in eine einzelne durch Trennzeichen getrennte Zeichenfolge, damit jede Zeile eine Zeile bleibt.

python
import csv

def save_to_csv(rows, filename):
    fieldnames = ["caption", "video_url", "posted_date", "like_count", "hashtags"]
    with open(filename, "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        for row in rows:
            row = {**row, "hashtags": " ".join(row.get("hashtags", []))}
            writer.writerow(row)

Rufen Sie save_to_csv(results, "tiktok_data.csv") mit der Liste aus dem Hauptskript auf. Sie haben jetzt eine ordentliche Tabelle öffentlicher Video-Metadaten, die Sie auf Trends analysieren können, ohne persönliche Daten zu speichern.

Unblockiert bleiben

Auch bei durch die Crawling API gehandhabtem Rendering beobachtet TikTok scraper-ähnlichen Datenverkehr. Einige Gewohnheiten halten einen Lauf gesund, und sie gelten für jedes schwere, gut verteidigte Ziel.

  • Dosieren Sie Ihre Anfragen. Seiten in einer engen Schleife zu hämmern ist der schnellste Weg zur Drosselung. Fügen Sie echte Verzögerungen zwischen Anfragen hinzu und widerstehen Sie dem Drang, aggressiv zu parallelisieren.
  • Setzen Sie auf Rotation. Ein Pool von Residential-IPs verteilt Anfragen über viele echte Nutzeradressen, sodass keine einzelne ein Ratenlimit auslöst. Die Crawling API übernimmt das für Sie; wenn Sie Ihren eigenen Stack aufbauen, ist das der Teil, den Sie richtig machen müssen.
  • Lesen Sie die Statuscodes. Ein Lauf, der anfängt, Herausforderungen oder Fehler zurückzugeben, signalisiert Ihnen, dass die aktuelle Rate oder IP-Stufe nicht mehr ausreicht. Weichen Sie zurück, anstatt härter zu drücken.
  • Halten Sie Volumen niedrig und Ziele variiert. Aggregierte Trend-Recherche erfordert nicht das Crawlen der gesamten Geschichte eines Hashtags. Stichproben Sie, was Sie benötigen, und hören Sie auf.

Das umfassendere Playbook finden Sie unter Websites scrapen ohne blockiert zu werden. Wenn Sie nur öffentlichen Engagement-Text statt Video-Metadaten möchten, deckt unser Leitfaden zu TikTok-Kommentare scrapen diese Oberfläche ab, und wenn Sie lieber ein fertiges Tool auswählen möchten, vergleicht unsere Zusammenstellung der besten TikTok-Scraper die Optionen.

Das ist der Abschnitt, den Sie lesen sollten, bevor Sie Produktionscode schreiben. TikToks Nutzungsbedingungen schränken automatisierten Zugriff und Datenerhebung ein, und Scraping kann unabhängig davon, wie sorgfältig Ihr Tooling ist, gegen diese Bedingungen verstoßen. Keiner der obigen Codes ändert das; er macht nur den technischen Teil funktionieren. Lesen Sie TikToks Nutzungsbedingungen und dessen robots.txt, respektieren Sie die Ratenlimits, die diese Signale implizieren, und behandeln Sie beides als Grenze für das, was Sie sammeln. Scraping ist ein rechtliches Graugebiet, das sich scharf danach dreht, welche Daten Sie nehmen und was Sie damit tun, also holen Sie bei kommerziellen oder großen Projekten Ihren eigenen Rechtsrat ein.

Die ehrlichen, restriktiven Regeln, an denen es sich festzuhalten lohnt. Sammeln Sie nur öffentliche, aggregierte Daten: öffentliche Untertitel, öffentliche Like-, Kommentar- und Share-Zählungen, öffentliche Video-URLs, Veröffentlichungsdaten und Hashtags, die jeder ohne Anmeldung sehen kann. Scrapen Sie niemals private Accounts, login-gesperrte Inhalte, Direktnachrichten oder Followerlisten. Erstellen Sie keine Profile identifizierbarer Personen: Behandeln Sie Benutzernamen, Handles und von Nutzern geschriebene Kommentare als personenbezogene Daten, aggregieren Sie, wo möglich (Zählungen, Trends, Hashtag-Verteilungen), und veröffentlichen Sie den Inhalt einer Person nicht verknüpft mit ihrer Identität. Wenn personenbezogene Daten involviert sind, gelten Datenschutzgesetze wie DSGVO und CCPA: Sie benötigen eine Rechtsgrundlage für die Verarbeitung und müssen Löschungsanfragen erfüllen. Das sind klare Grenzen, und diese Anleitung bleibt bewusst auf der aggregierten, öffentlichen Seite aller dieser Grenzen.

Für jede echte oder kommerzielle Nutzung ist die offizielle TikTok API das richtige Werkzeug. TikTok bietet Entwickler-APIs für sanktionierten Zugriff auf Inhalte und Metriken an, mit Struktur, auf die Sie sich verlassen können, und Bedingungen, innerhalb derer Sie bleiben können. Dieser Artikel ist ein technischer Walkthrough, der eng auf öffentliche, aggregierte Daten beschränkt ist. Er ist kein Befürworten massenhafter personenbezogener Datenerhebung und deckt nichts hinter einem Login ab. Wenn Ihr Projekt mehr als eine kleine Stichprobe öffentlicher Felder benötigt, ist die offizielle API oder eine formale Datenvereinbarung der richtige Weg, kein cleverer Scraper.

Zusammenfassung

Wichtigste Erkenntnisse

  • TikTok ist clientseitig gerendert und bot-verteidigt. Eine einfache Anfrage gibt eine leere Hülle zurück, also müssen Sie die Seite rendern, bevor Sie parsen.
  • Rendering und eine vertrauenswürdige IP gehören in einen einzigen Aufruf. Die Crawling API mit einem JS-Token erledigt beides; ajax_wait und page_wait steuern, wie lange sie auf Inhalte wartet, und scroll behandelt TikToks Infinite Feed.
  • Stabile Signale parsen. TikToks data-e2e-Attribute sind weitaus langlebiger als seine häufig umbenannten verschachtelten Klassen.
  • Nur öffentliche Aggregate. Untertitel, Like-, Kommentar- und Share-Zählungen, Video-URLs, Veröffentlichungsdaten und Hashtags extrahieren; niemals private Inhalte, Followerlisten oder Profile von Einzelpersonen.
  • Dosieren, rotieren und die offizielle API bevorzugen. Volumen niedrig halten, auf Residential-Rotation setzen und TikToks offizielle API für alles Echte oder Kommerzielle verwenden.

Häufig gestellte Fragen

Warum gibt eine einfache Anfrage keine Daten von TikTok zurück?

Weil TikTok seine Such-, Hashtag- und Profilinhalte clientseitig mit JavaScript rendert. Das initiale HTML ist eine Hülle, die sich erst füllt, nachdem die Skripte der Seite in einem Browser ausgeführt wurden, sodass eine rohe HTTP-Anfrage einen nahezu leeren Body zurückgibt. Um echte öffentliche Daten zu erhalten, müssen Sie die Seite zuerst rendern, was das JS-Token der Crawling API für Sie übernimmt.

Benötige ich das normale Token oder das JS-Token für TikTok?

Das JS-Token. Das normale Token ruft statisches HTML ab, was auf TikTok dieselbe leere Hülle wie eine einfache Anfrage ist. Das JS-Token rendert die Seite in einem echten Browser, bevor es das HTML zurückgibt, sodass die öffentlichen Videokarten vorhanden sind, wenn BeautifulSoup sie parst.

Welche TikTok-Daten sind sicher zu scrapen?

Nur öffentliche, aggregierte Daten: öffentliche Untertitel, öffentliche Like-, Kommentar- und Share-Zählungen als Zahlen, öffentliche Video-URLs, Veröffentlichungsdaten und Hashtags, die jeder ohne Anmeldung sehen kann. Private Accounts, login-gesperrte Inhalte, Direktnachrichten, Followerlisten und die Identitäten oder Inhalte einzelner Personen sind verboten. Das sind personenbezogene Daten, und deren Erhebung verstößt gegen TikToks Bedingungen und in vielen Gerichtsbarkeiten gegen das Datenschutzrecht.

Wie gehe ich mit TikToks Infinite Scroll um?

Setzen Sie die scroll-Option der Crawling API auf true und stimmen Sie scroll_interval ab, um zu steuern, wie lange sie zwischen den Scrolls wartet. Die API simuliert das Scrollen der Seite nach unten, damit mehr Videokarten in das HTML geladen werden, bevor es zurückgegeben wird. Halten Sie das Intervall großzügig und ziehen Sie eine vernünftige Stichprobe statt zu versuchen, einen gesamten Feed in einer Anfrage zu scrollen.

Sollte ich die offizielle TikTok API oder die Website scrapen?

Für jede echte, fortlaufende oder kommerzielle Nutzung verwenden Sie die offizielle TikTok API. Es ist der genehmigte Weg, gibt zuverlässige Struktur und hält Sie in TikToks Bedingungen. Das Scrapen einer kleinen Stichprobe öffentlicher, aggregierter Felder mit dem hier beschriebenen Ansatz eignet sich für leichtgewichtige Recherchen zu öffentlichen Daten ohne API-Zugang, solange Sie die Bedingungen, robots.txt und Ratenlimits respektieren.

Wie vermeide ich das Blockieren beim Scrapen von TikTok?

Halten Sie Ihre IP-Anfragerate niedrig, fügen Sie echte Verzögerungen zwischen Anfragen hinzu, variieren Sie Ihre Ziele statt die vollständige Geschichte eines Hashtags zu crawlen, und leiten Sie über rotierende Residential-IPs weiter, sodass keine einzelne Adresse ein Ratenlimit auslöst. Die Crawling API verwaltet Rotation und einen vertrauenswürdigen IP-Pool für Sie. Beobachten Sie die Statuscodes und weichen Sie zurück, sobald Sie anfangen, Herausforderungen zu sehen.

Jetzt loslegen

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.

Self-Service · Kein Verkaufsgespräch erforderlich · Enterprise-Crawl-Volumen verfügbar