docs: 在线文档support & 知识付费栏目汇聚

This commit is contained in:
Relakkes 2024-09-19 16:54:19 +08:00
parent f8881dba74
commit d256337b6a
34 changed files with 2913 additions and 117 deletions

64
.github/workflows/deploy.yml vendored Normal file
View File

@ -0,0 +1,64 @@
# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程
#
name: Deploy VitePress site to Pages
on:
# 在针对 `main` 分支的推送上运行。如果你
# 使用 `master` 分支作为默认分支,请将其更改为 `master`
push:
branches: [main]
# 允许你从 Actions 选项卡手动运行此工作流程
workflow_dispatch:
# 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列
# 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成
concurrency:
group: pages
cancel-in-progress: false
jobs:
# 构建工作
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # 如果未启用 lastUpdated则不需要
# - uses: pnpm/action-setup@v3 # 如果使用 pnpm请取消注释
# - uses: oven-sh/setup-bun@v1 # 如果使用 Bun请取消注释
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm # 或 pnpm / yarn
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Install dependencies
run: npm ci # 或 pnpm install / yarn install / bun install
- name: Build with VitePress
run: npm run docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist
# 部署工作
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

4
.gitignore vendored
View File

@ -167,4 +167,6 @@ cython_debug/
/data/ /data/
*/.DS_Store */.DS_Store
.vscode .vscode
/node_modules
docs/.vitepress/cache

113
README.md
View File

@ -36,73 +36,18 @@ MediaCrawler仓库白金赞助商:
| 知乎 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | | 知乎 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
## 使用方法
### 创建并激活 python 虚拟环境
```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/目录下)
## 开发者服务 ## 开发者服务
- MediaCrawler视频课程 - MediaCrawler源码剖析课程
> 视频课程介绍飞书文档链接https://relakkes.feishu.cn/wiki/JUgBwdhIeiSbAwkFCLkciHdAnhh - **抖音课程链接**仅支持安卓https://v.douyin.com/iYeQFyAf/
> 如果你想很快入门这个项目,或者想了具体实现原理,我推荐你看看这个视频课程,从设计出发一步步带你如何使用,门槛大大降低 - **B站课程链接**https://www.bilibili.com/cheese/play/ss16569
>
> 同时也是对我开源的支持,如果你能支持我的课程,我将会非常开心~<br> (备注视频课程介绍飞书文档链接https://relakkes.feishu.cn/wiki/JUgBwdhIeiSbAwkFCLkciHdAnhh (如果你想很快入门这个项目,或者想了具体实现原理,我推荐你看看这个视频课程,从设计出发一步步带你如何使用,门槛大大降低))
<br>
<br>
- 知识星球MediaCrawler相关问题最佳实践、爬虫逆向分享、爬虫项目实战、多年编程经验分享、爬虫编程技术问题提问。 - 知识星球MediaCrawler相关问题最佳实践、爬虫逆向分享、爬虫项目实战、多年编程经验分享、爬虫编程技术问题提问。
<p> <p>
<img alt="xingqiu" src="static/images/星球qrcode.JPG" style="width: auto;height: 400px" > <img alt="xingqiu" src="docs/static/images/星球qrcode.JPG" style="width: auto;height: 400px" >
</p> </p>
星球精选文章(部分) 星球精选文章(部分)
@ -114,24 +59,19 @@ MediaCrawler仓库白金赞助商:
- [【独创】使用Playwright低成本获取某书X-s参数流程分析当年的回忆录](https://articles.zsxq.com/id_u4lcrvqakuc7.html) - [【独创】使用Playwright低成本获取某书X-s参数流程分析当年的回忆录](https://articles.zsxq.com/id_u4lcrvqakuc7.html)
- [ MediaCrawler-基于抽象类设计重构项目缓存](https://articles.zsxq.com/id_4ju73oxewt9j.html) - [ MediaCrawler-基于抽象类设计重构项目缓存](https://articles.zsxq.com/id_4ju73oxewt9j.html)
- [ 手把手带你撸一个自己的IP代理池](https://articles.zsxq.com/id_38fza371ladm.html) - [ 手把手带你撸一个自己的IP代理池](https://articles.zsxq.com/id_38fza371ladm.html)
- [Python协程在并发场景下的幂等性问题](https://articles.zsxq.com/id_wocdwsfmfcmp.html)
- [错误使用 Python 可变类型带来的隐藏 Bug](https://articles.zsxq.com/id_f7vn89l1d303.html)
## MediaCrawler使用教程文档
[MediaCrawler在线文档](https://nanmicoder.github.io/MediaCrawler/)
## 感谢下列Sponsors对本仓库赞助 ## 感谢下列Sponsors对本仓库赞助
- <a href="https://mangoproxy.com/?utm_source=mediacrawler&utm_medium=repository&utm_campaign=default">【MangoProxy】全球IP代理白金推荐支持210+国家 [MangoProxy](https://mangoproxy.com/?utm_source=mediacrawler&utm_medium=repository&utm_campaign=default) </a> - <a href="https://mangoproxy.com/?utm_source=mediacrawler&utm_medium=repository&utm_campaign=default">【MangoProxy】全球IP代理白金推荐支持210+国家 [MangoProxy](https://mangoproxy.com/?utm_source=mediacrawler&utm_medium=repository&utm_campaign=default) </a>
- <a href="https://sider.ai/ad-land-redirect?source=github&p1=mi&p2=kk">【Sider】全网最火的ChatGPT插件我也免费薅羊毛用了快一年了体验拉满。</a> - <a href="https://sider.ai/ad-land-redirect?source=github&p1=mi&p2=kk">【Sider】全网最火的ChatGPT插件我也免费薅羊毛用了快一年了体验拉满。</a>
成为赞助者可以将您产品展示在这里每天获得大量曝光联系作者微信yzglan 成为赞助者可以将您产品展示在这里每天获得大量曝光联系作者微信yzglan
## MediaCrawler爬虫项目交流群
<div id="join_wechat_group">
> 备注github会有拉群小助手自动拉你进群。 如果图片展示不出来或过期可以直接添加我的微信号yzglan并备注github会有拉群小助手自动拉你进
<div style="max-width: 200px">
<p><img alt="直接添加我的微信号yzglan" src="static/images/relakkes_weichat.JPG" style="width: 200px;height: 100%" ></p>
</div>
</div>
## 打赏 ## 打赏
@ -139,33 +79,13 @@ MediaCrawler仓库白金赞助商:
打赏时您可以备注名称,我会将您添加至打赏列表中。 打赏时您可以备注名称,我会将您添加至打赏列表中。
<p> <p>
<img alt="打赏-微信" src="static/images/wechat_pay.jpeg" style="width: 200px;margin-right: 140px;" /> <img alt="打赏-微信" src="docs/static/images/wechat_pay.jpeg" style="width: 200px;margin-right: 140px;" />
<img alt="打赏-支付宝" src="static/images/zfb_pay.png" style="width: 200px" /> <img alt="打赏-支付宝" src="docs/static/images/zfb_pay.png" style="width: 200px" />
</p> </p>
查看打赏列表 [点击跳转](#donate) 查看打赏列表 [点击跳转](#donate)
## 运行报错常见问题Q&A
> 遇到问题先自行搜索解决下现在AI很火用ChatGPT大多情况下能解决你的问题 [免费的ChatGPT](https://sider.ai/ad-land-redirect?source=github&p1=mi&p2=kk)
➡️➡️➡️ [常见问题](docs/常见问题.md)
dy和xhs使用Playwright登录现在会出现滑块验证 + 短信验证,手动过一下
## 项目代码结构
➡️➡️➡️ [项目代码结构说明](docs/项目代码结构.md)
## 代理IP使用说明
➡️➡️➡️ [代理IP使用说明](docs/代理使用.md)
## 词云图相关操作说明
➡️➡️➡️ [词云图相关说明](docs/关于词云图相关操作.md)
## 手机号登录说明
➡️➡️➡️ [手机号登录说明](docs/手机号登录说明.md)
## 爬虫入门课程 ## 爬虫入门课程
我新开的爬虫教程Github仓库 [CrawlerTutorial](https://github.com/NanmiCoder/CrawlerTutorial) ,感兴趣的朋友可以关注一下,持续更新,主打一个免费. 我新开的爬虫教程Github仓库 [CrawlerTutorial](https://github.com/NanmiCoder/CrawlerTutorial) ,感兴趣的朋友可以关注一下,持续更新,主打一个免费.
@ -176,7 +96,6 @@ dy和xhs使用Playwright登录现在会出现滑块验证 + 短信验证,手
[![Star History Chart](https://api.star-history.com/svg?repos=NanmiCoder/MediaCrawler&type=Date)](https://star-history.com/#NanmiCoder/MediaCrawler&Date) [![Star History Chart](https://api.star-history.com/svg?repos=NanmiCoder/MediaCrawler&type=Date)](https://star-history.com/#NanmiCoder/MediaCrawler&Date)
## 参考 ## 参考
- xhs客户端 [ReaJason的xhs仓库](https://github.com/ReaJason/xhs) - xhs客户端 [ReaJason的xhs仓库](https://github.com/ReaJason/xhs)

View File

@ -0,0 +1,65 @@
import {defineConfig} from 'vitepress'
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "MediaCrawler自媒体爬虫",
description: "小红书爬虫,抖音爬虫, 快手爬虫, B站爬虫 微博爬虫,百度贴吧爬虫,知乎爬虫...。 ",
lastUpdated: true,
themeConfig: {
editLink: {
pattern: 'https://github.com/NanmiCoder/MediaCrawler/tree/main/docs/:path'
},
// https://vitepress.dev/reference/default-theme-config
nav: [
{text: '首页', link: '/'},
{text: '联系我', link: '/作者介绍'},
{text: '支持我', link: '/知识付费介绍'},
],
sidebar: [
{
text: '作者介绍',
link: '/作者介绍',
},
{
text: 'MediaCrawler使用文档',
items: [
{text: '基本使用', link: '/'},
{text: '常见问题汇总', link: '/常见问题'},
{text: 'IP代理使用', link: '/代理使用'},
{text: '词云图使用', link: '/词云图使用配置'},
{text: '项目目录结构', link: '/项目代码结构'},
{text: '手机号登录说明', link: '/手机号登录说明'},
]
},
{
text: '知识付费',
items: [
{text: '知识付费介绍', link: '/知识付费介绍'},
{text: 'MediaCrawlerPro订阅', link: '/mediacrawlerpro订阅'},
{
text: 'MediaCrawler源码剖析课',
link: 'https://relakkes.feishu.cn/wiki/JUgBwdhIeiSbAwkFCLkciHdAnhh'
},
{text: '知识星球文章专栏', link: '/知识星球介绍'},
{text: '开发者咨询服务', link: '/开发者咨询'},
]
},
{
text: 'MediaCrawler项目交流群',
link: '/作者介绍',
},
{
text: '爬虫入门教程分享',
items: [
{text: "我写的爬虫入门教程", link: 'https://github.com/NanmiCoder/CrawlerTutorial'}
]
},
],
socialLinks: [
{icon: 'github', link: 'https://github.com/NanmiCoder/MediaCrawler'}
]
}
})

61
docs/index.md Normal file
View File

@ -0,0 +1,61 @@
# MediaCrawler使用方法
## 免责声明
> **免责声明:**
>
> 大家请以学习为目的使用本仓库爬虫违法违规的案件https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China <br>
>
>本项目的所有内容仅供学习和参考之用,禁止用于商业用途。任何人或组织不得将本仓库的内容用于非法用途或侵犯他人合法权益。本仓库所涉及的爬虫技术仅用于学习和研究,不得用于对其他平台进行大规模爬虫或其他非法行为。对于因使用本仓库内容而引起的任何法律责任,本仓库不承担任何责任。使用本仓库的内容即表示您同意本免责声明的所有条款和条件。
## 创建并激活 python 虚拟环境
```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/目录下)

View File

@ -0,0 +1,45 @@
# 订阅MediaCrawlerPro版本源码访问权限
## 获取Pro版本的访问权限
> MediaCrawler开源超过一年了相信该仓库帮过不少朋友低门槛的学习和了解爬虫。维护真的耗费了大量精力和人力 <br>
>
> 所以Pro版本不会开源可以订阅Pro版本让我更加有动力去更新。<br>
>
> 如果感兴趣可以加我微信订阅Pro版本访问权限哦有门槛💰。<br>
>
> 仅针对想学习Pro版本源码实现的用户如果是公司或者商业化盈利性质的就不要加我了谢谢🙏
>
> 代码设计拓展性强,可以自己扩展更多的爬虫平台,更多的数据存储方式,相信对你架构这种爬虫代码有所帮助。
>
>
> **MediaCrawlerPro项目主页地址**
> [MediaCrawlerPro Github主页地址](https://github.com/MediaCrawlerPro)
扫描下方我的个人微信备注pro版本如果图片展示不出来可以直接添加我的微信号yzglan
![relakkes_weichat.JPG](static/images/relakkes_weichat.JPG)
## Pro版本诞生的背景
[MediaCrawler](https://github.com/NanmiCoder/MediaCrawler)这个项目开源至今获得了大量的关注,同时也暴露出来了一系列问题,比如:
- 能否支持多账号?
- 能否在linux部署
- 能否去掉playwright的依赖
- 有没有更简单的部署方法?
- 有没有针对新手上门槛更低的方法?
诸如上面的此类问题,想要在原有项目上去动刀,无疑是增加了复杂度,可能导致后续的维护更加困难。
出于可持续维护、简便易用、部署简单等目的对MediaCrawler进行彻底重构。
## 项目介绍
### [MediaCrawler](https://github.com/NanmiCoder/MediaCrawler)的Pro版本python实现
**小红书爬虫****抖音爬虫** **快手爬虫** **B站爬虫** **微博爬虫****百度贴吧****知乎爬虫**...。
支持多种平台的爬虫,支持多种数据的爬取,支持多种数据的存储,最重要的**完美支持多账号+IP代理池让你的爬虫更加稳定**。
相较于MediaCrawlerPro版本最大的变化
- 去掉了playwright的依赖不再将Playwright集成到爬虫主干中依赖过重。
- 增加了DockerDocker-compose的方式部署让部署更加简单。
- 多账号+IP代理池的支持让爬虫更加稳定。
- 新增签名服务,解耦签名逻辑,让爬虫更加灵活。

View File

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 171 KiB

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 189 KiB

View File

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 254 KiB

View File

Before

Width:  |  Height:  |  Size: 200 KiB

After

Width:  |  Height:  |  Size: 200 KiB

View File

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 223 KiB

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 241 KiB

View File

Before

Width:  |  Height:  |  Size: 484 KiB

After

Width:  |  Height:  |  Size: 484 KiB

View File

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 261 KiB

After

Width:  |  Height:  |  Size: 261 KiB

View File

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 241 KiB

View File

@ -1,25 +1,27 @@
## 代理 IP 使用说明 # 代理 IP 使用说明
> 还是得跟大家再次强调下,不要对一些自媒体平台进行大规模爬虫或其他非法行为,要踩缝纫机的哦🤣 > 还是得跟大家再次强调下,不要对一些自媒体平台进行大规模爬虫或其他非法行为,要踩缝纫机的哦🤣
### 简易的流程图
![代理 IP 使用流程图](../static/images/代理IP%20流程图.drawio.png) ## 简易的流程图
### 准备代理 IP 信息 ![代理 IP 使用流程图](static/images/代理IP%20流程图.drawio.png)
## 准备代理 IP 信息
点击 <a href="https://www.kuaidaili.com/?ref=ldwkjqipvz6c">快代理</a> 官网注册并实名认证(国内使用代理 IP 必须要实名,懂的都懂) 点击 <a href="https://www.kuaidaili.com/?ref=ldwkjqipvz6c">快代理</a> 官网注册并实名认证(国内使用代理 IP 必须要实名,懂的都懂)
### 获取 IP 代理的密钥信息 ## 获取 IP 代理的密钥信息
<a href="https://www.kuaidaili.com/?ref=ldwkjqipvz6c">快代理</a> 官网获取免费试用,如下图所示 <a href="https://www.kuaidaili.com/?ref=ldwkjqipvz6c">快代理</a> 官网获取免费试用,如下图所示
![img.png](../static/images/img.png) ![img.png](static/images/img.png)
注意:选择私密代理 注意:选择私密代理
![img_1.png](../static/images/img_1.png) ![img_1.png](static/images/img_1.png)
选择开通试用 选择开通试用
![img_2.png](../static/images/img_2.png) ![img_2.png](static/images/img_2.png)
初始化一个快代理的示例如下代码所示需要4个参数 初始化一个快代理的示例如下代码所示需要4个参数
```python ```python
def new_kuai_daili_proxy() -> KuaiDaiLiProxy: def new_kuai_daili_proxy() -> KuaiDaiLiProxy:
""" """
构造快代理HTTP实例 构造快代理HTTP实例
@ -37,11 +39,11 @@ def new_kuai_daili_proxy() -> KuaiDaiLiProxy:
在试用的订单中可以看到这四个参数,如下图所示 在试用的订单中可以看到这四个参数,如下图所示
`kdl_user_name`、`kdl_user_pwd` `kdl_user_name`、`kdl_user_pwd`
![img_3.png](../static/images/img_3.png) ![img_3.png](static/images/img_3.png)
`kdl_secret_id`、`kdl_signature` `kdl_secret_id`、`kdl_signature`
![img_4.png](../static/images/img_4.png) ![img_4.png](static/images/img_4.png)
### 将配置文件中的`ENABLE_IP_PROXY`置为 `True` ## 将配置文件中的`ENABLE_IP_PROXY`置为 `True`
> `IP_PROXY_POOL_COUNT` 池子中 IP 的数量 > `IP_PROXY_POOL_COUNT` 池子中 IP 的数量

21
docs/作者介绍.md Normal file
View File

@ -0,0 +1,21 @@
# 关于作者
> 大家都叫我阿江,网名:程序员阿江-Relakkes目前裸辞正探索自由职业希望能靠自己的技术能力和努力实现自己理想的生活方式。
>
> 我身边有大量的技术人脉资源,如果大家有一些爬虫咨询或者编程单子可以向我丢过来
- [Github万星开源自媒体爬虫仓库MediaCrawler作者](https://github.com/NanmiCoder/MediaCrawler)
- 全栈程序员熟悉Python、Golang、JavaScript工作中主要用Golang。
- 曾经主导并参与过百万级爬虫采集系统架构设计与编码
- 爬虫是一种技术兴趣爱好,参与爬虫有一种对抗的感觉,越难越兴奋。
## 微信联系方式
![relakkes_weichat.JPG](static/images/relakkes_weichat.JPG)
## B站主页地址
https://space.bilibili.com/434377496
## 抖音主页地址
https://www.douyin.com/user/MS4wLjABAAAATJPY7LAlaa5X-c8uNdWkvz0jUGgpw4eeXIwu_8BhvqE?previous_page=app_code_link
## 小红书主页地址
https://www.xiaohongshu.com/user/profile/5f58bd990000000001003753?xhsshare=CopyLink&appuid=5f58bd990000000001003753&apptime=1724737153

View File

@ -1,31 +1,40 @@
## 常见程序运行出错问题 # 常见程序运行出错问题
## 缺少node环境导致的问题
Q: 爬取知乎报错: `execjs._exceptions.ProgramError: SyntaxError: 缺少 ';'` <br> Q: 爬取知乎报错: `execjs._exceptions.ProgramError: SyntaxError: 缺少 ';'` <br>
A: 该错误为缺少 nodejs 环境,这个错误可以通过安装 nodejs 环境来解决,版本大于等:`v16` <br> A: 该错误为缺少 nodejs 环境,这个错误可以通过安装 nodejs 环境来解决,版本大于等:`v16` <br>
Q: 使用Cookie爬取抖音报错: execjs._exceptions.ProgramError: TypeError: Cannot read property 'JS_MD5_NO_COMMON_JS' of null Q: 使用Cookie爬取抖音报错: execjs._exceptions.ProgramError: TypeError: Cannot read property 'JS_MD5_NO_COMMON_JS' of null
A: windows电脑去网站下载`https://nodejs.org/en/blog/release/v16.8.0` Windows 64-bit Installer 版本,一直下一步即可。 A: windows电脑去网站下载`https://nodejs.org/en/blog/release/v16.8.0` Windows 64-bit Installer 版本,一直下一步即可。
## 如何指定关键词
Q: 可以指定关键词爬取吗?<br> Q: 可以指定关键词爬取吗?<br>
A: 在config/base_config.py 中 KEYWORDS 参数用于控制需要爬取的关键词 <br> A: 在config/base_config.py 中 KEYWORDS 参数用于控制需要爬取的关键词 <br>
## 如何指定帖子
Q: 可以指定帖子爬取吗?<br> Q: 可以指定帖子爬取吗?<br>
A在config/base_config.py 中 XHS_SPECIFIED_ID_LIST 参数用于控制需要指定爬取的帖子ID列表 <br> A在config/base_config.py 中 XHS_SPECIFIED_ID_LIST 参数用于控制需要指定爬取的帖子ID列表 <br>
## 爬取失效
Q: 刚开始能爬取数据,过一段时间就是失效了?<br> Q: 刚开始能爬取数据,过一段时间就是失效了?<br>
A出现这种情况多半是由于你的账号触发了平台风控机制了请勿大规模对平台进行爬虫影响平台。<br> A出现这种情况多半是由于你的账号触发了平台风控机制了请勿大规模对平台进行爬虫影响平台。<br>
## 如何更换另一个账号
Q: 如何更换登录账号?<br> Q: 如何更换登录账号?<br>
A删除项目根目录下的 brower_data/ 文件夹即可 <br> A删除项目根目录下的 brower_data/ 文件夹即可 <br>
## playwright超时问题
Q: 报错 `playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.`<br> Q: 报错 `playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.`<br>
A: 出现这种情况检查下开梯子没有<br> A: 出现这种情况检查下开梯子没有<br>
## 如果配置playwright浏览器驱动过滑块验证
Q: 小红书扫码登录成功后如何手动验证? Q: 小红书扫码登录成功后如何手动验证?
A: 打开 config/base_config.py 文件, 找到 HEADLESS 配置项, 将其设置为 False, 此时重启项目, 在浏览器中手动通过验证码<br> A: 打开 config/base_config.py 文件, 找到 HEADLESS 配置项, 将其设置为 False, 此时重启项目, 在浏览器中手动通过验证码<br>
## 词云图生成
Q: 如何配置词云图的生成? Q: 如何配置词云图的生成?
A: 打开 config/base_config.py 文件, 找到`ENABLE_GET_WORDCLOUD` 以及`ENABLE_GET_COMMENTS` 两个配置项将其都设为True即可使用该功能。<br> A: 打开 config/base_config.py 文件, 找到`ENABLE_GET_WORDCLOUD` 以及`ENABLE_GET_COMMENTS` 两个配置项将其都设为True即可使用该功能。<br>
## 词云图添加禁用词和自定义词组
Q: 如何给词云图添加禁用词和自定义词组? Q: 如何给词云图添加禁用词和自定义词组?
A: 打开 `docs/hit_stopwords.txt` 输入禁用词(注意一个词语一行)。打开 config/base_config.py 文件找到 `CUSTOM_WORDS `按格式添加自定义词组即可。<br> A: 打开 `docs/hit_stopwords.txt` 输入禁用词(注意一个词语一行)。打开 config/base_config.py 文件找到 `CUSTOM_WORDS `按格式添加自定义词组即可。<br>

17
docs/开发者咨询.md Normal file
View File

@ -0,0 +1,17 @@
# 开发者咨询
## 咨询价格
提供200/小时的咨询服务最低收费为1小时帮你快速解决项目中遇到的问题
##### 支持的提问类别
- MediaCrawler项目源码解读、安装、部署、使用问题
- 爬虫项目开发问题
- Python、Golang、JavaScript等编程问题
- JS逆向问题
- 其他问题(职业规划、工作经验等)
## 加我微信
> 备注:咨服服务
>
![微信二维码](static/images/relakkes_weichat.JPG)

12
docs/微信交流群.md Normal file
View File

@ -0,0 +1,12 @@
# MediaCrawler项目微信交流群
👏👏👏 汇聚爬虫技术爱好者,共同学习,共同进步。
群内禁止广告禁止发各类违规和MediaCrawler不相关的问题
## 加群方式
> 备注github会有拉群小助手自动拉你进群。
>
> 如果图片展示不出来或过期可以直接添加我的微信号yzglan并备注github会有拉群小助手自动拉你进群
![relakkes_wechat](static/images/relakkes_weichat.JPG)

View File

@ -1,4 +1,5 @@
## 关于手机号+验证码登录的说明 # 关于手机号+验证码登录的说明
> 配置过程相当复杂,不建议采用该种方式
当在浏览器模拟人为发起手机号登录请求时,使用短信转发软件将验证码发送至爬虫端回填,完成自动登录 当在浏览器模拟人为发起手机号登录请求时,使用短信转发软件将验证码发送至爬虫端回填,完成自动登录
@ -15,6 +16,5 @@
备注: 备注:
- 小红书这边一个手机号一天只能发10条短信悠着点目前在发验证码时还未触发滑块验证估计多了之后也会有~
- 短信转发软件会不会监控自己手机上其他短信内容?(理论上应该不会,因为[短信转发仓库](https://github.com/pppscn/SmsForwarder) - 短信转发软件会不会监控自己手机上其他短信内容?(理论上应该不会,因为[短信转发仓库](https://github.com/pppscn/SmsForwarder)
star还是蛮多的 star还是蛮多的

View File

@ -0,0 +1,19 @@
# 知识付费介绍
开源是一种无私奉献从MediaCrawler开源到现在有一年多它并没有带给我多少实质性的东西就拿收入来说赞助费、赞赏等等全部加起来还没有之前一个月的薪水。
后面搞了MediaCrawler源码剖析课程之后收入稍微好一点但也是群里兄弟对我开源的支持在此也非常感谢你们
但是我依然坚持持续开源从开始的xhs、dy 2个平台支持到现在已经有**7个平台**支持,每一次增加一个平台其实都会耗费很大的时间去写代码和调试代码。。。。
在今天跟一个群里好朋友聊天,他说:开源开发者也要活下去。你不要不好意思做知识付费,你的劳动是有价值的。
他点醒我了,因此我把我所提供的知识付费内容放在下面,有需要的朋友可以看看~
## MediaCrawlerPro项目源码订阅服务
[mediacrawlerpro订阅文档说明](mediacrawlerpro订阅.md)
## MediaCrawler源码剖析视频课程
[mediacrawler源码课程介绍](https://relakkes.feishu.cn/wiki/JUgBwdhIeiSbAwkFCLkciHdAnhh)
## 知识星球爬虫逆向、编程专栏
[知识星球专栏介绍](知识星球介绍.md)

View File

@ -0,0 +1,31 @@
# 知识星球专栏
## 基本介绍
文章:
- 1.爬虫JS逆向案例分享
- 2.MediaCrawler技术实现分享。
- 3.沉淀python开发经验和技巧
- ......................
提问:
- 4.在星球内向我提问关于MediaCrawler、爬虫、编程任何问题
## 章节内容
- [逆向案例 - 某16x8平台商品列表接口逆向参数分析](https://articles.zsxq.com/id_x1qmtg8pzld9.html)
- [逆向案例 - Product Hunt月度最佳产品榜单接口加密参数分析](https://articles.zsxq.com/id_au4eich3x2sg.html)
- [逆向案例 - 某zhi乎x-zse-96参数分析过程](https://articles.zsxq.com/id_dui2vil0ag1l.html)
- [逆向案例 - 某x识星球X-Signature加密参数分析过程](https://articles.zsxq.com/id_pp4madwcwcg8.html)
- [【独创】使用Playwright获取某音a_bogus参数流程包含加密参数分析](https://articles.zsxq.com/id_u89al50jk9x0.html)
- [【独创】使用Playwright低成本获取某书X-s参数流程分析当年的回忆录](https://articles.zsxq.com/id_u4lcrvqakuc7.html)
- [ MediaCrawler-基于抽象类设计重构项目缓存](https://articles.zsxq.com/id_4ju73oxewt9j.html)
- [ 手把手带你撸一个自己的IP代理池](https://articles.zsxq.com/id_38fza371ladm.html)
- [一次Mysql数据库中混用collation排序规则带来的bug](https://articles.zsxq.com/id_pibwr1wnst2p.html)
- [错误使用 Python 可变类型带来的隐藏 Bug](https://articles.zsxq.com/id_f7vn89l1d303.html)
- [【MediaCrawler】微博帖子评论爬虫教程](https://articles.zsxq.com/id_vrmuhw0ovj3t.html)
- [Python协程在并发场景下的幂等性问题](https://articles.zsxq.com/id_wocdwsfmfcmp.html)
- ........................................
## 加入星球
![星球qrcode.JPG](static/images/星球qrcode.JPG)

View File

@ -1,8 +1,7 @@
# 关于词云图相关操作 # 关于词云图相关操作
### 1.如何正确调用词云图 ## 1.如何正确调用词云图
> ps:目前只有保存格式为json文件时才会生成词云图。其他存储方式添加词云图将在近期添加。
***ps:目前只有保存格式为json文件时才会生成词云图。其他存储方式添加词云图将在近期添加。***
需要修改的配置项(./config/base_config.py 需要修改的配置项(./config/base_config.py

View File

@ -1,5 +1,4 @@
# 项目代码结构
## 项目代码结构
``` ```
MediaCrawler MediaCrawler

2521
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

10
package.json Normal file
View File

@ -0,0 +1,10 @@
{
"scripts": {
"docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs"
},
"devDependencies": {
"vitepress": "^1.3.4"
}
}