You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python爬取TikTok最新视频报'NoneType'无get属性错误如何解决

报错原因
  • 直接原因:soup.find("a", class_="")没有匹配到任何元素返回None,调用get()方法触发属性错误。原来匹配空类名a标签的逻辑本身就极其不稳定,完全依赖页面临时结构,只要平台更新前端代码就会失效。
  • 根本原因:目前TikTok用户主页内容全部为JavaScript动态渲染,直接用requests请求拿到的只有初始空白页面模板,视频相关内容需要浏览器执行JS拉取接口数据后才会渲染,静态解析HTML无法找到对应元素。
解决方案

推荐优先用模拟浏览器的方案,适配成本最低:

第一步:安装依赖

执行命令安装需要的库:
pip install selenium webdriver-manager beautifulsoup4

第二步:调整后代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import time

# 目标用户主页地址
user_home = "https://www.tiktok.com/@dava_m"
# 初始化Chrome浏览器,自动适配驱动版本
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(user_home)
# 等待页面渲染完成,网络差可以适当调大等待时间
time.sleep(3)
# 下滑页面触发视频列表加载
driver.execute_script("window.scrollTo(0, 500)")
time.sleep(2)

# 解析页面内容
soup = BeautifulSoup(driver.page_source, "html.parser")
# 当前视频a标签类名为e1cg0wnj1,后续如果平台改了类名自行F12查看更新即可
latest_video_tag = soup.find("a", class_="e1cg0wnj1")
if latest_video_tag:
    print("最新视频链接:", latest_video_tag.get("href"))
else:
    print("未匹配到视频元素,可检查类名是否更新")

# 关闭浏览器
driver.quit()
补充说明

如果不想启动浏览器,可以直接抓TikTok公开的用户视频接口,接口返回JSON格式,直接提取第一条视频链接即可,性能更高,但需要处理请求头和接口签名校验,适配成本更高。
请求时建议加随机时间间隔,定期更换User-Agent,避免触发反爬限制。

内容的提问来源于stack exchange,提问作者ggindinson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:04