From 0514758cffd9193c4680ed8b40c69ab7deea82c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Sun, 29 Jun 2025 00:07:13 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0uv=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 274 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 188 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index fb30dfd..1b79ca0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ -# 🔥 自媒体平台爬虫🕷️MediaCrawler🔥 -NanmiCoder%2FMediaCrawler | Trendshift +# 🔥 MediaCrawler - 自媒体平台爬虫 🕷️ + +
+ + + NanmiCoder%2FMediaCrawler | Trendshift + [![GitHub Stars](https://img.shields.io/github/stars/NanmiCoder/MediaCrawler?style=social)](https://github.com/NanmiCoder/MediaCrawler/stargazers) [![GitHub Forks](https://img.shields.io/github/forks/NanmiCoder/MediaCrawler?style=social)](https://github.com/NanmiCoder/MediaCrawler/network/members) @@ -7,6 +12,8 @@ [![GitHub Pull Requests](https://img.shields.io/github/issues-pr/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/pulls) [![License](https://img.shields.io/github/license/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/blob/main/LICENSE) +
+ > **免责声明:** > > 大家请以学习为目的使用本仓库⚠️⚠️⚠️⚠️,[爬虫违法违规的案件](https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China)
@@ -15,15 +22,17 @@ > > 点击查看更为详细的免责声明。[点击跳转](#disclaimer) -# 仓库描述 +## 📖 项目简介 -**小红书爬虫**,**抖音爬虫**, **快手爬虫**, **B站爬虫**, **微博爬虫**,**百度贴吧爬虫**,**知乎爬虫**...。 -目前能抓取小红书、抖音、快手、B站、微博、贴吧、知乎等平台的公开信息。 +一个功能强大的**多平台自媒体数据采集工具**,支持小红书、抖音、快手、B站、微博、贴吧、知乎等主流平台的公开信息抓取。 -原理:利用[playwright](https://playwright.dev/)搭桥,保留登录成功后的上下文浏览器环境,通过执行JS表达式获取一些加密参数 -通过使用此方式,免去了复现核心加密JS代码,逆向难度大大降低。 +### 🔧 技术原理 -# 功能列表 +- **核心技术**:基于 [Playwright](https://playwright.dev/) 浏览器自动化框架登录保存登录态 +- **无需JS逆向**:利用保留登录态的浏览器上下文环境,通过 JS 表达式获取签名参数 +- **优势特点**:无需逆向复杂的加密算法,大幅降低技术门槛 + +## ✨ 功能特性 | 平台 | 关键词搜索 | 指定帖子ID爬取 | 二级评论 | 指定创作者主页 | 登录态缓存 | IP代理池 | 生成评论词云图 | | ------ | ---------- | -------------- | -------- | -------------- | ---------- | -------- | -------------- | | 小红书 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | @@ -34,83 +43,165 @@ | 贴吧 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | 知乎 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -### MediaCrawlerPro重磅发布啦!!! -> 主打学习成熟项目的架构设计,不仅仅是爬虫,Pro中的其他代码设计思路也是值得学习,欢迎大家关注!!! -[MediaCrawlerPro](https://github.com/MediaCrawlerPro) 版本已经重构出来了,相较于开源版本的优势: -- 支持断点续爬功能(重点!) -- 多账号+IP代理支持(重点!) -- 去除Playwright依赖,使用更加简单 -- 支持linux环境使用 -- 代码重构优化,更加易读易维护(解耦JS签名逻辑) -- 代码质量更高,对于构建更大型的爬虫项目更加友好 -- 完美的架构设计,更加易扩展,源码学习的价值更大 -- Pro中新增全新的自媒体视频下载器桌面端软件(适合学习全栈项目开发) -- 支持多个平台的首页信息流推荐(HomeFeed) +### 🚀 MediaCrawlerPro 重磅发布! +> 专注于学习成熟项目的架构设计,不仅仅是爬虫技术,Pro 版本的代码设计思路同样值得深入学习! -# 安装部署方法 -> 开源不易,希望大家可以Star一下MediaCrawler仓库!!!!十分感谢!!!
+[MediaCrawlerPro](https://github.com/MediaCrawlerPro) 相较于开源版本的核心优势: -## 前置依赖 +#### 🎯 核心功能升级 +- ✅ **断点续爬功能**(重点特性) +- ✅ **多账号 + IP代理池支持**(重点特性) +- ✅ **去除 Playwright 依赖**,使用更简单 +- ✅ **完整 Linux 环境支持** -### uv 安装 -> 在进行下一步操作之前, 请确保电脑上已经安装了uv,[uv安装地址](https://docs.astral.sh/uv/getting-started/installation) -> -> uv是否安装成功的验证, 终端输入命令:uv --version 如果正常显示版本好,那证明已经安装成功 -> -> 强力安利 uv 给大家使用,简直是最强的python包管理工具 -> +#### 🏗️ 架构设计优化 +- ✅ **代码重构优化**,更易读易维护(解耦 JS 签名逻辑) +- ✅ **企业级代码质量**,适合构建大型爬虫项目 +- ✅ **完美架构设计**,高扩展性,源码学习价值更大 -### nodejs安装 -项目依赖nodejs,安装地址:https://nodejs.org/en/download/ -> 如果要用python的原生venv来管理环境的话,可以参考: [原生环境管理文档](docs/原生环境管理文档.md) +#### 🎁 额外功能 +- ✅ **自媒体视频下载器桌面端**(适合学习全栈开发) +- ✅ **多平台首页信息流推荐**(HomeFeed) +- [ ] **基于自媒体平台的AI Agent正在开发中 🚀🚀** -### python包安装 +点击查看:[MediaCrawlerPro 项目主页](https://github.com/MediaCrawlerPro) 更多介绍 + +## 🚀 快速开始 + +> 💡 **开源不易,如果这个项目对您有帮助,请给个 ⭐ Star 支持一下!** + +## 📋 前置依赖 + +### 🚀 uv 安装(推荐) + +在进行下一步操作之前,请确保电脑上已经安装了 uv: + +- **安装地址**:[uv 官方安装指南](https://docs.astral.sh/uv/getting-started/installation) +- **验证安装**:终端输入命令 `uv --version`,如果正常显示版本号,证明已经安装成功 +- **推荐理由**:uv 是目前最强的 Python 包管理工具,速度快、依赖解析准确 + +
+🔗 使用 Python 原生 venv 管理环境(不推荐) + +#### 创建并激活 Python 虚拟环境 + +> 如果是爬取抖音和知乎,需要提前安装 nodejs 环境,版本大于等于:`16` 即可 + +```shell +# 进入项目根目录 +cd MediaCrawler + +# 创建虚拟环境 +# 我的 python 版本是:3.9.6,requirements.txt 中的库是基于这个版本的 +# 如果是其他 python 版本,可能 requirements.txt 中的库不兼容,需自行解决 +python -m venv venv + +# macOS & Linux 激活虚拟环境 +source venv/bin/activate + +# Windows 激活虚拟环境 +venv\Scripts\activate +``` + +#### 安装依赖库 + +```shell +pip install -r requirements.txt +``` + +#### 安装 playwright 浏览器驱动 + +```shell +playwright install +``` + +#### 运行爬虫程序(原生环境) + +```shell +# 项目默认是没有开启评论爬取模式,如需评论请在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改 +# 一些其他支持项,也可以在 config/base_config.py 查看功能,写的有中文注释 + +# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论 +python main.py --platform xhs --lt qrcode --type search + +# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息 +python main.py --platform xhs --lt qrcode --type detail + +# 打开对应APP扫二维码登录 + +# 其他平台爬虫使用示例,执行下面的命令查看 +python main.py --help +``` + +
+ +### 🟢 Node.js 安装 + +项目依赖 Node.js,请前往官网下载安装: + +- **下载地址**:https://nodejs.org/en/download/ +- **版本要求**:>= 16.0.0 + +### 📦 Python 包安装 ```shell # 进入项目目录 cd MediaCrawler -# 使用 uv sync 命令来保证python版本和相关依赖包的一致性 +# 使用 uv sync 命令来保证 python 版本和相关依赖包的一致性 uv sync ``` -### 浏览器驱动安装 +### 🌐 浏览器驱动安装 + ```shell # 安装浏览器驱动 -playwright install +uv run playwright install ``` -> MediaCrawler目前已经支持使用playwright连接你本地的Chrome浏览器了,一些因为Webdriver导致的问题迎刃而解了。 -> -> 目前开放了 xhs 和 dy 这两个使用 cdp 的方式连接本地浏览器,如有需要,查看config/base_config.py中的配置项。 -## 运行爬虫程序 +> **💡 提示**:MediaCrawler 目前已经支持使用 playwright 连接你本地的 Chrome 浏览器了,一些因为 Webdriver 导致的问题迎刃而解了。 +> +> 目前开放了 `xhs` 和 `dy` 这两个使用 CDP 的方式连接本地浏览器,如有需要,查看 `config/base_config.py` 中的配置项。 - ```shell - ### 项目默认是没有开启评论爬取模式,如需评论请在config/base_config.py中的 ENABLE_GET_COMMENTS 变量修改 - ### 一些其他支持项,也可以在config/base_config.py查看功能,写的有中文注释 - - # 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论 - uv run main.py --platform xhs --lt qrcode --type search - - # 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息 - uv run main.py --platform xhs --lt qrcode --type detail - - # 打开对应APP扫二维码登录 - - # 其他平台爬虫使用示例,执行下面的命令查看 - uv run main.py --help - ``` +## 🚀 运行爬虫程序 -## 数据保存 -- 支持关系型数据库Mysql中保存(需要提前创建数据库) - - 执行 `python db.py` 初始化数据库数据库表结构(只在首次执行) -- 支持保存到csv中(data/目录下) -- 支持保存到json中(data/目录下) +```shell +# 项目默认是没有开启评论爬取模式,如需评论请在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改 +# 一些其他支持项,也可以在 config/base_config.py 查看功能,写的有中文注释 -# 项目微信交流群 -[加入微信交流群](https://nanmicoder.github.io/MediaCrawler/%E5%BE%AE%E4%BF%A1%E4%BA%A4%E6%B5%81%E7%BE%A4.html) +# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论 +uv run main.py --platform xhs --lt qrcode --type search + +# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息 +uv run main.py --platform xhs --lt qrcode --type detail + +# 打开对应APP扫二维码登录 + +# 其他平台爬虫使用示例,执行下面的命令查看 +uv run main.py --help +``` + +## 💾 数据保存 + +支持多种数据存储方式: + +- **MySQL 数据库**:支持关系型数据库 MySQL 中保存(需要提前创建数据库) + - 执行 `python db.py` 初始化数据库表结构(只在首次执行) +- **CSV 文件**:支持保存到 CSV 中(`data/` 目录下) +- **JSON 文件**:支持保存到 JSON 中(`data/` 目录下) + +--- + +## 🤝 社区与支持 + +### 💬 交流群组 +- **微信交流群**:[点击加入](https://nanmicoder.github.io/MediaCrawler/%E5%BE%AE%E4%BF%A1%E4%BA%A4%E6%B5%81%E7%BE%A4.html) + +### 📚 文档与教程 +- **在线文档**:[MediaCrawler 完整文档](https://nanmicoder.github.io/MediaCrawler/) +- **爬虫教程**:[CrawlerTutorial 免费教程](https://github.com/NanmiCoder/CrawlerTutorial) # 其他常见问题可以查看在线文档 @@ -125,35 +216,41 @@ playwright install [作者的知识付费栏目介绍](https://nanmicoder.github.io/MediaCrawler/%E7%9F%A5%E8%AF%86%E4%BB%98%E8%B4%B9%E4%BB%8B%E7%BB%8D.html) -# 感谢下列Sponsors对本仓库赞助支持 - - -
-Swiftproxy-90M+全球高质量纯净住宅IP,注册可领免费500MB测试流量,动态流量不过期! -> 我推荐的专属折扣码:GHB5 立享九折优惠! -
+--- -
-
-【Sider】全网最火的ChatGPT插件,我也免费薅羊毛用了快一年了,体验拉满。 +## ⭐ Star 趋势图 -成为赞助者,可以将您产品展示在这里,每天获得大量曝光,联系作者微信:yzglan 或 email:relakkes@gmail.com - - -# 爬虫入门课程 -我新开的爬虫教程Github仓库 [CrawlerTutorial](https://github.com/NanmiCoder/CrawlerTutorial) ,感兴趣的朋友可以关注一下,持续更新,主打一个免费. - -# star 趋势图 -- 如果该项目对你有帮助,帮忙 star一下 ❤️❤️❤️,让更多的人看到MediaCrawler这个项目 +如果这个项目对您有帮助,请给个 ⭐ Star 支持一下,让更多的人看到 MediaCrawler! [![Star History Chart](https://api.star-history.com/svg?repos=NanmiCoder/MediaCrawler&type=Date)](https://star-history.com/#NanmiCoder/MediaCrawler&Date) +### 💰 赞助商展示 -# 参考 + + +
+**Swiftproxy** - 90M+ 全球高质量纯净住宅IP,注册可领免费 500MB 测试流量,动态流量不过期! +> 专属折扣码:**GHB5** 立享九折优惠! +
-- xhs客户端 [ReaJason的xhs仓库](https://github.com/ReaJason/xhs) -- 短信转发 [参考仓库](https://github.com/pppscn/SmsForwarder) -- 内网穿透工具 [ngrok](https://ngrok.com/docs/) +

+ +**Sider** - 全网最火的 ChatGPT 插件,体验拉满! + +### 🤝 成为赞助者 + +成为赞助者,可以将您的产品展示在这里,每天获得大量曝光! + +**联系方式**: +- 微信:`yzglan` +- 邮箱:`relakkes@gmail.com` + + +## 📚 参考 + +- **小红书客户端**:[ReaJason 的 xhs 仓库](https://github.com/ReaJason/xhs) +- **短信转发**:[SmsForwarder 参考仓库](https://github.com/pppscn/SmsForwarder) +- **内网穿透工具**:[ngrok 官方文档](https://ngrok.com/docs/) # 免责声明 @@ -179,7 +276,12 @@ Swiftproxy-90M+全球高质量纯净住宅IP,注册可领免费500MB测试流 -## 感谢JetBrains提供的免费开源许可证支持 +## 🙏 致谢 + +### JetBrains 开源许可证支持 + +感谢 JetBrains 为本项目提供免费的开源许可证支持! + JetBrains