jsonscraper
Markkinat
Takaisin lehteen

TikTok: Näin tarkistat, toimiiko hakuseuranta todella

Tarkista päivittäisen haun vastausrakenne, ajantasaisuus ja tietueiden toistuvuus ennen kuin tyhjä raportti päätyy tiimille.

Toimituksellinen linjaus Ilmoita virheestä

HTTP 200 ei takaa, että TikTokin päivittäinen seuranta on kerännyt videoita. Hakutulokset voivat olla joko aweme_list-taulukossa tai kohdassa search_item_list[].aweme_info; skripti, joka lukee vain ensimmäistä taulukkoa, voi päättyä virheettä ja tallentaa tyhjän raportin. Luotettava tarkistus varmistaa erikseen siirtotason ja sovellustason tilan, poimii tiedot molemmista tuetuista rakenteista ja kirjaa, montako yksilöllistä videota suorituksella saatiin talteen.

Mitä kannattaa diagnosoida

Kuvitellaan tehtävä, jossa tiimi kerää joka aamu julkisia videoita useilla hakutermeillä löytääkseen uusia tuotetta koskevia julkaisuja. Prosessin tärkeä tulos on toistettava luettelo löydetyistä tietueista sekä niiden kuvauksista, tekijöistä, julkaisupäivistä ja saatavilla olevista mittareista. Jos raportti on yhtäkkiä tyhjä, syynä voi olla JSON-käsittely, muuttunut hakutulosjoukko, aiemmin tunnettujen videoiden toistuminen tai varsinainen pyyntövirhe. Yksi luku, kuten aweme_list-taulukon pituus, ei auta erottamaan näitä tilanteita.

jsonscraper TikTok Scraper API:n hakureitti /searchVideo edellyttää parametria keyword ja hyväksyy lisäksi parametrit count, cursor, date_posted, sort_by ja region. Reitin dokumentaatio kuvaa sivutuksen cursor-arvon avulla; välitä se läpinäkymättömänä arvona edellisestä vastauksesta. Parametri count määrittää halutun tulosten määrän, mutta ei takaa kaikkien julkaisujen kattavaa löytymistä.

Jaa tarkistus neljään signaaliin

Hyödyllinen diagnostiikka koostuu neljästä toisistaan riippumattomasta tarkistuksesta. Ensimmäinen: HTTP-pyyntö onnistui. Toinen: vastauksen ulompi status on ok ja sisempi tiktok.status_code vastaa onnistunutta vastausta. Kolmas: tiktok-objekti on mukana ja tietueet voidaan poimia vastauksen molemmista dokumentoiduista kohdista. Neljäs: deduplikoinnin jälkeen jäljelle jää tietueita, joilla on tallennukseen sopivat tunnisteet. Tallenna lokiin poimittujen kohteiden määrä sekä ennen deduplikointia että sen jälkeen: erotus kertoo, syntyikö toistoja normalisointivaiheessa.

Jos kenttä puuttuu, jätä se tyhjäksi äläkä korvaa sitä keksityllä arvolla. Esimerkiksi katselukertojen määrä voi puuttua yksittäisestä tietueesta. Alkuperäisen JSON-vastauksen tallentaminen normalisoidun rivin rinnalle auttaa myöhemmin tarkistamaan, katosiko tieto jäsennyksessä vai puuttuiko se jo alkuperäisestä vastauksesta.

Yksinkertainen pyyntö ja normalisointi Pythonilla

jsonscraperin määritys ilmoittaa perusosoitteeksi https://tiktok.evelode.com ja avaimen välitystavaksi kyselyparametrin license_key. Alla oleva esimerkki käyttää dokumentoituja parametreja; avain luetaan ympäristömuuttujasta eikä sitä tulosteta lokiin. Asenna riippuvuus komennolla python -m pip install requests ja määritä sitten JSONSCRAPER_TIKTOK_LICENSE_KEY ympäristöön.

Artikkeli: TikTok: Näin tarkistat, toimiiko hakuseuranta todella
Yhteenveto: TikTokin avainsanaseurannassa HTTP 200 ei riitä: hakutulokset voivat olla JSON-vastauksen eri taulukoissa. Näytämme, miten API-vastaus tarkistetaan, tilannekuva tallennetaan ja putken tilasta muodostetaan raportti.
Kuvan rooli: täydentävä kuvitus 2 — eri näkökulma
Osio: Yksinkertainen pyyntö ja normalisointi Pythonilla
Visuaalinen aihe: Selkeä tekninen infografiikka venäjäksi: seurantaputki
Tarkista tila ja kaksi hakutulosten rakennetta ennen deduplikointia ja tilannekuvan tallentamista.© jsonscraper · tekoälyn luoma kuvitus
Artikkeli: TikTok: Näin tarkistat, toimiiko hakuseuranta todella
Yhteenveto: TikTokin avainsanaseurannassa HTTP 200 ei riitä: hakutulokset voivat olla JSON-vastauksen eri taulukoissa. Näytämme, miten API-vastaus tarkistetaan, tilannekuva tallennetaan ja putken tilasta muodostetaan raportti.
Kuvan rooli: kansikuva — pääidea
Osio: Yksinkertainen pyyntö ja normalisointi Pythonilla
Visuaalinen aihe: Selkeä tekninen infografiikka venäjäksi: seurantaputki, jonka laatikoissa lukee ”GET /searchVide
Tarkista tila ja kaksi hakutulosten rakennetta ennen deduplikointia ja tilannekuvan tallentamista.© jsonscraper · tekoälyn luoma kuvitus
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):
    """Kokoa videot hakuvastauksen molemmista tunnetuista rakenteista."""
    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": "esimerkkihaku tuotteesta",
        "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 palautti muun ulomman tilan kuin ok")

    tiktok = payload.get("tiktok")
    if not isinstance(tiktok, dict):
        raise RuntimeError("Vastauksesta puuttuu tiktok-objekti")

    if tiktok.get("status_code") != 0:
        raise RuntimeError("Sisempi status_code ei ole onnistumista vastaava arvo 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()

Skripti tarkistaa siirtotason kutsumalla raise_for_status()-metodia ja varmistaa sen jälkeen ulomman tilan, tiktok-objektin olemassaolon sekä sisemmän status_code-arvon. Sitten se poimii tietueet kahdesta hakurakenteesta, deduplikoi ne aweme_id-tunnisteen perusteella ja tallentaa tilannekuvan keruuajankohtineen. Vaikka sopivia tietueita ei olisi, tiedostoon tallentuu silti suorituksen tiedot, jolloin tallennetun tyhjän tuloksen voi erottaa puuttuvasta raportista.

Muuta tilannekuvat tiimin signaaliksi

Aja skripti aikataulutetusti cronilla, CI:llä tai työnkulun ajastimella. Tallenna kunkin haun tilannekuvat erikseen tai lisää hakusana tiedostonimeen. Tilannetaulukkoon riittää käynnistysaika, tila, poimittujen ja yksilöllisten tietueiden määrä sekä has_more-lippu. Ilmoitus kannattaa lähettää, jos pyyntö aiheuttaa poikkeuksen, pakollisia vastausosia puuttuu tai poimittujen tietueiden määrä muuttuu jyrkästi suhteessa omaan historiaan.

Tällainen vertailu paljastaa putken poikkeaman, mutta ei yksin selitä sen syytä. Tulosten pienempi määrä voi johtua senhetkisestä hakutulosjoukosta eikä API:n tai jäsentimen rikkoutumisesta. Siksi alkuperäinen JSON kannattaa tallentaa, pyyntöparametrit pitää samoina ja löydetyt tunnisteet tarkistaa. Valitse ilmoituskynnys juuri oman hakusi havaintojen, älä yleispätevän lukuarvon perusteella.

Käytä sivutuksessa vastauksesta saatua cursor-arvoa ja lopeta haku, kun API ilmoittaa, ettei seuraavia tuloksia ole. Tallenna käytetyt kursorit ja pyyntöparametrit, jotta suoritus voidaan toistaa. Parametreilla date_posted ja sort_by voi määrittää aikarajauksen ja järjestyksen; jos tehtävä edellyttää toistettavia vertailuja, pidä ne samoina ajosta toiseen.

Näin tulkitset tuloksen

Käyttöönoton jälkeen tiimi saa tarkistettavan vastauksen kolmeen käytännön kysymykseen: onnistuiko pyyntö, missä tulokset sijaitsevat JSONissa ja montako yksilöllistä videota tallennettuun tilannekuvaan sisältyy. Näin tyhjän taulukon syyn selvittämiseen kuluu vähemmän aikaa: tarkista ensin tilat ja rakenne, sitten parametrit, toistot ja alkuperäisen vastauksen sisältö.

Vastauksen rakenne ja saatavilla olevat kentät voivat vaihdella tietueittain. jsonscraperin 25. lokakuuta 2026 tekemässä reaaliaikaisessa tarkistuksessa haku palautti tunnisteen, kuvauksen, tekijän ja tilastot sisältäviä kenttiä; yksittäisen tietueen arvoja on silti pidettävä valinnaisina. Toimiva raportti säilyttää tosiasiassa saadut tiedot eikä korvaa puuttuvia arvoja nollilla.

Aloita TikTok Scraper API -sivulta ja tarkista tarkat reitit ja parametrit API:n virallisesta dokumentaatiosta. Tällainen tarkistus kannattaa tehdä ennen seurannan käynnistämistä: raportista tulee havaittava tulos, jonka laatua voi diagnosoida.

Ihmiset

Tämän artikkelin luettelossa ei ole vielä ihmisiä.

Jatka lukemistaNäin tunnistat kasvavan sitoutumisen TikTok-videoissa vertaamatta raakoja katselukertoja
Lue seuraava artikkeli

Muuta lukemasi toimivaksi integraatioksi

Tutustu jsonscraperin sosiaalisen datan rajapintoihin, testaa pyyntöjä ja rakenna seuraava työnkulkusi.

Tutki API:t