如何使用Python和Scrapeless抓取TikTok个人资料
Senior Web Scraping Engineer
TL;DR:
- 个人资料查找从用户名开始。 传递
unique_id而不带@到scraper.tiktok.user.detail。 - 响应包含身份和公共账户字段。 它可以包括
account_id、sec_uid、昵称、个人资料 URL、简历、头像、统计数据、区域字段和账户状态标志。 sec_uid解锁下一步。 当工作流请求账户的公开帖子时,请保存它。- 标识符应保持为字符串。 大型数值型 ID 在下游系统强制转换为数字时可能会丢失精度。
- 个人资料数据不是受众数据。 行动者不会公开关注者列表或受众人口统计信息。
- 免费开始。 新的 Scrapeless 账户通过 Scrapeless 控制面板包含免费的积分。
介绍:将公共账户解析为稳定记录
用户名方便输入,但它只是有用创作者记录的一部分。研究或监控工作还需要一个稳定的账户标识符,即帖子行动者所需的 sec_uid、公共统计数据和足够的上下文以区分具有相似显示名称的账户。
Scrapeless TikTok 个人资料抓取器将查找打包为一个 JSON 请求。然后,Python 可以验证响应,选择所需字段,并在不解析呈现 HTML 的情况下存储紧凑的记录。有关更广泛的行动者地图,请参见 Scrapeless 抓取器 API 指南。
个人资料行动者返回的内容
scraper.tiktok.user.detail 接受 unique_id,可见用户名(不带前导 @)。成功的响应可以包括:
account_id、unique_id和sec_uid- 昵称、个人资料 URL、传记和头像
- 关注者、正在关注、朋友、点赞、视频和喜欢的视频统计
- 账户创建时间、语言和国家
- 验证、隐私和卖家标志
字段可能缺失或为空。私人账户标志是账户状态,而不是访问私有内容的权限。此指南仅使用已记录的公共个人资料响应。
为什么使用 Scrapeless 抓取 API
Scrapeless 在单个 HTTP 终端后运行 TikTok 个人资料行动者,并返回结构化 JSON。这样可以为 Python 作业提供一致的请求封装,并从应用程序中去除页面选择器代码。
API 表面在 TikTok 用户详细信息参考 中进行了记录。Scrapeless 将行动者分组到 抓取 API 下;在设置生产收集计划之前,请检查 当前定价。
先决条件
- 带有标准库的 Python
- 从 Scrapeless 控制面板 获取的 Scrapeless 账户和 API 令牌
- 与项目相关的公共 TikTok 用户名
- 定义的字段列表、用途和保留期限
该示例需要 SCRAPELESS_API_KEY 中的有效令牌。通过 TIKTOK_USERNAME 传递用户名,不带 @。
在 Python 中请求 TikTok 个人资料
代码使用 Python 的内置 HTTP 和 JSON 模块。urllib.request 文档 涵盖请求对象,而 JSON 模块文档 定义了下面使用的编码器和解码器。
python
import json
import os
from urllib.error import HTTPError
from urllib.request import Request, urlopen
ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"
def get_profile(unique_id):
payload = {
"actor": "scraper.tiktok.user.detail",
"input": {"unique_id": unique_id.lstrip("@")},
}
request = Request(
ENDPOINT,
data=json.dumps(payload).encode(),
headers={
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
"content-type": "application/json",
},
method="POST",
)
try:
with urlopen(request, timeout=60) as response:
return json.load(response)
except HTTPError as exc:
detail = exc.read().decode("utf-8", errors="replace")
raise RuntimeError(f"profile request failed: {exc.code} {detail}") from exc
profile = get_profile(os.environ["TIKTOK_USERNAME"])
normalized = {
"account_id": str(profile.get("account_id", "")),
"unique_id": profile.get("unique_id"),
"sec_uid": profile.get("sec_uid"),
"nickname": profile.get("nickname"),
"profile_url": profile.get("profile_url"),
"bio": profile.get("bio"),
"statistics": profile.get("statistics") or {},
"language": profile.get("language"),
"country": profile.get("country"),
"is_verified": profile.get("is_verified"),
"is_private": profile.get("is_private"),
"is_seller": profile.get("is_seller"),
}
print(json.dumps(normalized, ensure_ascii=False, indent=2))
使用 Scrapeless 开始抓取
使用 Scrapeless 增强您的网络抓取和自动化工作流!
今天注册,获取 $5 的免费积分 — 无需信用卡。立即在 Scrapeless 控制面板 领取您的免费积分。
将响应映射到您的数据模型
保留三个身份字段
unique_id 是人可读的账户句柄。 account_id 是账户标识符。 sec_uid 是 scraper.tiktok.user.work 所需的输入。保留所有三个而不是选择一个通用键。
保留统计对象
公共计数是即时值。规范化分析表可以提取选定的计数,但原始统计对象应保持可用,以便架构更改不会擦除源上下文。
将账户标志视为可为空
验证、隐私和卖方标志在存在时是有用的。如果某个字段缺失,则存储未知而不是假值。语言、国家、个人简介和头像也适用相同规则。
附加您自己的集合时间戳
个人资料响应描述了演员运行时的帐户。在调用应用程序中添加 UTC 观察时间戳,并将其与 TikTok 返回的任何帐户创建时间分开。
从用户名获取 sec_uid
个人资料请求是从用户名到发布集合的文档化桥梁。在存储 sec_uid 后,可以使用 scraper.tiktok.user.work 进行第二次请求,并与 cursor 和 count 一起使用。 用户工作演员参考 描述了这些输入。
避免从个人资料 URL 推导 sec_uid 或将其视为与用户名可互换。使用返回的字段。如果缺失,保留个人资料记录并将发布集合标记为该观察不可用。
导出前验证
一小套检查可以防止误导行:
- 确认
unique_id在大小写和前导-@规范化后与预期帐户匹配。 - 保持
account_id为字符串。 - 接受空的个人简介、区域或头像值。
- 仅在下一个作业需要帖子的情况下要求
sec_uid。 - 当请求失败时,记录 HTTP 状态和编辑过的错误主体。
该端点使用正常的 HTTP 语义; RFC 9110 是状态代码含义的主要参考。应用程序日志绝不要包括 API 令牌。
负责任地处理公共个人资料数据
收集最小的字段集以回答研究问题。限制对存储的个人资料记录的访问,结束保留期时删除数据,并避免使用公共计数推断敏感特征。 NIST 隐私框架 提供了一个实用词汇,用于将数据处理映射到隐私风险。
个人资料响应支持账户级别的研究。它不提供关注者的身份、受众人口统计、私人发布或无关剖析的权限。
结论:将个人资料作为身份层使用
TikTok 个人资料抓取器应该从用户名生成稳定、最小的帐户记录。保存 account_id、 unique_id 和 sec_uid,保留可为空字段,给观察添加时间戳,并仅在发布工作流需要时传递 sec_uid。
准备构建您的 TikTok 个人资料数据集了吗?
加入 Scrapeless Discord 或 Telegram 社区 进行实施讨论。当字段列表和存储政策准备好时,创建一个 Scrapeless Dashboard 帐户。
常见问题解答
问:TikTok 个人资料抓取器需要什么输入?
需要 unique_id,即公用用户名(不带前导 @)。
问:sec_uid 用于什么?
sec_uid 是文档化用户工作演员所需的帐户标识符,以返回公共帖子。
问:个人资料演员能返回关注者人口统计数据吗?
不能。它返回公共个人资料字段和帐户统计信息,而不是受众人口统计或关注者列表。
问:TikTok 账户ID应该存储为数字吗?
不。将数字样的标识符存储为字符串,以保持在数据库和分析工具中每个数字的完整性。
问:抓取公共 TikTok 个人资料合法吗?
合法性取决于管辖权、目的、访问方式、数据和适用条款。仅使用公共字段,尽量减少收集,并为计划使用寻求法律建议。
问:工作流需要代理或 DOM 解析器吗?
应用程序代码中没有出现 DOM 解析器,因为托管演员返回结构化数据。Scrapeless 处理基础的收集面。
问:这可以在没有 AI 代理的情况下运行吗?
可以。该 Python 示例是直接的 HTTP 客户端,与代理独立运行。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



