jsonscraper
Markten
Terug naar het journaal

TikTok-video’s met groeiende betrokkenheid vinden zonder ruwe weergaven te vergelijken

Leg met tussenpozen de statistieken van dezelfde gevonden video’s vast en bereken de groei los van de totale populariteit

Redactioneel beleid Een fout melden

Om te zien of een specifieke TikTok-video meer reacties krijgt, vergelijkt u de openbare statistieken met de vorige momentopname van die video. Een eenmalige zoekopdracht toont het totale aantal weergaven en reacties tot dan toe; door dezelfde gevonden video’s opnieuw te verzamelen, ziet u de verandering tussen twee uitvoeringen. Hieronder staat een minimale, werkende Python-pipeline: zoeken, statistieken opslaan in een CSV-bestand en het verschil berekenen.

Wat meet deze monitoring precies?

Dit script is geschikt voor een marketeer, analist of ontwikkelaar die een lijst met gevonden video’s over een onderwerp en een controleerbare waarnemingsgeschiedenis nodig heeft. Een team kan bijvoorbeeld regelmatig video’s volgen over een productlancering of een specifieke zoekopdracht van het publiek, en willen zien welke video’s sinds de vorige controle meer weergaven, likes, reacties of reposts hebben gekregen.

Artikel: TikTok-video’s met groeiende betrokkenheid vinden zonder ruwe weergaven te vergelijken
Samenvatting: Een Python-pipeline verzamelt TikTok-video’s die op een zoekopdracht zijn gevonden, slaat weergaven en reacties op in een CSV-bestand en berekent bij een volgende uitvoering de veranderingen voor dezelfde video’s.
Rol van de afbeelding: omslag — het centrale idee
Sectie: Wat meet deze monitoring precies?
Visueel onderwerp: redactionele foto: fysieke afdrukken met geanonimiseerde rijen met korte video-ID’s en twee tijdstempels
Twee momentopnamen van statistieken voor dezelfde video vergelijken aan de hand van de ID.© jsonscraper · gemaakt met AI

De belangrijkste vergelijkingseenheid is de video, geïdentificeerd aan de hand van aweme_id. Voor elke record worden het verzameltijdstip, de ID, beschrijving, URL, auteursnaam en beschikbare tellers opgeslagen. Vervolgens worden twee momentopnamen op ID aan elkaar gekoppeld. Zo wordt de groei in weergaven van de ene video niet vermengd met de opgebouwde weergaven van een andere.

Het resultaat beschrijft alleen video’s die bij een specifieke zoekopdracht en uitvoering zijn teruggegeven. De zoekresultaten kunnen veranderen en afzonderlijke statistiekvelden kunnen ontbreken. Daarom is het nuttig om de momentopnamen zelf en het verzameltijdstip te bewaren. Beschouw het rapport als een waarneming van al gevonden video’s, niet als een volledige catalogus van alle publicaties over het onderwerp.

Hoe werkt het verzamelen via de API?

De documentatie van de TikTok Scraper API beschrijft de GET-route /searchVideo. Voor zoeken is de tekenreeks keyword verplicht; aanvullende parameters zijn onder meer count, region, sort_by en date_posted. De API-sleutel wordt doorgegeven als license_key. De documentatie vermeldt https://tiktok.evelode.com als basisadres.

Het antwoord bevat een externe status en een object tiktok. In zoekresultaten kunnen video’s staan in tiktok.aweme_list of in tiktok.search_item_list[].aweme_info. De onderstaande verwerker ondersteunt beide vormen. De statistieken worden uit statistics gehaald, waaronder play_count, digg_count, comment_count en share_count. Een ontbrekende waarde blijft leeg en wordt niet vervangen door nul.

De lijst met routes vermeldt cursor om door zoekresultaten te bladeren en geeft toegestane waarden op voor date_posted en sort_by. Voor eenvoudige, herhaalbare monitoring volstaat het om eerst één pagina met resultaten op te halen en het antwoord vast te leggen. Voeg paginering alleen toe als dat nodig is. Geef in dat geval de ontvangen cursor ongewijzigd door.

Werkend Python-voorbeeld

Installeer de requests-bibliotheek met python -m pip install requests en stel de sleutel in als omgevingsvariabele JSONSCRAPER_TIKTOK_LICENSE_KEY. Het script neemt een zoekterm als argument en voegt de gevonden momentopnamen toe aan één CSV-bestand. De code is compatibel met Python 3.8 en hoger.

import csv
import os
import sys
from datetime import datetime, timezone
from pathlib import Path

import requests

BASE_URL = "https://tiktok.evelode.com/searchVideo"
CSV_PATH = Path("tiktok_video_snapshots.csv")
FIELDS = [
    "collected_at", "aweme_id", "author", "description", "share_url",
    "play_count", "digg_count", "comment_count", "share_count",
]


def extract_items(payload):
    """Support the observed search response layouts."""
    data = payload.get("tiktok") or {}
    items = data.get("aweme_list") or []
    if items:
        return items

    found = []
    for result in data.get("search_item_list") or []:
        info = result.get("aweme_info")
        if info:
            found.append(info)
    return found


def main():
    key = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
    if not key:
        raise SystemExit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY first")
    if len(sys.argv) < 2:
        raise SystemExit('Usage: python collect.py "search phrase"')

    params = {
        "license_key": key,
        "keyword": sys.argv[1],
        "count": 20,
        "region": "US",
        "sort_by": "relevance",
        "date_posted": "this-week",
    }
    response = requests.get(BASE_URL, params=params, timeout=30)
    response.raise_for_status()
    payload = response.json()

    if payload.get("status") != "ok":
        raise RuntimeError("API returned a non-ok outer status")
    data = payload.get("tiktok") or {}
    items = extract_items(payload)
    collected_at = datetime.now(timezone.utc).isoformat()

    rows = []
    for item in items:
        stats = item.get("statistics") or {}
        author = item.get("author") or {}
        rows.append({
            "collected_at": collected_at,
            "aweme_id": item.get("aweme_id"),
            "author": author.get("unique_id") or author.get("nickname"),
            "description": item.get("desc"),
            "share_url": item.get("share_url"),
            "play_count": stats.get("play_count"),
            "digg_count": stats.get("digg_count"),
            "comment_count": stats.get("comment_count"),
            "share_count": stats.get("share_count"),
        })

    write_header = not CSV_PATH.exists()
    with CSV_PATH.open("a", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=FIELDS)
        if write_header:
            writer.writeheader()
        writer.writerows(rows)

    print("Saved", len(rows), "returned videos")
    print("has_more:", data.get("has_more"), "cursor:", data.get("cursor"))


if __name__ == "__main__":
    main()

Voer bijvoorbeeld python collect.py "productzoekopdracht" uit. De bibliotheek voegt de sleutel toe aan de URL-parameters; het script toont die niet in de terminal. Sla de volledige aanvraag-URL niet op in openbare logs, want daar staat de sleutel in. Gebruik voor een productiesysteem een geheimenopslag en beperk de toegang tot het bestand met momentopnamen.

Hoe berekent u de groei tussen uitvoeringen?

Het script schrijft bewust alle waarnemingen weg in plaats van eerdere waarden te overschrijven. De volgende kleine analyzer koppelt de meest recente twee momentopnamen van elke video en toont het verschil tussen de tellers. Als een statistiek in een van de twee records ontbreekt, wordt het resultaat als niet beschikbaar weergegeven.

Artikel: TikTok-video’s met groeiende betrokkenheid vinden zonder ruwe weergaven te vergelijken
Samenvatting: Een Python-pipeline verzamelt TikTok-video’s die op een zoekopdracht zijn gevonden, slaat weergaven en reacties op in een CSV-bestand en berekent bij een volgende uitvoering de veranderingen voor dezelfde video’s.
Rol van de afbeelding: ondersteunende illustratie 2 — een ander specifiek aspect
Sectie: Hoe berekent u de groei tussen uitvoeringen?
Visueel onderwerp: infographic in het Russisch met de workflow: TikTok-zoekopdracht → teruggegeven video
De gegevensstroom van zoekresultaten naar vergelijking van twee opgeslagen momentopnamen.© jsonscraper · door AI gegenereerde illustratie
import csv
from collections import defaultdict
from pathlib import Path

rows_by_video = defaultdict(list)
with Path("tiktok_video_snapshots.csv").open(encoding="utf-8", newline="") as file:
    for row in csv.DictReader(file):
        if row["aweme_id"]:
            rows_by_video[row["aweme_id"]].append(row)

metrics = ("play_count", "digg_count", "comment_count", "share_count")
for video_id, snapshots in rows_by_video.items():
    snapshots.sort(key=lambda row: row["collected_at"])
    if len(snapshots) < 2:
        continue
    previous, latest = snapshots[-2], snapshots[-1]
    changes = {}
    for metric in metrics:
        old, new = previous[metric], latest[metric]
        changes[metric] = int(new) - int(old) if old and new else None
    print(video_id, changes, latest["share_url"])

Het verschil is het resultaat van twee opgeslagen waarden, geen groeisnelheid met een gegarandeerde meetfrequentie. Als de uitvoeringen met verschillende tussenpozen plaatsvinden, bereken dan ook de tijd tussen collected_at en vergelijk de groei over de werkelijke periode. Tellers kunnen tussen waarnemingen veranderen; de opgeslagen tijdstempels laten zien wanneer de gebruikte waarden zijn opgehaald.

Hoe automatiseert en interpreteert u het rapport?

Voor een dagelijks rapport kunt u het verzamelproces op een server of in CI inplannen, een vaste lijst zoektermen opgeven en het CSV-bestand opslaan of de rijen naar een database schrijven. Verwijder bij herhaalde uitvoeringen dubbele records binnen één momentopname op basis van aweme_id, als de resultaten duplicaten bevatten. Bewaar voor de historie de oorspronkelijke JSON naast de genormaliseerde kolommen; dat maakt herverwerking eenvoudiger als de rapportagestructuur verandert.

In een tabel kunt u de ID en URL van de video, de auteur, beschrijving, verzameltijd en verschillen per statistiek tonen. Sorteren op groei in weergaven helpt de verspreiding te beoordelen; groei in reacties of reposts kan een ander soort respons zichtbaar maken. Voeg deze statistieken niet samen tot één score zonder daar een expliciete regel voor vast te leggen: elke teller heeft een eigen betekenis.

Een planner kan het rapport naar e-mail, een spreadsheet of een intern kanaal sturen, maar dat regelt uw eigen infrastructuur — het bovenstaande voorbeeld verzamelt en analyseert alleen gegevens. Voor een vollediger verzameling kunt u de resultaatpagina’s doorlopen, de cursor opslaan en de lus stoppen wanneer de API meldt dat er geen volgende pagina’s zijn. De zoekcursor is een ondoorzichtige waarde uit het antwoord; bereken die niet zelf. Ook het doorlopen van pagina’s beschrijft alleen de teruggegeven resultaten en garandeert geen volledige lijst van alle passende publicaties.

Het verwachte praktische resultaat is een reproduceerbaar waarnemingslogboek en een tabel met veranderingen voor gevonden video’s. Daarmee kunt u zien welke publicaties hun openbare tellers tussen controles hebben gewijzigd en de specifieke links doorgeven aan een specialist voor inhoudelijke analyse. Meer informatie over het product en toegang tot de API vindt u op de pagina TikTok Scraper API.

Wat controleert u voordat u het proces inplant?

  • Controleer of de externe status van het antwoord ok is voordat u tiktok verwerkt.
  • Controleer beide varianten van de structuur voor zoekresultaten; een ontbrekende lijst moet een lege verzameling opleveren, geen fout.
  • Bewaar de oorspronkelijke waarden en tijdstempels. Een ontbrekende statistiek blijft leeg.
  • Gebruik dezelfde zoekopdrachten en parameters om momentopnamen beter vergelijkbaar te maken; noteer wijzigingen in deze instellingen bij het rapport.
  • Houd de uitvoeringsfrequentie, HTTP-fouten en omvang van de historie in de gaten en volg de toepasselijke platformregels en vereisten voor gegevensverwerking.

Kortom, voor een waarneembaar resultaat hoeft u dezelfde zoekopdracht alleen herhaaldelijk uit te voeren, video’s op basis van aweme_id te identificeren en de opgeslagen statistieken in de tijd te vergelijken. Deze aanpak beantwoordt een afgebakende praktische vraag: welke van de al gevonden video’s hebben hun openbare tellers tussen twee controles gewijzigd? Tegelijk blijven de oorspronkelijke gegevens beschikbaar voor controle en verdere verwerking.

Mensen

Er zijn nog geen mensen vermeld voor dit artikel.

Blijf lezenTikTok-thema’s van makers analyseren: een praktische Python-pijplijn
Lees het volgende artikel

Maak van wat je leest een werkende integratie

Ontdek de socialdata-API's van jsonscraper, test aanvragen en bouw je volgende workflow.

API's verkennen