jsonscraper

API TikTok Scraper: jak pobierać dane wideo w JSON za pomocą jsonscraper

Praktyczny początek z trasą getVideoByID, sprawdzaniem JSON i obsługą klucza w cURL i Pythonie.

Jeśli aplikacja potrzebuje informacji o konkretnym filmie z TikToka, najwygodniej zacząć od jednego żądania i sprawdzić, jakie dane zwraca. Następnie można zwalidować odpowiedź i przygotować ją do przechowywania lub analizy.

Na stronie TikTok Scraper API od jsonscraper wymieniono trasy dotyczące filmów, użytkowników, wyszukiwania, hashtagów, muzyki i innych typów danych. Poniżej omówimy udokumentowane żądanie getVideoByID oraz sposoby bezpiecznego przetwarzania jego odpowiedzi. Przykłady opierają się na materiałach dostawcy; przed użyciem sprawdź je z aktywnym kluczem i aktualną dokumentacją.

Pierwsze żądanie: pobieranie informacji o filmie

Laptop z kodem i rośliną w kawiarni
James Harrison

W dokumentacji getVideoByID w Postmanie wskazano metodę GET i parametr video_id. Przykład zawiera także region i cache_timeout. Podstawowy adres opublikowany na stronie usługi to https://tiktok.evelode.com.

Przykładowe żądanie za pomocą cURL:

export JSONSCRAPER_LICENSE_KEY="twój_klucz"

curl --get "https://tiktok.evelode.com/getVideoByID" \
  --data-urlencode "video_id=7106855913906081070" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "region=US"

ID w przykładzie pochodzi z opublikowanego żądania. Zastąp je ID filmu, który chcesz sprawdzić. Przechowuj klucz w zmiennej środowiskowej lub menedżerze sekretów: nie dodawaj go do publicznego repozytorium, JavaScriptu po stronie klienta ani logów.

Postman opisuje region jako kod regionu i podaje US jako wartość domyślną. W przypadku cache_timeout dokumentacja wskazuje domyślne okno buforowania wynoszące 3600 sekund; wartość 0 wyłącza buforowanie. Jeśli ten parametr jest potrzebny w Twoim scenariuszu, możesz przekazać go jawnie:

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"

To adaptacja parametrów opublikowanych dla tej trasy, a nie gwarancja, że wszystkie odpowiedzi będą miały taką samą strukturę ani że wyłączenie buforowania będzie odpowiednie do każdego zadania. Przed wdrożeniem sprawdź uwierzytelnianie i parametry w aktualnej kolekcji: Postman może przekazywać klucz za pomocą skonfigurowanego API Key, natomiast powyższy przykład cURL pokazuje go jako parametr URL.

To samo żądanie w Pythonie

Poniżej znajduje się przykład wykorzystujący standardową bibliotekę Pythona. Tworzy żądanie GET, przekazuje parametry i obsługuje błąd sieci, błąd HTTP oraz niepoprawny 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("Ustaw zmienną 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"Błąd HTTP: {error.code}")
    raise
except URLError as error:
    print(f"Błąd sieci: {error.reason}")
    raise
except json.JSONDecodeError:
    raise RuntimeError("Nie udało się sparsować odpowiedzi usługi jako JSON")

print("Status HTTP:", status_code)
print("Klucze najwyższego poziomu:", list(payload.keys()))

To adaptacja udokumentowanego żądania, a nie przykład osobno przetestowany przez dostawcę dla Pythona. Nie opisuje też wszystkich możliwych odpowiedzi usługi. Ponieważ klucz jest przekazywany w adresie URL, nie zapisuj pełnego URL w logach: może zawierać sekret.

Jak sprawdzać odpowiedź JSON

W opublikowanej odpowiedzi Postmana znajduje się pole status oraz zagnieżdżony obiekt tiktok.aweme_detail z danymi filmu i autora. To przykład struktury pojedynczej odpowiedzi, a nie gwarancja niezmiennego schematu. Możesz zapoznać się z nim w przykładzie odpowiedzi dla getVideoByID.

Podczas odczytu zagnieżdżonych pól sprawdzaj każdy poziom:

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("Odpowiedź nie zawiera oczekiwanego obiektu z danymi filmu")
else:
    video_id = details.get("id")
    description = details.get("desc")
    author = details.get("author")

    print("ID:", video_id)
    print("Opis:", description)
    print("Autor:", author)

Nazwy pól pochodzą z opublikowanego przykładu. Użycie .get() nie oznacza, że pola są wymagane: pozwala obsłużyć odpowiedź, w której brakuje oczekiwanych wartości. Jeśli logika aplikacji zależy od konkretnego pola, sprawdź jego obecność w odpowiedziach dotyczących Twojego scenariusza i przygotuj obsługę jego braku.

Warto rozdzielić trzy rodzaje sprawdzeń:

  1. Transport: czy otrzymano odpowiedź HTTP i jaki jest jej status.
  2. Format: czy treść udało się sparsować jako JSON.
  3. Zawartość: czy znajdują się w niej dane potrzebne aplikacji.

Pomyślne sparsowanie JSON nie oznacza jeszcze, że odpowiedź zawiera potrzebny obiekt. Na potrzeby diagnostyki zapisuj błędy techniczne i wyniki sprawdzeń, maskując klucze.

Od jednego żądania do działającego potoku

Analityka wydajności Speedcurve
Luke Chesser

Do prototypu wystarczy wysłać żądanie i wyświetlić kilka wartości. W przypadku regularnego przetwarzania podziel pracę na etapy:

Żądanie → weryfikacja → normalizacja → deduplikacja → przechowywanie.

  • Żądanie. Pobierz odpowiedź za pomocą udokumentowanej trasy i osobno zapisz status techniczny.
  • Weryfikacja. Upewnij się, że treść można sparsować jako JSON i że zawiera dane potrzebne do konkretnego zadania.
  • Normalizacja. Przenieś potrzebne wartości do własnego modelu danych. Nie zapisuj całej zagnieżdżonej struktury w bazie, jeśli aplikacja potrzebuje tylko wybranych pól.
  • Deduplikacja. Wybierz identyfikator po sprawdzeniu, czy jest obecny i odpowiedni do Twojego zadania. Nie zakładaj, że zawsze będzie dostępny we wszystkich odpowiedziach.
  • Przechowywanie. W razie potrzeby zapisuj czas żądania i oryginalną odpowiedź oddzielnie od znormalizowanego rekordu. Ułatwi to ustalenie, jakie zmiany wprowadziła aplikacja.

Są to zalecenia dotyczące projektowania aplikacji, a nie funkcje, które należy przypisywać usłudze. Oddzielenie zewnętrznej odpowiedzi od wewnętrznego modelu ułatwia też obsługę zmian: problemów można szukać na etapie weryfikacji lub normalizacji, a nie w całym kodzie.

W przypadku powtarzających się żądań z góry ustal, kiedy odświeżać dane i które błędy warto ponawiać. Ogranicz liczbę prób: nieskończona pętla nie naprawi nieprawidłowego parametru ani problemu z uwierzytelnianiem.

Buforowanie i region

W opisie trasy getVideoByID parametr cache_timeout określa czas buforowania w sekundach: podano wartość domyślną 3600 sekund, a 0 wyłącza buforowanie. Parametr region opisano jako kod kraju; w dokumentacji podano przykład US. Przed wdrożeniem sprawdź te informacje w aktualnej dokumentacji żądania w Postmanie.

Sama obecność ustawienia buforowania nie potwierdza aktualności konkretnej odpowiedzi. Jeśli aktualność danych jest istotna, sprawdź wyniki powtarzanych żądań w swoim scenariuszu i wybierz odpowiedni sposób działania.

Jakie zadania warto zbadać dalej

Na stronie produktu wymieniono trasy do wyszukiwania filmów i użytkowników, hashtagów, lokalizacji, muzyki oraz trendów. Przykłady obejmują searchVideo, searchHashtag, getUserFeed i getTrendingFeed. To opublikowany przez dostawcę wykaz tras, a nie niezależna weryfikacja każdej z nich. Parametry i strukturę odpowiedzi sprawdzaj w dokumentacji konkretnej trasy: nie można automatycznie przenosić do niej przykładu getVideoByID.

jsonscraper proponuje korzystanie z kolekcji Postman do konfiguracji klucza i uruchamiania żądań. Może to być wygodny sposób sprawdzenia pojedynczej trasy przed napisaniem integracji. Usługa wymienia również scenariusze automatyzacji, ale zgodność konkretnego procesu należy sprawdzić osobno w swojej konfiguracji. Eksportując kolekcję lub udostępniając ją, upewnij się, że nie pozostał w niej aktywny klucz.

Co sprawdzić przed użyciem w aplikacji

Zanim włączysz żądanie do regularnego procesu, przetestuj je na filmach i parametrach potrzebnych w projekcie:

  • Czy żądanie działa z aktywnym kluczem i poprawnym ID.
  • Jak aplikacja obsługuje nieprawidłowy lub brakujący parametr.
  • Co się dzieje, gdy JSON jest poprawny, ale brakuje potrzebnego pola.
  • Jak obsługiwane są błąd HTTP, awaria sieci i przekroczenie limitu czasu.
  • Które pola nadają się do identyfikacji i deduplikacji w Twoim konkretnym zadaniu.
  • Jak zmienia się wynik ponownego żądania przy różnych wartościach cache_timeout, jeśli używasz tego parametru.

Zapisz datę testu, parametry bez sekretu i zanonimizowany przykład odpowiedzi. Jedno udane żądanie potwierdza działanie tylko konkretnego scenariusza w konkretnych warunkach; nie dowodzi stabilności wszystkich tras i odpowiedzi.

Zacznij od jednego powtarzalnego scenariusza

Przetestuj getVideoByID dla wybranego filmu, sprawdź rzeczywisty JSON i napisz obsługę uwzględniającą brakujące pola oraz błędy. Następnie, jeśli będzie to potrzebne, rozbuduj proces o normalizację, deduplikację i przechowywanie danych.

Dokumentacja jsonscraper stanowi punkt wyjścia — zawiera podstawowy adres i wykaz tras. W kodzie produkcyjnym nadal trzeba sprawdzać konkretną odpowiedź, chronić klucz i przewidywać sytuacje, w których dane odbiegają od oczekiwanej struktury.

Powiązane artykuły

Community Pulse · Poradnik

Claude Code czy Codex: porównuj swoją pracę, nie markę

Opinie programistów na temat Claude Code i Codex są podzielone, a badanie pull requestów nie wskazuje uniwersalnego zwycięzcy. Praktyczny sposób porównania narzędzi to sprawdzenie ich na zadaniach i w środowisku, w którym naprawdę pracujesz.

Zmień lekturę w działającą integrację

Poznaj API danych społecznościowych jsonscraper, testuj zapytania i buduj kolejne procesy.

Poznaj API