← 返回
未分类

抖音热门视频数据爬虫

抖音热门视频数据爬虫 v2.1(含电商带货榜)。使用 Selenium 模拟浏览器抓取 JS 动态渲染的蝉妈妈页面数据, requests+BeautifulSoup 解析提取,输出结构化报告(视频TOP10 + 热搜TOP10 + 电商带货TOP10 + 趋势洞察)+ CSV。 数据源:蝉妈妈 hotAweme(热门视频)、promotionAweme(电商带货)、百度实时热搜。 触发关键词:抖音爬虫、Selenium 抓取、蝉妈妈数据、热门视频榜、电商带货榜、douyin scraper、 动态页面抓取、JS 渲染爬虫、视频级数据采集、带货视频排行。
>这是一个能帮你快速掌握抖音最新爆款动向的数据分析工具。它能一键抓取蝉妈妈平台的核心情报,自动生成包含热门视频TOP10、全网热搜TOP10、电商带货TOP10的结构化报告,并附带趋势洞察。数据可直接导出为CSV表格,让你轻松拿捏流量密码与选品方向。
媛媛的脸
未分类 community v1.0.0 1 版本 100000 Key: 无需
★ 1
Stars
📥 94
下载
💾 0
安装
1
版本
#latest

概述

douyin-selenium-scraper — 抖音数据爬虫 v2.1

> 一键抓取抖音热门视频 / 电商带货 / 热搜榜 TOP10,输出结构化报告 + CSV。

目录


快速开始

前置条件

条件要求
------------
Python3.10+(推荐 3.13)
Chrome 浏览器已安装(webdriver-manager 自动匹配驱动)
虚拟环境项目目录下 .venv/

安装依赖

python -m venv .venv
.venv/Scripts/pip install selenium requests beautifulsoup4 pandas lxml webdriver-manager

运行

.venv/Scripts/python.exe douyin_scraper.py

预期产出

reports/
├── douyin_report_20260526_111825.txt    # 结构化报告(四段式)
├── douyin_hot_videos_20260526_111825.csv  # 热门视频原始数据
└── douyin_ecommerce_20260526_111825.csv   # 电商带货原始数据

输出模板

报告文件 .txt 结构(四段式)

============================================================
抖音热门视频 TOP 10
============================================================

🏆 Top 1 - {视频标题}
达人:{作者名}
热度:{点赞数格式化}
详情链接:https://www.douyin.com/video/{ID}

🥈 Top 2 - ...
...(共10条)

============================================================
抖音热榜 TOP 10
============================================================

🏆 Top 1 - {热搜词}
热度:{万级热度值}
详情链接:https://www.douyin.com/search/{URL编码词}
...(共10条)

============================================================
电商带货热榜视频 TOP 10
============================================================

🏆 Top 1 - {商品标题(含话题标签+挂车商品信息)}
达人:{作者名}
热度:{点赞数格式化}
详情链接:https://www.douyin.com/video/{ID}
...(共10条)

============================================================
趋势洞察
============================================================

赛道分布:萌宠(1条)、搞笑(1条)、美妆时尚(1条)...
热搜特征:财经商业 / 社会民生 / ...
超级爆款:{标题} 等 N 条视频突破30万点赞
电商热品:食品饮料(3条)、美妆护肤(2条)、家居日用(1条)...
带货王:{标题}(@达人) 以 X万 点赞领跑
今日节点:体育赛事、教育考试、天气气候... 相关内容占据主导
黑马观察:{冷门内容}(@达人)等冷门赛道内容异军突起

数据更新时间:YYYY年MM月DD日 HH:MM

CSV 文件字段

热门视频 CSV (douyin_hot_videos_*.csv):

字段说明示例
------------------
排名1-101
视频标题含话题标签奶牛猫是超级英雄! #黑猫警长 #萌宠
达人清理后昵称我是小猫
点赞数格式化(X.X万)38.6万
转发数蝉妈妈无此数据,为空
评论数整数值1234
播放量格式化500.2万
赛道分类自动标注(18类)萌宠
视频链接douyin.com 原地址https://www.douyin.com/video/7643539738272592113
一句话点评AI增强时填充

电商带货 CSV (douyin_ecommerce_*.csv):字段同上,「赛道分类」替换为电商品类。

排名徽章

  • 🏆 第1名
  • 🥈 第2名
  • 🥉 第3名
  • 第4-10名 无徽章

代码架构

文件位置

<workspace>/
├── douyin_scraper.py          # 主脚本(~1100行)
├── .venv/                     # Python虚拟环境 + 依赖
└── reports/                   # 输出目录(自动创建)

核心模块

douyin_scraper.py
│
├── 配置区(第38-76行)
│   ├── OUTPUT_DIR / TODAY / NOW_TIME          # 输出路径和时间戳
│   ├── TARGET_URLS                            # 热门视频榜 URL 字典
│   ├── ECOMMERCE_URLS                         # 电商带货榜 URL 字典
│   ├── HEADERS                                # 请求头 UA
│   └── PAGE_LOAD_TIMEOUT / ELEMENT_WAIT_TIMEOUT
│
├── 浏览器初始化(第83-117行)
│   └── create_driver() → headless Chrome + stealth JS 注入
│
├── 页面抓取(第125-179行)
│   ├── fetch_page_selenium() → Selenium 渲染 + 3次滚动加载
│   └── fetch_page_requests() → 纯 requests 备用方案
│
├── 数据解析(第187-429行)★核心
│   ├── parse_chanmama()        → 三策略降级入口
│   │   ├── 策略1: 表格 <table> 解析(主力)
│   │   ├── 策略2: CSS卡片列表匹配
│   │   └── 策略3: 正则兜底全文提取
│   │
│   ├── _extract_douyin_share_links() → 提取 iesdouyin 分享链接
│   ├── convert_ies_to_douyin()            → 转换为 douyin.com 地址
│   ├── clean_author_name()                → 达人名清理(去粉丝数/时间戳)
│   ├── clean_title()                      → 标题清理
│   ├── _extract_from_cells()              → 表格行→字典
│   └── _extract_from_card() / _fallback_extract()
│
├── 数据清洗工具(第437-485行)
│   ├── _parse_number()     → "38.6万" → 386000
│   ├── _safe_int()
│   └── _deduplicate_and_rank()           → 去重 + 排序 + 补充排名
│
├── 分类引擎(第488-580行)
│   ├── categorize_video()   → 视频18赛道自动分类
│   └── _categorize_ecommerce() → 商品7大品类自动分类
│
├── 输出模块(第520-565行 / 887-977行)
│   ├── save_to_csv()        → UTF-8-BOM CSV 写入
│   ├── save_report()        → 四段式文本报告生成
│   └── _format_num()        → 数字格式化为可读字符串
│
├── 热搜抓取(第573-770行)
│   ├── fetch_hot_search_top10()      → 调度入口
│   ├── _fetch_baidu_realtime()       → 百度JSON提取(主源)★
│   ├── _fetch_tophub_douyin()       → 备用(已弃用)
│   └── _fetch_hot_selenium()         → 备用(已弃用)
│
├── 趋势洞察(第778-893行)★AI分析
│   ├── generate_trend_insights()     → 5维度分析入口
│   │   ├── 维度1: 赛道分布统计
│   │   ├── 维度2: 热搜话题分类(_classify_topics)
│   │   ├── 维度3: 超级爆款识别(>30万点赞)
│   │   ├── 维度4: 电商热点分析(新增)
│   │   ├── 维度5: 今日节点事件关键词
│   │   └── 维度6: 黑马观察(冷门赛道高赞)
│   └── _classify_topics()
│
└── 主流程 main()(第972-1053行)
    ├── Step 1: 初始化浏览器
    ├── Step 2: 抓取热门视频(TARGET_URLS)
    ├── Step 3: 抓取电商带货(ECOMMERCE_URLS) ★新增
    ├── Step 4: 抓取热搜榜(百度实时热搜)
    ├── Step 5: 写入热门视频CSV
    ├── Step 5b: 写入电商带货CSV ★新增
    ├── Step 6: 生成四段式报告
    └── Step 7: 打印预览 + 关闭浏览器

数据源与 URL

数据源URL 用途解析方式数据量
------------------------------------
蝉妈妈·热门视频https://chanmama.com/awemeRank/hotAweme表格 解析
TOP 10
蝉妈妈·电商带货https://www.chanmama.com/awemeRank/promotionAweme/表格复用同逻辑TOP 10
百度实时热搜https://top.baidu.com/board?tab=realtimeJSON正则提取 word+hotScoreTOP 10

URL 注意事项

  • 电商带货榜正确地址含尾部斜杠 /productRank/* 系列 URL 均返回404
  • 蝉妈妈所有榜单页均为 SPA,必须用 Selenium 渲染,requests 只拿到 3.8KB 空壳
  • 百度热搜是纯服务端渲染,可直接 requests 提取嵌入的 JSON 数据

分类体系

视频18赛道分类 (categorize_video)

赛道关键词示例
-----------------
剧情剧情, 短剧, 演绎, 段子
搞笑搞笑, 沙雕, 爆笑, 梗
体育篮球, NBA, 足球, 运动, 健身
音乐唱歌, 翻唱, 音乐, 吉他, 说唱
游戏游戏, 王者, 原神, LOL, 手游
美食美食, 做饭, 吃播, 烧烤
情感情感, 恋爱, 分手, 治愈
社会热点新闻, 热点, 官方, 通报
二次元动漫, cos, 国漫, 日漫
创意特效, AI, 动画, 手工, DIY
美妆时尚化妆, 穿搭, 变装, 口红
汽车汽车, 跑车, 特斯拉, 比亚迪
萌宠猫, 狗, 宠物, 猫咪, 狗狗
教育科普科普, 知识, 学习, 考试
舞蹈跳舞, 街舞, 编舞
旅行旅游, 打卡, 民宿
其他未匹配任何关键词

商品7大品类分类 (_categorize_ecommerce)

品类关键词示例
-----------------
美妆护肤口红, 粉底, 面膜, 精华, 雅诗兰黛
服装鞋包连衣裙, T恤, 卫衣, 鞋子, 包包
食品饮料零食, 坚果, 奶茶, 巧克力, 方便面
家居日用纸巾, 洗衣液, 收纳, 清洁剂
数码家电手机壳, 充电宝, 耳机, 小家电
母婴亲子尿不湿, 奶粉, 玩具, 童装
运动户外瑜伽垫, 帐篷, 泳衣, 健身器材

完整操作流程

标准模式:运行脚本 → 读取报告

# Step 1: 执行爬虫
cd <workspace>
.venv/Scripts/python.exe douyin_scraper.py

# Step 2: 查看最新报告
cat reports/douyin_report_$(date +%Y%m%d)*.txt

增强模式:爬虫 + AI点评 + 推送腾讯文档

# Step 1: 运行爬虫获取原始数据
.venv/Scripts/python.exe douyin_scraper.py
LATEST_REPORT=$(ls -t reports/douyin_report_*.txt | head -1)

# Step 2: 读取CSV进行AI增强
# (由Agent执行以下步骤)
#   a. 为每条视频补充一句话点评(分析爆火原因/传播特征)
#   b. 识别异常数据或值得关注的趋势变化
#   c. 与前一日数据对比,标记新上榜/掉榜/排名大幅变动

# Step 3: 格式化为 MDX → 推送到腾讯文档
# 调用 mcp__tencent-docs__create_smartcanvas_by_mdx
# content_format: mdx
# 使用 ColumnList / Callout / Table 等组件排版

仅抓取单榜单(修改配置临时运行)

如只需某一块数据,可临时修改 main() 函数注释掉不需要的 Step:

def main():
    driver = create_driver()
    # ... 只保留需要的Step ...
    # 例:只跑电商带货
    # html = fetch_page_selenium(driver, list(ECOMMERCE_URLS.values())[0])
    # records = parse_chanmama(html)
    # ...

集成自动化

Automation Prompt 模板

你是一个定时运行的抖音数据分析助手。每天自动执行以下任务:

#### Step 1:运行 Selenium 爬虫
在 workspace 目录下执行:

.venv/Scripts/python.exe douyin_scraper.py

等待执行完成。

#### Step 2:读取最新报告
读取 reports/ 下最新的 douyin_report_*.txt 和两个 CSV 文件。

#### Step 3:AI 增强
基于数据进行分析:
- 为每条视频写一句话点评(爆火原因/传播点)
- 对比昨日数据(如有),标注排名变动(↑↓新)
- 识别今日特别值得关注的内容

#### Step 4:格式化并推送
将增强后的报告格式化为 Markdown,
通过 mcp__tencent-docs API 推送到腾讯文档。

#### Fallback
如果爬虫失败(日志出现 ❌),降级为 WebSearch 方式:
搜索「抖音今日热门视频」「抖音电商带货」等关键词,
手动整理 TOP10 后继续后续步骤。

已有自动化任务

  • ID: automation-1779269694504
  • 状态: ACTIVE
  • 计划: 每日 10:00 执行
  • Prompt: 已更新为 V2 Selenium 版本(含三数据源 + 四段式报告)

排障指南

常见问题

症状原因解决方案
----------------------
所有策略均未提取到有效数据蝉妈妈改版了DOM结构用Selenium打开页面后打印关键class名称,更新CSS选择器
电商带货显示(本次未获取到)URL错误(返回404)使用正确的 promotionAweme/ 地址
Permission denied 写入CSV上次运行的文件仍被占用文件名已加 _HHMMSS 时间戳后缀防冲突;若仍报错检查是否有其他进程持有
ChromeDriver 版本不匹配Chrome自动更新了删除缓存 ~/.wdm/drivers/ 重启即可重新下载
百度热搜返回空列表百度改版了HTML中的JSON格式检查 "word""hotScore" 正则是否仍能匹配
超时崩溃网络慢或蝉妈妈响应慢增大 PAGE_LOAD_TIMEOUT 到 45s 或 ELEMENT_WAIT_TIMEOUT 到 30s
反爬验证码触发访问太频繁每天≤3次,已有 stealth 处理但仍需控制频率
headless模式下白屏Windows沙箱限制去掉 --headless=new 改为有头模式调试一次

关键技术决策记录

  1. iesdouyin → douyin 链接转换:蝉妈妈表格不含直链,但每个视频行的隐藏 iesdouyin.com/share/video/{ID} 分享链接。提取后按规则转换为标准 douyin.com/video/{ID} 地址,实测 10/10 成功率。
  1. 百度热搜双正则配对:百度HTML中嵌入的JSON,desc 字段极长(数百字符含引号),无法用单个 [^}]* 正则跨越。解法:分别提取所有 word 和所有 hotScore,按数组索引一一配对。
  1. 电商榜URL发现productRank/* 全线返回404。从蝉妈妈导航栏链接中定位到正确地址 awemeRank/promotionAweme/。经验:SPA站点URL变更频繁,应优先从导航元素动态发现而非硬编码。
  1. 达人名污染清理:蝉妈妈表格作者列常含 "昵称 粉丝10,505 05-25 03:18" 格式。用两轮正则先去时间戳再去除粉丝数,保底长度校验防止过度清理。

Verification Checklist

运行成功标志(全部满足才算成功):

快速验证命令

.venv/Scripts/python.exe -c "
import csv, glob, os

# 检查最新CSV
csv_files = sorted(glob.glob('reports/douyin_hot_videos_*.csv'), reverse=True)
ec_files = sorted(glob.glob('reports/douyin_ecommerce_*.csv'), reverse=True)
txt_files = sorted(glob.glob('reports/douyin_report_*.txt'), reverse=True)

print(f'=== 最新文件 ===')
for f in csv_files[:1]:
    rows = list(csv.DictReader(open(f, encoding='utf-8-sig')))
    print(f'视频CSV: {os.path.basename(f)} → {len(rows)}条')
for f in ec_files[:1]:
    rows = list(csv.DictReader(open(f, encoding='utf-8-sig')))
    print(f'电商CSV: {os.path.basename(f)} → {len(rows)}条')
for f in txt_files[:1]:
    size = os.path.getsize(f)
    has_ec = '电商带货' in open(f, encoding='utf-8').read()
    print(f'报告TXT: {os.path.basename(f)} → {size}B, 含电商板块: {has_ec}')
"

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-05-28 10:59 安全 安全

🔗 相关推荐

data-analysis

AdMapix

fly0pants
AdMapix 原始数据层,提供广告创意、应用、排名、下载/收入及市场元数据。返回 AdMapix API 的结构化 JSON;调用方...
★ 298 📥 142,976
data-analysis

Tavily 搜索

jacky1n7
通过 Tavily API 进行网页搜索(Brave 替代方案)。当用户要求搜索网页、查找来源或链接,且 Brave 网页搜索不可用时使用。
★ 278 📥 101,558
data-analysis

Data Analysis

ivangdavila
{"answer":"数据分析与可视化。查询数据库、生成报告、自动化电子表格,将原始数据转化为清晰可行的见解。适用于:(1) 您……"}
★ 216 📥 71,536