1- # 🔥 自媒体平台爬虫🕷️MediaCrawler🔥
2- <a href =" https://trendshift.io/repositories/8291 " target =" _blank " ><img src =" https://trendshift.io/api/badge/repositories/8291 " alt =" NanmiCoder%2FMediaCrawler | Trendshift " style =" width : 250px ; height : 55px ;" width =" 250 " height =" 55 " /></a >
1+ # 🔥 MediaCrawler - 自媒体平台爬虫 🕷️
2+
3+ <div align =" center " >
4+
5+ <a href =" https://trendshift.io/repositories/8291 " target =" _blank " >
6+ <img src =" https://trendshift.io/api/badge/repositories/8291 " alt =" NanmiCoder%2FMediaCrawler | Trendshift " style =" width : 250px ; height : 55px ;" width =" 250 " height =" 55 " />
7+ </a >
38
49[ ![ GitHub Stars] ( https://img.shields.io/github/stars/NanmiCoder/MediaCrawler?style=social )] ( https://github.com/NanmiCoder/MediaCrawler/stargazers )
510[ ![ GitHub Forks] ( https://img.shields.io/github/forks/NanmiCoder/MediaCrawler?style=social )] ( https://github.com/NanmiCoder/MediaCrawler/network/members )
611[ ![ GitHub Issues] ( https://img.shields.io/github/issues/NanmiCoder/MediaCrawler )] ( https://github.com/NanmiCoder/MediaCrawler/issues )
712[ ![ GitHub Pull Requests] ( https://img.shields.io/github/issues-pr/NanmiCoder/MediaCrawler )] ( https://github.com/NanmiCoder/MediaCrawler/pulls )
813[ ![ License] ( https://img.shields.io/github/license/NanmiCoder/MediaCrawler )] ( https://github.com/NanmiCoder/MediaCrawler/blob/main/LICENSE )
914
15+ </div >
16+
1017> ** 免责声明:**
1118>
1219> 大家请以学习为目的使用本仓库⚠️⚠️⚠️⚠️,[ 爬虫违法违规的案件] ( https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China ) <br >
1522>
1623> 点击查看更为详细的免责声明。[ 点击跳转] ( #disclaimer )
1724
18- # 仓库描述
25+ ## 📖 项目简介
26+
27+ 一个功能强大的** 多平台自媒体数据采集工具** ,支持小红书、抖音、快手、B站、微博、贴吧、知乎等主流平台的公开信息抓取。
1928
20- ** 小红书爬虫** ,** 抖音爬虫** , ** 快手爬虫** , ** B站爬虫** , ** 微博爬虫** ,** 百度贴吧爬虫** ,** 知乎爬虫** ...。
21- 目前能抓取小红书、抖音、快手、B站、微博、贴吧、知乎等平台的公开信息。
29+ ### 🔧 技术原理
2230
23- 原理:利用[ playwright] ( https://playwright.dev/ ) 搭桥,保留登录成功后的上下文浏览器环境,通过执行JS表达式获取一些加密参数
24- 通过使用此方式,免去了复现核心加密JS代码,逆向难度大大降低。
31+ - ** 核心技术** :基于 [ Playwright] ( https://playwright.dev/ ) 浏览器自动化框架登录保存登录态
32+ - ** 无需JS逆向** :利用保留登录态的浏览器上下文环境,通过 JS 表达式获取签名参数
33+ - ** 优势特点** :无需逆向复杂的加密算法,大幅降低技术门槛
2534
26- # 功能列表
35+ ## ✨ 功能特性
2736| 平台 | 关键词搜索 | 指定帖子ID爬取 | 二级评论 | 指定创作者主页 | 登录态缓存 | IP代理池 | 生成评论词云图 |
2837| ------ | ---------- | -------------- | -------- | -------------- | ---------- | -------- | -------------- |
2938| 小红书 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
3443| 贴吧 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
3544| 知乎 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
3645
37- ### MediaCrawlerPro重磅发布啦!!!
38- > 主打学习成熟项目的架构设计,不仅仅是爬虫,Pro中的其他代码设计思路也是值得学习,欢迎大家关注!!!
3946
40- [ MediaCrawlerPro] ( https://github.com/MediaCrawlerPro ) 版本已经重构出来了,相较于开源版本的优势:
41- - 支持断点续爬功能(重点!)
42- - 多账号+IP代理支持(重点!)
43- - 去除Playwright依赖,使用更加简单
44- - 支持linux环境使用
45- - 代码重构优化,更加易读易维护(解耦JS签名逻辑)
46- - 代码质量更高,对于构建更大型的爬虫项目更加友好
47- - 完美的架构设计,更加易扩展,源码学习的价值更大
48- - Pro中新增全新的自媒体视频下载器桌面端软件(适合学习全栈项目开发)
49- - 支持多个平台的首页信息流推荐(HomeFeed)
47+ ### 🚀 MediaCrawlerPro 重磅发布!
5048
49+ > 专注于学习成熟项目的架构设计,不仅仅是爬虫技术,Pro 版本的代码设计思路同样值得深入学习!
5150
52- # 安装部署方法
53- > 开源不易,希望大家可以Star一下MediaCrawler仓库!!!!十分感谢!!! <br >
51+ [ MediaCrawlerPro] ( https://github.com/MediaCrawlerPro ) 相较于开源版本的核心优势:
5452
55- ## 前置依赖
53+ #### 🎯 核心功能升级
54+ - ✅ ** 断点续爬功能** (重点特性)
55+ - ✅ ** 多账号 + IP代理池支持** (重点特性)
56+ - ✅ ** 去除 Playwright 依赖** ,使用更简单
57+ - ✅ ** 完整 Linux 环境支持**
5658
57- ### uv 安装
58- > 在进行下一步操作之前, 请确保电脑上已经安装了uv,[ uv安装地址] ( https://docs.astral.sh/uv/getting-started/installation )
59- >
60- > uv是否安装成功的验证, 终端输入命令:uv --version 如果正常显示版本好,那证明已经安装成功
61- >
62- > 强力安利 uv 给大家使用,简直是最强的python包管理工具
63- >
59+ #### 🏗️ 架构设计优化
60+ - ✅ ** 代码重构优化** ,更易读易维护(解耦 JS 签名逻辑)
61+ - ✅ ** 企业级代码质量** ,适合构建大型爬虫项目
62+ - ✅ ** 完美架构设计** ,高扩展性,源码学习价值更大
63+
64+ #### 🎁 额外功能
65+ - ✅ ** 自媒体视频下载器桌面端** (适合学习全栈开发)
66+ - ✅ ** 多平台首页信息流推荐** (HomeFeed)
67+ - [ ] ** 基于自媒体平台的AI Agent正在开发中 🚀🚀**
68+
69+ 点击查看:[ MediaCrawlerPro 项目主页] ( https://github.com/MediaCrawlerPro ) 更多介绍
6470
65- ### nodejs安装
66- 项目依赖nodejs,安装地址:https://nodejs.org/en/download/
67- > 如果要用python的原生venv来管理环境的话,可以参考: [ 原生环境管理文档] ( docs/原生环境管理文档.md )
71+ ## 🚀 快速开始
6872
69- ### python包安装
73+ > 💡 ** 开源不易,如果这个项目对您有帮助,请给个 ⭐ Star 支持一下!**
74+
75+ ## 📋 前置依赖
76+
77+ ### 🚀 uv 安装(推荐)
78+
79+ 在进行下一步操作之前,请确保电脑上已经安装了 uv:
80+
81+ - ** 安装地址** :[ uv 官方安装指南] ( https://docs.astral.sh/uv/getting-started/installation )
82+ - ** 验证安装** :终端输入命令 ` uv --version ` ,如果正常显示版本号,证明已经安装成功
83+ - ** 推荐理由** :uv 是目前最强的 Python 包管理工具,速度快、依赖解析准确
84+
85+ <details >
86+ <summary >🔗 <strong >使用 Python 原生 venv 管理环境(不推荐)</strong ></summary >
87+
88+ #### 创建并激活 Python 虚拟环境
89+
90+ > 如果是爬取抖音和知乎,需要提前安装 nodejs 环境,版本大于等于:` 16 ` 即可
91+
92+ ``` shell
93+ # 进入项目根目录
94+ cd MediaCrawler
95+
96+ # 创建虚拟环境
97+ # 我的 python 版本是:3.9.6,requirements.txt 中的库是基于这个版本的
98+ # 如果是其他 python 版本,可能 requirements.txt 中的库不兼容,需自行解决
99+ python -m venv venv
100+
101+ # macOS & Linux 激活虚拟环境
102+ source venv/bin/activate
103+
104+ # Windows 激活虚拟环境
105+ venv\S cripts\a ctivate
106+ ```
107+
108+ #### 安装依赖库
109+
110+ ``` shell
111+ pip install -r requirements.txt
112+ ```
113+
114+ #### 安装 playwright 浏览器驱动
115+
116+ ``` shell
117+ playwright install
118+ ```
119+
120+ #### 运行爬虫程序(原生环境)
121+
122+ ``` shell
123+ # 项目默认是没有开启评论爬取模式,如需评论请在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改
124+ # 一些其他支持项,也可以在 config/base_config.py 查看功能,写的有中文注释
125+
126+ # 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论
127+ python main.py --platform xhs --lt qrcode --type search
128+
129+ # 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息
130+ python main.py --platform xhs --lt qrcode --type detail
131+
132+ # 打开对应APP扫二维码登录
133+
134+ # 其他平台爬虫使用示例,执行下面的命令查看
135+ python main.py --help
136+ ```
137+
138+ </details >
139+
140+ ### 🟢 Node.js 安装
141+
142+ 项目依赖 Node.js,请前往官网下载安装:
143+
144+ - ** 下载地址** :https://nodejs.org/en/download/
145+ - ** 版本要求** :>= 16.0.0
146+
147+ ### 📦 Python 包安装
70148
71149``` shell
72150# 进入项目目录
73151cd MediaCrawler
74152
75- # 使用 uv sync 命令来保证python版本和相关依赖包的一致性
153+ # 使用 uv sync 命令来保证 python 版本和相关依赖包的一致性
76154uv sync
77155```
78156
79- ### 浏览器驱动安装
157+ ### 🌐 浏览器驱动安装
158+
80159``` shell
81160# 安装浏览器驱动
82- playwright install
161+ uv run playwright install
83162```
84- > MediaCrawler目前已经支持使用playwright连接你本地的Chrome浏览器了,一些因为Webdriver导致的问题迎刃而解了。
85- >
86- > 目前开放了 xhs 和 dy 这两个使用 cdp 的方式连接本地浏览器,如有需要,查看config/base_config.py中的配置项。
87-
88- ## 运行爬虫程序
89-
90- ``` shell
91- # ## 项目默认是没有开启评论爬取模式,如需评论请在config/base_config.py中的 ENABLE_GET_COMMENTS 变量修改
92- # ## 一些其他支持项,也可以在config/base_config.py查看功能,写的有中文注释
93-
94- # 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论
95- uv run main.py --platform xhs --lt qrcode --type search
96-
97- # 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息
98- uv run main.py --platform xhs --lt qrcode --type detail
99-
100- # 打开对应APP扫二维码登录
101-
102- # 其他平台爬虫使用示例,执行下面的命令查看
103- uv run main.py --help
104- ```
105-
106- ## 数据保存
107- - 支持关系型数据库Mysql中保存(需要提前创建数据库)
108- - 执行 ` python db.py ` 初始化数据库数据库表结构(只在首次执行)
109- - 支持保存到csv中(data/目录下)
110- - 支持保存到json中(data/目录下)
111-
112- # 项目微信交流群
113- [ 加入微信交流群] ( https://nanmicoder.github.io/MediaCrawler/%E5%BE%AE%E4%BF%A1%E4%BA%A4%E6%B5%81%E7%BE%A4.html )
163+
164+ > ** 💡 提示** :MediaCrawler 目前已经支持使用 playwright 连接你本地的 Chrome 浏览器了,一些因为 Webdriver 导致的问题迎刃而解了。
165+ >
166+ > 目前开放了 ` xhs ` 和 ` dy ` 这两个使用 CDP 的方式连接本地浏览器,如有需要,查看 ` config/base_config.py ` 中的配置项。
167+
168+ ## 🚀 运行爬虫程序
169+
170+ ``` shell
171+ # 项目默认是没有开启评论爬取模式,如需评论请在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改
172+ # 一些其他支持项,也可以在 config/base_config.py 查看功能,写的有中文注释
173+
174+ # 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论
175+ uv run main.py --platform xhs --lt qrcode --type search
176+
177+ # 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息
178+ uv run main.py --platform xhs --lt qrcode --type detail
179+
180+ # 打开对应APP扫二维码登录
181+
182+ # 其他平台爬虫使用示例,执行下面的命令查看
183+ uv run main.py --help
184+ ```
185+
186+ ## 💾 数据保存
187+
188+ 支持多种数据存储方式:
189+
190+ - ** MySQL 数据库** :支持关系型数据库 MySQL 中保存(需要提前创建数据库)
191+ - 执行 ` python db.py ` 初始化数据库表结构(只在首次执行)
192+ - ** CSV 文件** :支持保存到 CSV 中(` data/ ` 目录下)
193+ - ** JSON 文件** :支持保存到 JSON 中(` data/ ` 目录下)
194+
195+ ---
196+
197+ ## 🤝 社区与支持
198+
199+ ### 💬 交流群组
200+ - ** 微信交流群** :[ 点击加入] ( https://nanmicoder.github.io/MediaCrawler/%E5%BE%AE%E4%BF%A1%E4%BA%A4%E6%B5%81%E7%BE%A4.html )
201+
202+ ### 📚 文档与教程
203+ - ** 在线文档** :[ MediaCrawler 完整文档] ( https://nanmicoder.github.io/MediaCrawler/ )
204+ - ** 爬虫教程** :[ CrawlerTutorial 免费教程] ( https://github.com/NanmiCoder/CrawlerTutorial )
114205
115206
116207# 其他常见问题可以查看在线文档
@@ -125,35 +216,41 @@ playwright install
125216[ 作者的知识付费栏目介绍] ( https://nanmicoder.github.io/MediaCrawler/%E7%9F%A5%E8%AF%86%E4%BB%98%E8%B4%B9%E4%BB%8B%E7%BB%8D.html )
126217
127218
128- # 感谢下列Sponsors对本仓库赞助支持
219+ ---
220+
221+ ## ⭐ Star 趋势图
222+
223+ 如果这个项目对您有帮助,请给个 ⭐ Star 支持一下,让更多的人看到 MediaCrawler!
224+
225+ [ ![ Star History Chart] ( https://api.star-history.com/svg?repos=NanmiCoder/MediaCrawler&type=Date )] ( https://star-history.com/#NanmiCoder/MediaCrawler&Date )
226+
227+ ### 💰 赞助商展示
228+
129229<a href =" https://www.swiftproxy.net/?ref=nanmi " >
130230<img src =" docs/static/images/img_5.png " >
131231<br >
132- Swiftproxy- 90M+全球高质量纯净住宅IP,注册可领免费500MB测试流量 ,动态流量不过期!
133- > 我推荐的专属折扣码: GHB5 立享九折优惠!
232+ ** Swiftproxy** - 90M+ 全球高质量纯净住宅IP,注册可领免费 500MB 测试流量 ,动态流量不过期!
233+ > 专属折扣码: ** GHB5** 立享九折优惠!
134234 </a>
135235
136- <br >
137- <br >
138- <a href =" https://sider.ai/ad-land-redirect?source=github&p1=mi&p2=kk " >【Sider】全网最火的ChatGPT插件,我也免费薅羊毛用了快一年了,体验拉满。</a >
139-
140- 成为赞助者,可以将您产品展示在这里,每天获得大量曝光,联系作者微信:yzglan 或 email:
[email protected] 236+ <br ><br >
141237
238+ <a href =" https://sider.ai/ad-land-redirect?source=github&p1=mi&p2=kk " >** Sider** - 全网最火的 ChatGPT 插件,体验拉满!</a >
142239
143- # 爬虫入门课程
144- 我新开的爬虫教程Github仓库 [ CrawlerTutorial] ( https://github.com/NanmiCoder/CrawlerTutorial ) ,感兴趣的朋友可以关注一下,持续更新,主打一个免费.
240+ ### 🤝 成为赞助者
145241
146- # star 趋势图
147- - 如果该项目对你有帮助,帮忙 star一下 ❤️❤️❤️,让更多的人看到MediaCrawler这个项目
242+ 成为赞助者,可以将您的产品展示在这里,每天获得大量曝光!
148243
149- [ ![ Star History Chart] ( https://api.star-history.com/svg?repos=NanmiCoder/MediaCrawler&type=Date )] ( https://star-history.com/#NanmiCoder/MediaCrawler&Date )
244+ ** 联系方式** :
245+ - 微信:` yzglan `
246+ 150247
151248
152- # 参考
249+ ## 📚 参考
153250
154- - xhs客户端 [ ReaJason的xhs仓库 ] ( https://github.com/ReaJason/xhs )
155- - 短信转发 [ 参考仓库] ( https://github.com/pppscn/SmsForwarder )
156- - 内网穿透工具 [ ngrok] ( https://ngrok.com/docs/ )
251+ - ** 小红书客户端 ** : [ ReaJason 的 xhs 仓库 ] ( https://github.com/ReaJason/xhs )
252+ - ** 短信转发** : [ SmsForwarder 参考仓库] ( https://github.com/pppscn/SmsForwarder )
253+ - ** 内网穿透工具** : [ ngrok 官方文档 ] ( https://ngrok.com/docs/ )
157254
158255
159256# 免责声明
@@ -179,7 +276,12 @@ Swiftproxy-90M+全球高质量纯净住宅IP,注册可领免费500MB测试流
179276</div >
180277
181278
182- ## 感谢JetBrains提供的免费开源许可证支持
279+ ## 🙏 致谢
280+
281+ ### JetBrains 开源许可证支持
282+
283+ 感谢 JetBrains 为本项目提供免费的开源许可证支持!
284+
183285<a href =" https://www.jetbrains.com/?from=MediaCrawler " >
184286 <img src="https://www.jetbrains.com/company/brand/img/jetbrains_logo.png" width="100" alt="JetBrains" />
185287</a >
0 commit comments