jsonscraper

TikTok Scraper API:使用 jsonscraper 以 JSON 获取视频数据

从 getVideoByID 路由入手,检查 JSON,并通过 cURL 和 Python 处理密钥。

如果应用需要获取某条 TikTok 视频的信息,不妨先发送一个请求,检查它返回的数据。之后可以验证响应,并为存储或分析做好准备。

jsonscraper 的 TikTok Scraper API页面列出了视频、用户、搜索、话题标签、音乐及其他类型数据的路由。下面我们将介绍有文档说明的 getVideoByID 请求,以及安全处理其响应的方法。示例基于服务提供商的资料;使用前,请通过有效密钥和最新文档进行验证。

第一个请求:获取视频信息

咖啡馆里的笔记本电脑、代码和绿植
James Harrison

Postman 中的 getVideoByID 文档指定了 GET 方法和 video_id 参数。示例还展示了 region 和 cache_timeout。服务页面公布的基础地址为 https://tiktok.evelode.com。

使用 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"

示例中的 ID 来自已发布的请求。请将它替换为要查询的视频 ID。将密钥保存在环境变量或密钥管理器中;不要将它加入公开代码仓库、客户端 JavaScript 或日志。

Postman 将 region 描述为地区代码,并指出默认值为 US。文档说明 cache_timeout 的默认缓存时长为 3600 秒;值为 0 时会禁用缓存。如果你的场景需要此参数,可以显式传入:

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"

这是对该路由已公布参数的改写,并不保证所有响应结构都相同,也不意味着禁用缓存适用于所有任务。集成前,请对照当前集合核实身份验证方式和参数:Postman 可能通过已配置的 API Key 传递密钥,而上面的 cURL 示例则将其作为 URL 参数传递。

用 Python 发送同一请求

下面是使用 Python 标准库的示例。它会构造 GET 请求、传递参数,并处理网络错误、HTTP 错误和无效 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()))

这是对有文档说明的请求的改写,并非服务提供商专门测试过的 Python 示例,也未涵盖服务的所有可能响应。由于密钥通过 URL 传递,请勿将完整 URL 输出到日志中,否则可能泄露密钥。

如何检查 JSON 响应

Postman 发布的响应示例中包含 status 字段,以及包含视频和作者数据的嵌套对象 tiktok.aweme_detail。这只是某个响应结构的示例,并不能保证结构始终不变。你可以在getVideoByID 响应示例中查看。

读取嵌套字段时,请逐层检查:

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)

字段名称取自已发布的示例。使用 .get() 检查并不意味着这些字段是必填项;这样做是为了在缺少预期值时也能处理响应。如果应用逻辑依赖某个特定字段,请针对你的场景检查响应中是否包含该字段,并为字段缺失的情况做好处理。

将以下三项检查分开进行会很有帮助:

  1. 传输:是否收到 HTTP 响应,以及响应状态是什么。
  2. 格式:响应正文是否成功解析为 JSON。
  3. 内容:是否包含应用所需的数据。

成功解析 JSON 并不代表响应中一定包含所需对象。排查问题时,请记录技术错误和检查结果,并对密钥进行遮蔽处理。

从单次请求到实际处理流水线

Speedcurve 性能分析
Luke Chesser

制作原型时,发送请求并输出几个值就足够了。若要定期处理数据,请将工作拆分为多个阶段:

请求 → 验证 → 规范化 → 去重 → 存储。

  • 请求。通过有文档说明的路由获取响应,并单独保存技术状态。
  • 验证。确认正文可解析为 JSON,并包含具体任务所需的数据。
  • 规范化。将需要的值映射到自有数据模型。如果应用只需要个别字段,就不要把整个嵌套结构都存入数据库。
  • 去重。先确认标识符存在且适合你的任务,再选用它。不要假设所有响应中始终都能获取该标识符。
  • 存储。如有需要,将请求时间和原始响应与规范化记录分开保存。这样有助于了解应用做了哪些更改。

这些是应用架构方面的建议,并非应归功于该服务的功能。将外部响应与内部模型分开,也能简化变更处理:你可以在验证或规范化阶段定位问题,而不必在整个代码库中排查。

对于重复请求,请预先确定何时更新数据,以及哪些错误值得重试。限制重试次数:无限循环无法修复错误参数或身份验证问题。

缓存与地区

在 getVideoByID 路由说明中,参数 cache_timeout 以秒为单位设置缓存时长:文档列出的默认值为 3600 秒,值为 0 时会禁用缓存。参数 region 被描述为国家代码,文档中的示例为 US。集成前,请对照最新的 Postman 请求文档核实这些信息。

有缓存设置并不能证明某个响应是最新的。如果数据时效性很重要,请使用你自己的场景数据检查重复请求的结果,并选择合适的处理方式。

接下来可以探索哪些任务

产品页面列出了搜索视频和用户、话题标签、地点、音乐和趋势的路由。示例包括 searchVideo、searchHashtag、getUserFeed 和 getTrendingFeed。这是服务提供商公布的路由概览,并非对每条路由的独立验证。请查阅具体路由的文档,了解参数和响应结构;不能直接将 getVideoByID 示例中的信息套用到其他路由。

jsonscraper 建议使用 Postman 集合来配置密钥并发送请求。在编写集成代码之前,这可以作为测试单个路由的便捷方式。服务还列出了一些自动化场景,但应在自己的配置中单独验证具体流程是否兼容。导出或分享集合时,请确认其中没有遗留有效密钥。

在应用中使用前的检查事项

将请求纳入定期处理流程之前,请使用项目所需的视频和参数进行测试:

  • 请求能否使用有效密钥和正确的 ID 成功执行。
  • 应用如何处理无效或缺失的参数。
  • JSON 格式正确但缺少所需字段时会发生什么。
  • 如何处理 HTTP 错误、网络故障和超时。
  • 在你的具体任务中,哪些字段适合用于标识和去重。
  • 如果使用 cache_timeout,改变其值后重复请求的结果会如何变化。

记录检查日期、不包含密钥的参数,以及经过脱敏的响应示例。一次成功请求只能证明特定条件下的特定场景能够运行,并不能证明所有路由和响应都稳定可靠。

从一个可复现的场景开始

对所需视频调用 getVideoByID,检查实际 JSON,并编写能够处理缺失字段和错误的处理程序。之后如有需要,再通过规范化、去重和存储扩展流程。

jsonscraper 文档提供了起点——基础地址和路由概览。生产代码仍须检查具体响应、保护密钥,并考虑数据结构与预期不符的情况。

相关文章

Security · 指南

被遗忘的 API 密钥:如何撤销而不让服务停摆

OpenRouter 表示,其 85 名员工持有 1,000 多个有效密钥——这是公司自查结果,并非行业调查。本文介绍如何核实密钥所有者和依赖关系、实施轮换,并了解密钥管理工具的能力边界。

将阅读内容转化为可用的集成

探索 jsonscraper 社交数据 API、测试请求并构建下一个工作流。

查看 API