jsonscraper
Marknader
Tillbaka till journalen

TikTok: så kontrollerar du att sökbevakningen verkligen fungerar

Kontrollera den dagliga hämtningen utifrån svarens struktur, aktualitet och upprepade poster – innan en tom rapport når teamet.

Redaktionella riktlinjer Rapportera ett fel

HTTP 200 garanterar inte att den dagliga TikTok-bevakningen har samlat in videor. Sökresultaten kan finnas i aweme_list eller i search_item_list[].aweme_info; ett skript som bara läser den första arrayen kan avslutas utan fel och ändå skapa en tom rapport. En tillförlitlig kontroll bekräftar transport- och applikationsstatus separat, hämtar båda de stödda datastrukturerna och registrerar hur många unika videor som kunde hämtas under körningen.

Vad som bör felsökas

Föreställ dig följande uppgift: varje morgon samlar ett team in offentliga videor för flera sökfrågor för att upptäcka nya inlägg om en produkt. Ett viktigt resultat av processen är en reproducerbar lista över hittade poster med beskrivning, skapare, publiceringsdatum och tillgängliga mätvärden. Om rapporten plötsligt är tom kan orsaken vara JSON-hanteringen, en förändrad uppsättning resultat, att redan kända videor visas igen eller ett verkligt fel i begäran. Ett enda värde – till exempel längden på aweme_list – räcker inte för att skilja mellan dessa fall.

Sökvägen /searchVideo i jsonscrapers TikTok Scraper API kräver parametern keyword och stöder även parametrarna count, cursor, date_posted, sort_by och region. Dokumentationen för sökvägen beskriver paginering med cursor; värdet ska skickas vidare som en opak sträng från föregående svar. Parametern count anger önskat antal resultat, inte en garanti för att alla inlägg täcks.

Dela upp kontrollen i fyra signaler

En användbar felsökning består av fyra separata kontroller. För det första: HTTP-begäran slutfördes utan fel. För det andra: svarens yttre status är ok och det inre tiktok.status_code anger att svaret lyckades. För det tredje: objektet tiktok finns och poster hämtas från båda dokumenterade platserna i svaret. För det fjärde: efter deduplicering återstår poster med ID:n som kan lagras. Spara antalet hämtade poster både före och efter deduplicering i loggen: skillnaden visar om dubbletter uppstod vid normaliseringen.

Om ett fält saknas ska det lämnas tomt, inte ersättas med ett påhittat värde. Exempelvis kan visningsräknaren saknas för en viss post. Om rå JSON sparas tillsammans med den normaliserade raden går det senare att kontrollera om informationen gick förlorad vid parsningen eller saknades redan i det ursprungliga svaret.

En enkel begäran och normalisering i Python

jsonscrapers specifikation anger basadressen https://tiktok.evelode.com och att nyckeln skickas i frågeparametern license_key. Exemplet nedan använder de dokumenterade parametrarna; nyckeln hämtas från en miljövariabel och skrivs inte ut i loggen. Installera beroendet med kommandot python -m pip install requests och ange sedan JSONSCRAPER_TIKTOK_LICENSE_KEY i miljön.

Artikel: TikTok: så kontrollerar du att sökbevakningen verkligen fungerar
Sammanfattning: För sökordsbevakning på TikTok räcker det inte att få HTTP 200: sökresultaten kan finnas i olika JSON-arrayer. Så kontrollerar du API-svaret, sparar en ögonblicksbild och skapar en statusrapport för pipelinen.
Bildroll: stödillustration 2 – en annan specifik aspekt
Avsnitt: En enkel begäran och normalisering i Python
Visuellt motiv: En tydlig teknisk infografik på ryska: övervakningspipel
Kontroll av status och två sökresultatstrukturer före deduplicering och sparande av ögonblicksbilden.© jsonscraper · AI-genererad illustration
Artikel: TikTok: så kontrollerar du att sökbevakningen verkligen fungerar
Sammanfattning: För sökordsbevakning på TikTok räcker det inte att få HTTP 200: sökresultaten kan finnas i olika JSON-arrayer. Så kontrollerar du API-svaret, sparar en ögonblicksbild och skapar en statusrapport för pipelinen.
Bildroll: omslagsbild – huvudidén
Avsnitt: En enkel begäran och normalisering i Python
Visuellt motiv: En tydlig teknisk infografik på ryska: övervakningspipeline med rutor «GET /searchVide
Kontroll av status och två sökresultatstrukturer före deduplicering och sparande av ögonblicksbilden.© jsonscraper · AI-genererad illustration
import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]


def extract_videos(payload):
    """Samla videor från båda kända strukturerna i söksvaret."""
    tiktok = payload.get("tiktok") or {}
    videos = []

    for item in tiktok.get("aweme_list") or []:
        if isinstance(item, dict):
            videos.append(item)

    for item in tiktok.get("search_item_list") or []:
        if isinstance(item, dict):
            aweme = item.get("aweme_info")
            if isinstance(aweme, dict):
                videos.append(aweme)

    return videos


def main():
    params = {
        "license_key": KEY,
        "keyword": "exempelsökning om en produkt",
        "count": 20,
        "region": "US",
    }
    response = requests.get(BASE_URL, params=params, timeout=30)
    response.raise_for_status()
    payload = response.json()

    if payload.get("status") != "ok":
        raise RuntimeError("API:et returnerade en yttre status som inte är ok")

    tiktok = payload.get("tiktok")
    if not isinstance(tiktok, dict):
        raise RuntimeError("Objektet tiktok saknas i svaret")

    if tiktok.get("status_code") != 0:
        raise RuntimeError("Det inre status_code är inte det framgångsvärde som förväntas: 0")

    raw_videos = extract_videos(payload)
    unique = {}
    for video in raw_videos:
        video_id = video.get("aweme_id")
        if video_id:
            unique.setdefault(str(video_id), video)

    snapshot = {
        "collected_at": datetime.now(timezone.utc).isoformat(),
        "keyword": params["keyword"],
        "status": payload.get("status"),
        "status_code": tiktok.get("status_code"),
        "raw_items": len(raw_videos),
        "unique_items": len(unique),
        "has_more": tiktok.get("has_more"),
        "cursor": tiktok.get("cursor"),
        "videos": list(unique.values()),
    }

    Path("snapshots").mkdir(exist_ok=True)
    stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
    Path(f"snapshots/{stamp}.json").write_text(
        json.dumps(snapshot, ensure_ascii=False, indent=2),
        encoding="utf-8",
    )

    print({
        "status": snapshot["status"],
        "status_code": snapshot["status_code"],
        "raw_items": snapshot["raw_items"],
        "unique_items": snapshot["unique_items"],
        "has_more": snapshot["has_more"],
    })


if __name__ == "__main__":
    main()

Skriptet kontrollerar transportnivån med raise_for_status() och kontrollerar därefter den yttre statusen, att objektet tiktok finns och det inre status_code. Sedan hämtar det poster från två sökstrukturer, deduplicerar dem med aweme_id och sparar en ögonblicksbild med insamlingstid. Om inga poster kan hämtas innehåller filen ändå information om körningen, så att ett sparat tomt resultat kan skiljas från en rapport som saknas.

Så omvandlar du ögonblicksbilder till en signal för teamet

Kör skriptet enligt ett schema med cron, CI eller en arbetsflödesplanerare. Spara ögonblicksbilder separat för varje sökfråga, eller lägg till sökordet i filnamnet. Det räcker att registrera körningstid, status, antal hämtade och unika poster samt flaggan has_more i en statusrapport. Skicka gärna en avisering vid ett begärandefel, om obligatoriska delar av svaret saknas eller om antalet hämtade poster förändras kraftigt jämfört med den egna historiken.

En sådan jämförelse upptäcker avvikelser i pipelinen, men förklarar inte i sig orsaken. Ett lägre antal resultat kan bero på den aktuella sökresultatsammansättningen och inte på ett fel i API:et eller parsern. Därför är det användbart att spara rå JSON, jämföra identiska parametrar och kontrollera de hittade ID:na. Välj aviseringströskeln utifrån observationer av just din sökfråga, inte utifrån ett universellt värde.

Använd cursor från svaret vid paginering och avsluta genomgången när API:et anger att det inte finns fler resultat. Spara använda markörer och frågeparametrar så att körningen kan återskapas. Parametrarna date_posted och sort_by gör det möjligt att ange tidsfilter och sortering; om uppgiften kräver jämförbara resultat ska dessa vara oförändrade mellan körningarna.

Så tolkar du resultatet

Efter införandet får teamet ett kontrollerbart svar på tre praktiska frågor: genomfördes begäran, var finns resultaten i JSON och hur många unika videor ingår i den sparade ögonblicksbilden? Det förkortar vägen från en tom tabell till felsökning: kontrollera först status och struktur, därefter parametrar, dubbletter och innehållet i det ursprungliga svaret.

Svarsschemat och tillgängliga fält kan skilja sig mellan poster. Vid en livekontroll av jsonscraper den 25 oktober 2026 returnerade sökningen fält för ID, beskrivning, skapare och statistik; värden för en enskild post bör betraktas som valfria. En fungerande rapport sparar de data som faktiskt hämtats och ersätter inte saknade värden med nollor.

Du kan börja på sidan för TikTok Scraper API och kontrollera exakta sökvägar och parametrar i den officiella API-dokumentationen. En sådan kontroll är användbar före start av bevakningen: rapporten blir ett observerbart resultat vars kvalitet går att felsöka.

Personer

Inga personer listade för denna artikel ännu.

Fortsätt läsaHitta TikTok-videor med växande engagemang utan att jämföra råa visningar
Läs nästa artikel

Gör det du läser till en fungerande integration

Utforska jsonscrapers API:er för social data, testa anrop och bygg nästa arbetsflöde.

Utforska API:er