docs: 在线文档support & 知识付费栏目汇聚
|
@ -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
|
|
@ -168,3 +168,5 @@ cython_debug/
|
||||||
|
|
||||||
*/.DS_Store
|
*/.DS_Store
|
||||||
.vscode
|
.vscode
|
||||||
|
/node_modules
|
||||||
|
docs/.vitepress/cache
|
109
README.md
|
@ -36,73 +36,18 @@ MediaCrawler仓库白金赞助商:
|
||||||
| 知乎 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
|
| 知乎 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
|
||||||
|
|
||||||
|
|
||||||
## 使用方法
|
|
||||||
|
|
||||||
### 创建并激活 python 虚拟环境
|
|
||||||
```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
|
|
||||||
```
|
|
||||||
|
|
||||||
### 数据保存
|
|
||||||
- 支持关系型数据库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,6 +59,11 @@ 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对本仓库赞助
|
||||||
|
@ -122,16 +72,6 @@ MediaCrawler仓库白金赞助商:
|
||||||
|
|
||||||
成为赞助者,可以将您产品展示在这里,每天获得大量曝光,联系作者微信: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)
|
||||||
|
|
|
@ -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'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
|
@ -0,0 +1,61 @@
|
||||||
|
# MediaCrawler使用方法
|
||||||
|
## 免责声明
|
||||||
|
> **免责声明:**
|
||||||
|
>
|
||||||
|
> 大家请以学习为目的使用本仓库,爬虫违法违规的案件:https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China <br>
|
||||||
|
>
|
||||||
|
>本项目的所有内容仅供学习和参考之用,禁止用于商业用途。任何人或组织不得将本仓库的内容用于非法用途或侵犯他人合法权益。本仓库所涉及的爬虫技术仅用于学习和研究,不得用于对其他平台进行大规模爬虫或其他非法行为。对于因使用本仓库内容而引起的任何法律责任,本仓库不承担任何责任。使用本仓库的内容即表示您同意本免责声明的所有条款和条件。
|
||||||
|
|
||||||
|
|
||||||
|
## 创建并激活 python 虚拟环境
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
|
||||||
|
## 数据保存
|
||||||
|
- 支持关系型数据库Mysql中保存(需要提前创建数据库)
|
||||||
|
- 执行 `python db.py` 初始化数据库数据库表结构(只在首次执行)
|
||||||
|
- 支持保存到csv中(data/目录下)
|
||||||
|
- 支持保存到json中(data/目录下)
|
|
@ -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代理池,让你的爬虫更加稳定**。
|
||||||
|
相较于MediaCrawler,Pro版本最大的变化:
|
||||||
|
- 去掉了playwright的依赖,不再将Playwright集成到爬虫主干中,依赖过重。
|
||||||
|
- 增加了Docker,Docker-compose的方式部署,让部署更加简单。
|
||||||
|
- 多账号+IP代理池的支持,让爬虫更加稳定。
|
||||||
|
- 新增签名服务,解耦签名逻辑,让爬虫更加灵活。
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 170 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |
Before Width: | Height: | Size: 189 KiB After Width: | Height: | Size: 189 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 223 KiB After Width: | Height: | Size: 223 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 241 KiB After Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 484 KiB After Width: | Height: | Size: 484 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 261 KiB After Width: | Height: | Size: 261 KiB |
Before Width: | Height: | Size: 241 KiB After Width: | Height: | Size: 241 KiB |
24
docs/代理使用.md
|
@ -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 的数量
|
||||||
|
|
||||||
|
|
|
@ -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
|
11
docs/常见问题.md
|
@ -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>
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
# 开发者咨询
|
||||||
|
|
||||||
|
## 咨询价格
|
||||||
|
|
||||||
|
提供200/小时的咨询服务,最低收费为1小时,帮你快速解决项目中遇到的问题
|
||||||
|
|
||||||
|
##### 支持的提问类别
|
||||||
|
- MediaCrawler项目源码解读、安装、部署、使用问题
|
||||||
|
- 爬虫项目开发问题
|
||||||
|
- Python、Golang、JavaScript等编程问题
|
||||||
|
- JS逆向问题
|
||||||
|
- 其他问题(职业规划、工作经验等)
|
||||||
|
|
||||||
|
## 加我微信
|
||||||
|
> 备注:咨服服务
|
||||||
|
>
|
||||||
|
![微信二维码](static/images/relakkes_weichat.JPG)
|
|
@ -0,0 +1,12 @@
|
||||||
|
# MediaCrawler项目微信交流群
|
||||||
|
|
||||||
|
👏👏👏 汇聚爬虫技术爱好者,共同学习,共同进步。
|
||||||
|
|
||||||
|
❗️❗️❗️群内禁止广告,禁止发各类违规和MediaCrawler不相关的问题
|
||||||
|
|
||||||
|
## 加群方式
|
||||||
|
> 备注:github,会有拉群小助手自动拉你进群。
|
||||||
|
>
|
||||||
|
> 如果图片展示不出来或过期,可以直接添加我的微信号:yzglan,并备注github,会有拉群小助手自动拉你进群
|
||||||
|
|
||||||
|
![relakkes_wechat](static/images/relakkes_weichat.JPG)
|
|
@ -1,4 +1,5 @@
|
||||||
## 关于手机号+验证码登录的说明
|
# 关于手机号+验证码登录的说明
|
||||||
|
> 配置过程相当复杂,不建议采用该种方式
|
||||||
|
|
||||||
当在浏览器模拟人为发起手机号登录请求时,使用短信转发软件将验证码发送至爬虫端回填,完成自动登录
|
当在浏览器模拟人为发起手机号登录请求时,使用短信转发软件将验证码发送至爬虫端回填,完成自动登录
|
||||||
|
|
||||||
|
@ -15,6 +16,5 @@
|
||||||
|
|
||||||
备注:
|
备注:
|
||||||
|
|
||||||
- 小红书这边一个手机号一天只能发10条短信(悠着点),目前在发验证码时还未触发滑块验证,估计多了之后也会有~
|
|
||||||
- 短信转发软件会不会监控自己手机上其他短信内容?(理论上应该不会,因为[短信转发仓库](https://github.com/pppscn/SmsForwarder)
|
- 短信转发软件会不会监控自己手机上其他短信内容?(理论上应该不会,因为[短信转发仓库](https://github.com/pppscn/SmsForwarder)
|
||||||
star还是蛮多的)
|
star还是蛮多的)
|
|
@ -0,0 +1,19 @@
|
||||||
|
# 知识付费介绍
|
||||||
|
开源是一种无私奉献,从MediaCrawler开源到现在有一年多,它并没有带给我多少实质性的东西,就拿收入来说,赞助费、赞赏等等全部加起来还没有之前一个月的薪水。
|
||||||
|
|
||||||
|
后面搞了MediaCrawler源码剖析课程之后,收入稍微好一点,但也是群里兄弟对我开源的支持,在此也非常感谢你们~
|
||||||
|
|
||||||
|
但是我依然坚持持续开源,从开始的xhs、dy 2个平台支持,到现在已经有**7个平台**支持,每一次增加一个平台其实都会耗费很大的时间去写代码和调试代码。。。。
|
||||||
|
|
||||||
|
在今天跟一个群里好朋友聊天,他说:开源开发者也要活下去。你不要不好意思做知识付费,你的劳动是有价值的。
|
||||||
|
|
||||||
|
他点醒我了,因此我把我所提供的知识付费内容放在下面,有需要的朋友可以看看~
|
||||||
|
|
||||||
|
## MediaCrawlerPro项目源码订阅服务
|
||||||
|
[mediacrawlerpro订阅文档说明](mediacrawlerpro订阅.md)
|
||||||
|
|
||||||
|
## MediaCrawler源码剖析视频课程
|
||||||
|
[mediacrawler源码课程介绍](https://relakkes.feishu.cn/wiki/JUgBwdhIeiSbAwkFCLkciHdAnhh)
|
||||||
|
|
||||||
|
## 知识星球爬虫逆向、编程专栏
|
||||||
|
[知识星球专栏介绍](知识星球介绍.md)
|
|
@ -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)
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
# 关于词云图相关操作
|
# 关于词云图相关操作
|
||||||
|
|
||||||
### 1.如何正确调用词云图
|
## 1.如何正确调用词云图
|
||||||
|
> ps:目前只有保存格式为json文件时,才会生成词云图。其他存储方式添加词云图将在近期添加。
|
||||||
***ps:目前只有保存格式为json文件时,才会生成词云图。其他存储方式添加词云图将在近期添加。***
|
|
||||||
|
|
||||||
需要修改的配置项(./config/base_config.py):
|
需要修改的配置项(./config/base_config.py):
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
# 项目代码结构
|
||||||
## 项目代码结构
|
|
||||||
|
|
||||||
```
|
```
|
||||||
MediaCrawler
|
MediaCrawler
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|