这是一个针对 TikTok.com 的非官方 Python API 封装。使用此 API,你可以获取热门内容、抓取特定用户信息等更多数据。
本 API 旨在从 TikTok 上“获取数据”。它不能用于代表用户在 TikTok 上“发布或上传”内容。它不支持任何需要用户身份验证的路由;如果你无法在“未登录状态”下通过浏览器完成的操作,这个库也无法完成。
以下赞助商为展示位付费,或为我个人的联盟推广链接(可能会获得佣金)。除此之外,我与他们没有任何其他关联。TikTokAPI 包将始终保持免费、开源。
被主流的网红营销与社交媒体监测平台所信任。
包括视频、用户、评论、店铺、商品与趋势等——一站式搞定。
完整文档见:文档站点
按照以下步骤开始使用本 API。
注意:如果你想系统学习网页爬虫,请查看我开源免费的课程:Everything Web Scraping
注意:需要 Python 3.9 及以上版本
如果遇到问题,请先查看仓库里的已关闭 issue;如果你发现久远的 issue 与现在的问题相同,也可以新开一个 issue。该代码库会受到 TikTok 更新的影响,有时需要一些时间来适配。
pip install TikTokApi
python -m playwright install如果你更喜欢视频讲解,关于安装与设置可以看这段 YouTube 视频(版本可能略旧,但安装步骤相同)。
如果你想快速了解如何在 Python 中监听 TikTok Live 事件,也可以看这段短视频。
将本仓库克隆到本地(或只拷贝 Dockerfile,因为它会从 pip 安装 TikTokApi),然后运行以下命令:
docker pull mcr.microsoft.com/playwright:focal
docker build . -t tiktokapi:latest
docker run -v TikTokApi --rm tiktokapi:latest python3 your_script.py注意:以上示例假设你的脚本名为 your_script.py,且位于仓库根目录。
-
空响应异常(EmptyResponseException)——表示 TikTok 拦截了请求并检测到你是机器人。这可能来自你的环境设置或库本身
- 你可能需要代理才能稳定抓取 TikTok。我做了一节代理课程,讲解住宅代理与数据中心代理的区别等内容
-
“Browser has no attribute …”——请确认已执行
python3 -m playwright install。若问题仍在,请参考 playwright-python 的快速上手指南 -
“API 方法返回协程(Coroutine)”——库中很多方法是异步的,请确保在你的程序中使用
await正确调用
下面是一个示例,用于获取 TikTok 上最新的热门视频。更多示例见 examples 目录。
注意:如果你想学习通过逆向工程进行网页抓取,请查看我开源免费的课程:Web Scraping with Reverse Engineering
from TikTokApi import TikTokApi
import asyncio
import os
ms_token = os.environ.get("ms_token", None) # 从 tiktok.com 的浏览器 Cookie 中获取你的 ms_token
async def trending_videos():
async with TikTokApi() as api:
await api.create_sessions(ms_tokens=[ms_token], num_sessions=1, sleep_after=3, browser=os.getenv("TIKTOK_BROWSER", "chromium"))
async for video in api.trending.videos(count=30):
print(video)
print(video.as_dict)
if __name__ == "__main__":
asyncio.run(trending_videos())在仓库根目录下,使用 -m 方式可直接运行示例脚本:
python -m examples.trending_example你可以通过 .as_dict 访问对象创建时的完整数据字典。对于视频对象,可能类似于这个示例。由于 TikTok 会不定期调整数据结构,建议在使用时先了解字典结构。