如何通过非官方TikTok API获取更多话题相关账号信息?
解决TikTok非官方API获取话题下更多账号信息的问题
问题根源
你遇到的情况是因为TikTok本身对非官方API的请求有限流和分页限制,即使设置count=50000,API也无法一次性拉取大量数据;同时话题下的视频可能存在大量重复作者,导致最终收集到的账号数量远低于预期。
可行解决方案
以下是几个能帮你获取更多账号信息的实用方法:
手动处理分页循环
TikTok的接口基于游标(cursor)分页,默认只会返回少量数据页。你需要通过循环不断传递上一页的游标来获取后续数据,直到没有更多内容或达到目标账号数量。添加请求延迟
频繁请求会触发TikTok的反爬机制,导致请求被拦截或限制。在每次请求后添加短暂延迟,模拟真人操作频率,降低被限流的概率。作者去重
同一个作者可能发布多条带该话题的视频,收集时通过作者ID去重,避免重复统计,同时能更快达到目标账号数量。
修改后的代码示例
from TikTokApi import TikTokApi import pandas as pd import time hashtag = "ugc" target_account_count = 10000 # 目标账号数量 request_delay = 2 # 请求间隔(秒) cursor = 0 collected_authors = {} # 用字典存储作者ID为key,自动去重 with TikTokApi() as api: tag = api.hashtag(name=hashtag) print(tag.info()) while len(collected_authors) < target_account_count: try: # 按游标拉取单页视频(每页100条是比较稳妥的数量) videos = tag.videos(count=100, cursor=cursor) if not videos: print("没有更多视频可获取") break # 提取作者信息并去重存储 for video in videos: author = video.author.as_dict author_id = author.get('id') if author_id not in collected_authors: collected_authors[author_id] = author # 更新游标,准备下一页请求 cursor = videos[-1].cursor print(f"已收集{len(collected_authors)}个账号,下一页游标:{cursor}") # 添加延迟避免触发限流 time.sleep(request_delay) except Exception as e: print(f"请求出错:{str(e)}") # 出错时延长延迟再重试 time.sleep(5) continue # 转换为DataFrame并输出 df = pd.DataFrame(collected_authors.values()) print(df) print(f"最终收集到{len(df)}个不重复账号")
额外注意事项
- 即使按上述方法操作,TikTok仍可能根据你的IP、请求频率等限制数据返回量,如果遇到持续无法获取更多数据,可尝试更换IP或进一步降低请求频率。
- 非官方API本身存在稳定性问题,若某版本的
videos()方法游标参数不生效,可查看API的最新文档调整参数逻辑。
内容的提问来源于stack exchange,提问作者Jeremy Zethof
相关产品推荐
相关产品推荐

