feat: 知乎支持创作者主页数据爬取(回答、文章、视频)

This commit is contained in:
Relakkes
2024-10-16 21:02:27 +08:00
parent af9d2d8e84
commit da8f1c62b8
8 changed files with 511 additions and 66 deletions

102
README.md
View File

@@ -13,17 +13,8 @@
原理:利用[playwright](https://playwright.dev/)搭桥保留登录成功后的上下文浏览器环境通过执行JS表达式获取一些加密参数
通过使用此方式免去了复现核心加密JS代码逆向难度大大降低
[MediaCrawlerPro](https://github.com/MediaCrawlerPro) 版本已经迭代出来了,相较于开源版本的优势:
- 多账号+IP代理支持重点
- 去除Playwright依赖使用更加简单
- 支持linux部署Docker docker-compose
- 代码重构优化更加易读易维护解耦JS签名逻辑
- 完美的架构设计,更加易扩展,源码学习的价值更大
MediaCrawler仓库白金赞助商:
<a href="https://dashboard.ipcola.com/register?referral_code=atxtupzfjhpbdbl">⚡【IPCola全球独家海外IP代理】⚡新鲜的原生住宅代理超高性价比超多稀缺国家</a>
> 【IPCola全球独家海外IP代理】使用此处阿江专属推荐码注册atxtupzfjhpbdbl 获得10%金额补贴。
## 功能列表
| 平台 | 关键词搜索 | 指定帖子ID爬取 | 二级评论 | 指定创作者主页 | 登录态缓存 | IP代理池 | 生成评论词云图 |
@@ -36,8 +27,80 @@ MediaCrawler仓库白金赞助商:
| 贴吧 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 知乎 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
## 创建并激活 python 虚拟环境
> 如果是爬取抖音和知乎需要提前安装nodejs环境版本大于等于`16`即可 <br>
```shell
# 进入项目根目录
cd MediaCrawler
# 创建虚拟环境
# 我的python版本是3.9.6requirements.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
```
## 数据保存
- 支持关系型数据库Mysql中保存需要提前创建数据库
- 执行 `python db.py` 初始化数据库数据库表结构(只在首次执行)
- 支持保存到csv中data/目录下)
- 支持保存到json中data/目录下)
## MediaCrawlerPro
[MediaCrawlerPro](https://github.com/MediaCrawlerPro) 版本已经重构出来了,相较于开源版本的优势:
- 多账号+IP代理支持重点
- 去除Playwright依赖使用更加简单
- 支持linux部署Docker docker-compose
- 代码重构优化更加易读易维护解耦JS签名逻辑
- 代码质量更高,对于构建更大型的爬虫项目更加友好
- 完美的架构设计,更加易扩展,源码学习的价值更大
## 其他常见问题可以查看在线文档
>
> 在线文档包含使用方法、常见问题、加入项目交流群等。
> [MediaCrawler在线文档](https://nanmicoder.github.io/MediaCrawler/)
>
## 开发者服务
> 开源不易希望大家可以Star一下MediaCrawler仓库、支持下我的课程、星球,十分感谢!!! <br>
> 开源不易希望大家可以Star一下MediaCrawler仓库十分感谢!!! <br>
> 如果你对知识付费认可,可以看下下面我提供的付费服务,如果你是学生,请一定提前告知,会有优惠💰<br>
- MediaCrawler源码剖析课程
如果你想很快入门这个项目,或者想了具体实现原理,我推荐你看看这个我录制的视频课程,从设计出发一步步带你如何使用,门槛大大降低
@@ -65,12 +128,6 @@ MediaCrawler仓库白金赞助商:
- [Python协程在并发场景下的幂等性问题](https://articles.zsxq.com/id_wocdwsfmfcmp.html)
- [错误使用 Python 可变类型带来的隐藏 Bug](https://articles.zsxq.com/id_f7vn89l1d303.html)
## 使用教程文档
> MediaCrawler文档使用vitepress构建包含使用方法、常见问题、加入项目交流群等。
>
[MediaCrawler在线文档](https://nanmicoder.github.io/MediaCrawler/)
## 感谢下列Sponsors对本仓库赞助
> 【IPCola全球独家海外IP代理】使用此处阿江专属推荐码注册atxtupzfjhpbdbl 获得10%金额补贴。
@@ -80,6 +137,19 @@ MediaCrawler仓库白金赞助商:
成为赞助者可以将您产品展示在这里每天获得大量曝光联系作者微信yzglan 或 emailrelakkes@gmail.com
## MediaCrawler项目微信交流群
👏👏👏 汇聚爬虫技术爱好者,共同学习,共同进步。
群内禁止广告禁止发各类违规和MediaCrawler不相关的问题
### 加群方式
> 备注github会有拉群小助手自动拉你进群。
>
> 如果图片展示不出来或过期可以直接添加我的微信号yzglan并备注github会有拉群小助手自动拉你进群
![relakkes_wechat](docs/static/images/relakkes_weichat.jpg)
## 打赏
如果觉得项目不错的话可以打赏哦。您的支持就是我最大的动力!