Google Colab中使用TikTokApi结合Selenium时遭遇width属性错误及byUsername与getUsername差异疑问
解决TikTokApi + Selenium在Colab中调用byUsername方法的AttributeError问题
你遇到的问题根源在于byUsername方法需要依赖TikTokApi实例的width和height属性来构造符合TikTok校验规则的请求,但在Selenium模式下这些属性没有被自动初始化,而getUser方法恰好不需要这些参数,所以能正常运行。下面是具体的解决步骤和方法差异说明:
一、快速修复方案
只需在创建TikTokApi实例后,手动添加缺失的屏幕尺寸属性即可:
- 先确保安装步骤完整(Colab环境是临时的,每次重启都需要重新执行):
!pip install TikTokApi !apt-get update !apt install chromium-chromedriver !cp /usr/lib/chromium-browser/chromedriver /usr/bin
- 初始化API并补充必要属性:
from TikTokApi import TikTokApi # 创建API实例 api = TikTokApi.get_instance(use_selenium=True, executablePath="/usr/bin/chromedriver") # 手动添加模拟桌面浏览器的屏幕宽高属性 api.width = 1920 api.height = 1080 # 现在调用byUsername就不会报错了 username = 'fcbarcelona' user_videos = api.byUsername(username, count=20)
二、版本兼容备选方案
如果上面的方法仍无效,可能是TikTokApi的版本兼容性问题,建议安装一个经过验证的稳定版本:
!pip uninstall -y TikTokApi !pip install TikTokApi==5.1.2
之后再执行上面的初始化和属性补充步骤即可。
三、getUser和byUsername的核心差异
- getUser:这个方法的核心目标是获取用户的基础资料(用户ID、头像、简介等),仅附带返回少量默认数量的用户视频(你看到的16条是默认返回量),它的请求逻辑简单,不需要依赖浏览器窗口尺寸这类环境参数,因此能正常运行。
- byUsername:这个方法是专门为批量获取用户视频设计的,会模拟真实浏览器的请求头(包含屏幕宽高信息),TikTok服务器会校验这些参数,缺失就会触发属性错误。
内容的提问来源于stack exchange,提问作者RiegelGestr
相关产品推荐
相关产品推荐

