Wenn eine Anwendung Informationen zu einem bestimmten TikTok-Video benötigt, ist es am einfachsten, mit einer einzelnen Anfrage zu beginnen und zu prüfen, welche Daten sie zurückgibt. Anschließend lässt sich die Antwort validieren und für die Speicherung oder Analyse aufbereiten.
Auf der Seite zur TikTok Scraper API von jsonscraper sind Routen für Videos, Nutzer, Suche, Hashtags, Musik und weitere Datentypen aufgeführt. Im Folgenden sehen wir uns die dokumentierte Anfrage getVideoByID und Möglichkeiten zur sicheren Verarbeitung ihrer Antwort an. Die Beispiele basieren auf den Materialien des Anbieters. Prüfen Sie sie vor der Verwendung mit einem gültigen Schlüssel und anhand der aktuellen Dokumentation.
Erste Anfrage: Videoinformationen abrufen
In der Postman-Dokumentation zu getVideoByID sind die GET-Methode und der Parameter video_id angegeben. Das Beispiel zeigt außerdem region und cache_timeout. Die auf der Serviceseite veröffentlichte Basis-URL lautet https://tiktok.evelode.com.
Beispiel für eine Anfrage mit cURL:
export JSONSCRAPER_LICENSE_KEY="ваш_ключ"
curl --get "https://tiktok.evelode.com/getVideoByID" \
--data-urlencode "video_id=7106855913906081070" \
--data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
--data-urlencode "region=US"
Die ID im Beispiel stammt aus der veröffentlichten Anfrage. Ersetzen Sie sie durch die ID des Videos, das Sie prüfen möchten. Speichern Sie den Schlüssel in einer Umgebungsvariablen oder einem Secrets-Manager. Fügen Sie ihn nicht in ein öffentliches Repository, clientseitiges JavaScript oder Protokolle ein.
Postman beschreibt region als Regionscode und nennt US als Standardwert. Für cache_timeout gibt die Dokumentation ein standardmäßiges Cache-Fenster von 3600 Sekunden an; der Wert 0 deaktiviert das Caching. Wenn dieser Parameter für Ihren Anwendungsfall relevant ist, können Sie ihn ausdrücklich übergeben:
curl --get "https://tiktok.evelode.com/getVideoByID" \
--data-urlencode "video_id=7106855913906081070" \
--data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
--data-urlencode "region=US" \
--data-urlencode "cache_timeout=0"
Dies ist eine Anpassung der für die Route veröffentlichten Parameter und keine Garantie dafür, dass alle Antworten dieselbe Struktur haben oder dass das Deaktivieren des Cachings für jede Aufgabe geeignet ist. Prüfen Sie vor der Implementierung die Authentifizierung und Parameter anhand der aktuellen Sammlung: Postman kann den Schlüssel über einen konfigurierten API Key übergeben, während das cURL-Beispiel oben ihn als URL-Parameter zeigt.
Dieselbe Anfrage mit Python
Unten sehen Sie eine Variante mit der Python-Standardbibliothek. Sie erstellt eine GET-Anfrage, übergibt die Parameter und behandelt Netzwerkfehler, HTTP-Fehler und ungültiges JSON.
import json
import os
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen
base_url = "https://tiktok.evelode.com/getVideoByID"
license_key = os.environ.get("JSONSCRAPER_LICENSE_KEY")
if not license_key:
raise RuntimeError("Задайте переменную JSONSCRAPER_LICENSE_KEY")
params = {
"video_id": "7106855913906081070",
"license_key": license_key,
"region": "US",
}
url = f"{base_url}?{urlencode(params)}"
request = Request(url, method="GET")
try:
with urlopen(request, timeout=30) as response:
status_code = response.status
payload = json.loads(response.read().decode("utf-8"))
except HTTPError as error:
print(f"HTTP-ошибка: {error.code}")
raise
except URLError as error:
print(f"Сетевая ошибка: {error.reason}")
raise
except json.JSONDecodeError:
raise RuntimeError("Ответ сервиса не удалось разобрать как JSON")
print("HTTP-статус:", status_code)
print("Верхнеуровневые ключи:", list(payload.keys()))
Dies ist eine Anpassung der dokumentierten Anfrage und kein Beispiel, das der Anbieter separat für Python getestet hat. Außerdem beschreibt sie nicht alle möglichen Antworten des Dienstes. Da der Schlüssel in der URL übergeben wird, sollten Sie die vollständige URL nicht protokollieren: Sie könnte ein Geheimnis enthalten.
JSON-Antworten prüfen
Die veröffentlichte Postman-Antwort enthält das Feld status und das verschachtelte Objekt tiktok.aweme_detail mit Video- und Autorendaten. Dies ist ein Beispiel für die Form einer einzelnen Antwort, keine Garantie für ein unveränderliches Schema. Sie können es im Antwortbeispiel für getVideoByID ansehen.
Prüfen Sie beim Auslesen verschachtelter Felder jede Ebene:
def get_video_details(payload):
tiktok = payload.get("tiktok")
if not isinstance(tiktok, dict):
return None
details = tiktok.get("aweme_detail")
if not isinstance(details, dict):
return None
return details
details = get_video_details(payload)
if details is None:
print("В ответе нет ожидаемого объекта с данными видео")
else:
video_id = details.get("id")
description = details.get("desc")
author = details.get("author")
print("ID:", video_id)
print("Описание:", description)
print("Автор:", author)
Die Feldnamen stammen aus dem veröffentlichten Beispiel. Die Prüfung mit .get() bedeutet nicht, dass die Felder obligatorisch sind: So lässt sich eine Antwort verarbeiten, in der die erwarteten Werte fehlen. Wenn die Anwendungslogik von einem bestimmten Feld abhängt, prüfen Sie dessen Vorhandensein anhand von Antworten für Ihren Anwendungsfall und sehen Sie ein Verhalten für den Fall vor, dass es fehlt.
Es ist sinnvoll, drei Prüfungen zu unterscheiden:
- Transport: Wurde eine HTTP-Antwort empfangen, und welchen Status hat sie?
- Format: Ließ sich der Antworttext als JSON parsen?
- Inhalt: Sind die von der Anwendung benötigten Daten vorhanden?
Erfolgreich geparstes JSON bedeutet noch nicht, dass die Antwort das benötigte Objekt enthält. Protokollieren Sie zur Diagnose technische Fehler und Prüfergebnisse, und maskieren Sie dabei Schlüssel.
Von einer einzelnen Anfrage zu einer Verarbeitungspipeline
Für einen Prototyp genügt es, eine Anfrage zu senden und einige Werte auszugeben. Für die regelmäßige Verarbeitung sollten Sie die Arbeit in Schritte aufteilen:
Anfrage → Prüfung → Normalisierung → Deduplizierung → Speicherung.
- Anfrage. Rufen Sie die Antwort über die dokumentierte Route ab und speichern Sie den technischen Status separat.
- Prüfung. Stellen Sie sicher, dass sich der Antworttext als JSON parsen lässt und die für die jeweilige Aufgabe benötigten Daten enthält.
- Normalisierung. Überführen Sie die benötigten Werte in Ihr eigenes Datenmodell. Übernehmen Sie nicht die gesamte verschachtelte Struktur in die Datenbank, wenn die Anwendung nur einzelne Felder benötigt.
- Deduplizierung. Wählen Sie eine Kennung erst, nachdem Sie geprüft haben, ob sie vorhanden und für Ihre Aufgabe geeignet ist. Gehen Sie nicht davon aus, dass sie in allen Antworten stets verfügbar sein wird.
- Speicherung. Speichern Sie bei Bedarf den Anfragezeitpunkt und die Rohantwort getrennt vom normalisierten Datensatz. So lässt sich nachvollziehen, welche Änderungen die Anwendung vorgenommen hat.
Dies sind Empfehlungen für den Aufbau einer Anwendung und keine Funktionen, die dem Dienst zugeschrieben werden sollten. Die Trennung der externen Antwort vom internen Datenmodell vereinfacht auch die Behandlung von Änderungen: Probleme lassen sich bei der Prüfung oder Normalisierung suchen, statt im gesamten Code.
Legen Sie bei wiederholten Anfragen im Voraus fest, wann Daten aktualisiert werden sollen und welche Fehler einen erneuten Versuch rechtfertigen. Begrenzen Sie die Zahl der Wiederholungen: Eine Endlosschleife behebt weder einen ungültigen Parameter noch ein Authentifizierungsproblem.
Caching und Region
In der Beschreibung der Route getVideoByID legt der Parameter cache_timeout die Cache-Dauer in Sekunden fest: Als Standardwert sind 3600 Sekunden angegeben, während 0 das Caching deaktiviert. Der Parameter region wird als Ländercode beschrieben; in der Dokumentation steht US als Beispiel. Gleichen Sie diese Angaben vor der Implementierung mit der aktuellen Dokumentation der Anfrage in Postman ab.
Das Vorhandensein einer Cache-Einstellung bestätigt für sich genommen nicht, dass eine bestimmte Antwort aktuell ist. Wenn Aktualität wichtig ist, prüfen Sie die Ergebnisse wiederholter Anfragen mit Daten aus Ihrem Anwendungsfall und wählen Sie ein geeignetes Verhalten.
Welche Aufgaben Sie als Nächstes erkunden können
Auf der Produktseite sind Routen für die Suche nach Videos und Nutzern, Hashtags, Orten, Musik und Trends aufgeführt. Zu den Beispielen gehören searchVideo, searchHashtag, getUserFeed und getTrendingFeed. Dies ist eine vom Anbieter veröffentlichte Übersicht der Routen, keine unabhängige Prüfung jeder einzelnen Route. Informieren Sie sich über Parameter und Antwortformat in der Dokumentation der jeweiligen Route: Diese lassen sich nicht einfach aus dem Beispiel für getVideoByID übernehmen.
jsonscraper empfiehlt, die Postman-Sammlung zum Einrichten des Schlüssels und Ausführen von Anfragen zu verwenden. Das kann eine praktische Möglichkeit sein, eine einzelne Route vor dem Schreiben einer Integration zu prüfen. Der Dienst führt außerdem Automatisierungsszenarien auf; prüfen Sie die Kompatibilität eines konkreten Ablaufs jedoch separat in Ihrer Konfiguration. Stellen Sie beim Exportieren oder Teilen der Sammlung sicher, dass kein aktiver Schlüssel darin verblieben ist.
Was Sie vor der Verwendung in einer Anwendung prüfen sollten
Bevor Sie die Anfrage in einen regelmäßigen Prozess aufnehmen, testen Sie sie mit den Videos und Parametern, die Ihr Projekt benötigt:
- Funktioniert die Anfrage mit einem gültigen Schlüssel und einer korrekten ID?
- Wie verarbeitet die Anwendung einen ungültigen oder fehlenden Parameter?
- Was geschieht, wenn das JSON gültig ist, aber das benötigte Feld fehlt?
- Wie werden HTTP-Fehler, Netzwerkausfälle und Zeitüberschreitungen behandelt?
- Welche Felder eignen sich in Ihrer konkreten Aufgabe zur Identifizierung und Deduplizierung?
- Wie verändert sich das Ergebnis einer wiederholten Anfrage bei unterschiedlichen Werten für
cache_timeout, falls Sie diesen Parameter verwenden?
Notieren Sie das Prüfdatum, die Parameter ohne Geheimnisse und ein anonymisiertes Antwortbeispiel. Eine erfolgreiche Anfrage bestätigt nur, dass ein bestimmtes Szenario unter bestimmten Bedingungen funktioniert; sie beweist nicht die Stabilität aller Routen und Antworten.
Beginnen Sie mit einem reproduzierbaren Szenario
Prüfen Sie getVideoByID mit dem gewünschten Video, untersuchen Sie das tatsächliche JSON und schreiben Sie einen Handler, der fehlende Felder und Fehler berücksichtigt. Erweitern Sie den Prozess anschließend bei Bedarf um Normalisierung, Deduplizierung und Speicherung.
Die Dokumentation von jsonscraper bietet einen Einstiegspunkt – die Basis-URL und eine Übersicht der Routen. Im Produktivcode müssen Sie dennoch die konkrete Antwort prüfen, den Schlüssel schützen und Fälle berücksichtigen, in denen die Daten von der erwarteten Struktur abweichen.