MediaCrawler 多平台数据采集:改 4 个配置项就有产出,零爬虫代码量
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
MediaCrawler 是一款开源的自媒体多平台数据采集工具,覆盖小红书、抖音、快手、B 站、微博、百度贴吧和知乎。它支持按关键词搜索、按帖子详情、按创作者主页三种方式抓取内容,评论与二级评论均可采集,结果可落成 JSONL、JSON、CSV、Excel 或直接写入数据库。做竞品监控、选题调研和舆情分析,或者想要一套现成框架而又不想自己啃 JS 逆向的读者,直接往下读。
能力总览:一次看全它都能干什么
| 能力 | 对应开关(均在config/base_config.py) | 产出 | 默认状态 |
|---|---|---|---|
| 关键词搜索 | CRAWLER_TYPE = "search",关键词写在KEYWORDS | 搜索结果页的内容列表 + 评论 | 默认模式 |
| 单帖/单视频抓取 | CRAWLER_TYPE = "detail",链接填入各平台配置文件 | 单条内容的完整字段 + 评论 | 需切换 |
| 创作者主页采集 | CRAWLER_TYPE = "creator",主页 URL 填入各平台配置文件 | 该账号发布的全部内容 | 需切换 |
| 一级评论 | ENABLE_GET_COMMENTS | 每篇内容下的一层评论 | 开 |
| 二级评论 | ENABLE_GET_SUB_COMMENTS | 评论下的回复层 | 关 |
| 评论词云 | ENABLE_GET_WORDCLOUD | 一张词云 PNG 图 | 关 |
| 媒体文件下载 | ENABLE_GET_MEDIA | 封面、视频、图片文件 | 关 |
| 代理 IP 池 | ENABLE_IP_PROXY+IP_PROXY_PROVIDER_NAME | 轮换出口 IP,降低风控概率 | 关 |
| 结果落地 | SAVE_DATA_OPTION | jsonl / json / csv / excel / sqlite / postgres / db | jsonl |
所有开关集中在config/base_config.py一个文件里,改完直接运行main.py即可,不需要碰签名算法。需要 CDP(Chrome DevTools Protocol,浏览器调试协议)模式时,它复用你日常在用的 Chrome 和登录态,让请求看起来就是普通用户在操作。
跑起来之前逐项打勾
- Python:确认
python --version不低于 3.11,低了就先升级解释器。 - Chrome:确认
chrome://version显示的版本不低于 144。地址栏进chrome://inspect/#remote-debugging,勾选 Allow remote debugging for this browser instance,页面出现Server running at: 127.0.0.1:9222才算就绪;完整步骤见 CDP模式使用指南。 - Node.js:抖音、知乎两家的签名逻辑跑在 JS 环境里,确认
node -v不低于 v16,没有就去官网装一个。 - 登录态:
SAVE_LOGIN_STATE保持True,登录一次写进本地浏览器数据目录,之后免扫码;换账号就把brower_data/目录删掉重来。 - 控速:
CRAWLER_MAX_SLEEP_SEC默认 2 秒,批量任务建议 3~5 秒;MAX_CONCURRENCY_NUM从 1 起步,跑稳了再慢慢加。 - 浏览器收尾:
AUTO_CLOSE_BROWSER默认在程序结束时关浏览器,调试期改成False可以留住现场。 - 媒体下载:
ENABLE_GET_MEDIA保持False,只要元数据就省带宽也省磁盘。
最小闭环:第一次拿到数据的最短路径
装依赖
git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler cd MediaCrawler uv syncuv sync一条命令装齐全部依赖。
改 4 处配置
打开config/base_config.py,只动这几行:
PLATFORM = "xhs" # xhs | dy | ks | bili | wb | tieba | zhihu KEYWORDS = "平价精华" # 多个关键词用英文逗号分隔 CRAWLER_TYPE = "search" SAVE_DATA_OPTION = "jsonl"ENABLE_CDP_MODE与CDP_CONNECT_EXISTING默认都是True,会自动接上你开了远程调试的 Chrome,这两行不用碰。目录里各模块的分工可以对照 项目代码结构 一文。
跑起来并完成登录验证
python main.py首次运行会打开浏览器,用账号扫码登录(二维码、手机号都支持)。登录状态缓存在本地浏览器数据目录,下一次运行不再扫码。跑完去data/目录找结果文件,文件里有标题、点赞收藏评论数、发布时间、正文,评论区也在里面,就说明这条链路通了。
评论区能直接变成一张词云图吗
先把评论抓够,再让它自动生成。词云开关ENABLE_GET_WORDCLOUD默认是关的,置为True才会出图。
CRAWLER_MAX_COMMENTS_COUNT_SINGLENOTES控制单篇内容最多抓多少条评论,默认 10 条,图会更饱满一些,把这个值调大。- 想要回复层的语料,再把
ENABLE_GET_SUB_COMMENTS置为True,默认关闭。 - 停用词表默认指向
docs/hit_stopwords.txt,一行一个词;品牌词、产品词建议加进CUSTOM_WORDS,让整词被当作一个单元统计,而不是被拆散。 - 生成完的 PNG 落在
data/目录,汇报时"用户到底在讨论什么"一页就能说清。
采集结果怎么落地:文件还是数据库
SAVE_DATA_OPTION一个开关切换出口:
| 形态 | 取值 | 特点 | 适合 |
|---|---|---|---|
| 文件·默认 | jsonl | 每行一个 JSON 对象,追加写入性能最好 | 后续用 Python 处理 |
| 文件·表格 | excel/csv | 带格式的多工作表,打开即看 | 给非技术同事 |
| 文件·单文件 | json | 单 JSON 文件 | 小批量、直接读 |
| 数据库 | sqlite/postgres/db(MySQL) | 自动建表、天然去重 | 长期反复采同一批对象 |
首次入库前执行一次python main.py --init_db sqlite完成建表,就不会撞上"表不存在"的报错。一次性分析选文件,长期监控同一批账号选数据库,导出细节见 数据存储指南。
三个实操任务,照着填就行
- 任务一:小红书竞品声量摸底
- 要做的事:摸清竞品品牌词下热度最高的笔记,以及评论区的情绪方向
- 改哪里:
PLATFORM = "xhs"、CRAWLER_TYPE = "search"、KEYWORDS = "竞品品牌名,品类词",CRAWLER_MAX_NOTES_COUNT调到 50,顺手开ENABLE_GET_WORDCLOUD - 跑完看什么:
data/里的笔记字段文件 + 一张评论区词云图
- 任务二:B 站账号更新监控
- 要做的事:盯住竞品账号的发布节奏和内容方向变化
- 改哪里:
PLATFORM = "bili"、CRAWLER_TYPE = "creator",主页 URL 填入config/bilibili_config.py对应列表 - 跑完看什么:视频标题、播放量、发布时间列表,定期跑一次做对比
- 任务三:知乎话题答案采集
- 要做的事:收集某话题下的高赞回答和讨论热度
- 改哪里:
PLATFORM = "zhihu"、CRAWLER_TYPE = "search",评论抓取数量调大,SAVE_DATA_OPTION换成sqlite - 跑完看什么:按发布时间排序的入库数据,用来做话题热度趋势
排障速查表:现象、原因、处理步骤
| 现象 | 最常见原因 | 处理步骤 |
|---|---|---|
CDP 连不上,Cannot connect to existing browser on port 9222或playwright TimeoutError | 远程调试未开启或 Chrome 未打开 | 确认 Chrome 处于打开状态且版本 ≥ 144;回chrome://inspect/#remote-debugging检查开关和Server running at: 127.0.0.1:9222提示;若弹出确认框点"接受",程序最多等 60 秒人工确认 |
| 扫码后反复弹滑块,登录卡死 | 无真实浏览器特征,触发风控 | 确认ENABLE_CDP_MODE、CDP_CONNECT_EXISTING均为True,别用无痕窗口;HEADLESS设为False后重启,在弹出的浏览器里手动过一次滑块;仍不行就删除brower_data/重登 |
execjs或 JS 相关报错(抖音、知乎) | Node.js 未装或版本过低 | 确认node -v≥ v16,没有就装对应系统的安装包,重启终端后再跑 |
| 前几天正常,现在突然抓不到数据 | 账号触发平台风控 | 先降强度:调大CRAWLER_MAX_SLEEP_SEC、减小单次采集条数;再开代理池换 IP;最后删brower_data/换账号重登 |
代理池通过ENABLE_IP_PROXY = True和IP_PROXY_PROVIDER_NAME(kuaidaili/wandouhttp/static)两个开关控制,服务商密钥的传递方式见 代理使用文档。整张表里最容易被忽略的一点:多数"突然失效"是账号层面的风控,不是代码层面的故障,换账号比改代码更快见效。
接下来怎么走
- 选一个平台、一个关键词,按"最小闭环"跑通第一条链路,确认
data/目录有文件产出。 - 在稳定运行的任务上叠加评论词云和二级评论,把数据从"有"变成"能分析"。
- 需要上量时再引入代理 IP 池和 sqlite/postgres 存储,让同一批对象可以长期反复采集而自动去重。
改一处配置就能出数据的工具已经摆在手上了,先把第一个任务跑起来再说。
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考