Hello 大家好,我是安哥。
今天想来给大家介绍一下,如何在不花钱的情况下,批量导出公众号的所有文章。
使用这个方法,需要用到的工具有:
- Python
- 已写好的 Python 代码
- 抓包工具 Fiddler
如果你是第一次接触 Python,请不要被吓到,因为我也是 Python 小白,跟着操作,我也导出了一部分自己公众号的文章,文章格式为 PDF,如下图:
公众号「效率工具指南」部分历史文章
写好的 Python 代码来自 GitHub 上一个项目「vWeChatCrawl」,代码的作者 @LeLe86 也写了一份使用说明和录了一个视频。
GitHub 项目「「vWeChatCrawl」地址:
https://github.com/LeLe86/vWeChatCrawl
01. 安装 Python
打开 Python 官网,下载最新版的 Python3.9.5,支持 Windows、macOS 和 Linux 系统。
Python 官网地址:
https://www.python.org/downloads/
下载之后,打开 Python 安装程序,先勾选安装面板下方的「Add Python 3.8 to PATH」,再点击「Install Now」,一直点下一步等待 Python 完成安装。
图片来自网络
安装好 Python 之后,为了确认我们配置好了环境变量,我们可以按下 Win + S 打开 Windows 自带的搜索,输入 cmd,打开「命令提示符」。
在打开的窗口中,输入 python 后按下回车,如果下方返回 Python 的版本号,例如我这里返回的版本号是 Python 3.9.2 ,则说明 Python 已经配置妥当了。
如果你使用的是 Mac 电脑,则需要在终端中输入 python3,如果下方也同样返回了我们安装的 Python 版本,就说明 Python 环境搭建好了。
02. 安装抓包软件 Fiddler
抓包软件 Fiddler 是为了获取电脑版微信向服务器请求的数据,方便我们后续使用 Python 批量获取公众号文章的 url 链接。
像平常安装普通的软件一样,一直点击下一步完成 Fiddler 的安装,安装好之后它不会在桌面生成快捷方式,你可以在开始菜单面板中找到它。
打开 Fiddler,点击顶部的 Tools 选项卡,选择 Option 打开设置面板。
切换到 HTTPS 选项卡,勾选「Decrypt HTTPS traffic」,接着勾选「Ignore server certificate errors(unsafe)」,软件会弹出一个警告窗口,选择 Yes 就好。
接着还会弹出一个安装证书的「安全警告」,点击「是」安装证书。安装好证书之后,要再次勾选一下「Ignore server certificate errors(unsafe)」,才算完成了设置。
安装好证书之后,点击软件右侧的「Filters」切换到过滤面板,勾选「Use Filters」启用过滤功能。
接着勾选下方的「Show only if URL contains」,在后面的输入框输入下方的内容:
文章不能放入这个链接,只能以图片的形式插入了
接着打开电脑版微信,打开你想导出文章的公众号的任意一篇文章,点击文章顶部的蓝色公众号名称,选择「查看历史消息」。
下图即为公众号的历史文章列表,让这个页面先晾着、保持打开的状态,我们回到抓包软件 Fiddler 中。
点击 Fiddler 工具栏的删除按钮 X,在弹出的面板中,选择「Remove all」,清除下方不需要的数据。
回到微信历史文章页面,点击页面顶部的刷新按钮,往下滑动页面,注意看下图右侧的 Fiddler 的变化:随着我们往下滑动历史文章页面,Fiddler 会同步抓取到我们向服务器发出的请求。
如果你想导出所有文章,就需要将历史文章页面滑动到最底部,让 Fiddler 能获取到所有数据请求。
假设你已经滑动到页面顶部了,Fiddler 获取的请求数据也不再增加了,此时你可以依次点击 Filddler 的菜单 File >> Export Sessions >> All Sessions。
在打开的导出面板中,我们需要选择导出的文件格式,这里选择 Raw Files。
选好格式之后,取消勾选下方的「Recreate folder structure」,再点击右下角的 Export,就可以将获取到的数据导出到电脑桌面。
Fiddler 导出得到的数据,格式为 json,这不是我们最终想要的数据,我们还需要对数据作进一步地处理,才能得到我们想要的公众号文章。
Fiddler 官网地址:
https://www.telerik.com/download/fiddler
Fiddler Windows 版备用下载地址:
https://wwx.lanzoui.com/i8qhbp9rnva
03. 修改代码文件
在开始这一步操作之前,我们需要从 GitHub 项目「vWeChatCrawl」作者的博客下载本次需要用到的 Python 代码。
Python 代码下载地址:
https://www.xiaokuake.com/p/kaiyuanhelp.html
解压下载得到的代码文件夹,首先在文件夹中创建两个新的子文件夹,一个名为 html,一个名为 pdf,这两个文件夹用来存放等会导出的文章。
右击文件夹中的 config.json 文件,在打开方式中,你可以使用记事本打开,如果你的电脑安装了代码编辑器,例如 VS Code,也可以使用编辑器打开。
我们需要在打开的文件中,填入三个文件夹所在的路径,第一个 jsonDir,需要填入我们从 Fiddler 中导出的 json 文件夹的位置。
打开 Fiddler 导出的 json 文件夹,将鼠标放到文件夹顶部的路径位置,鼠标一划,路径位置会切换为可选中的状态,按下 Ctrl + C 复制路径,将其粘贴到 config.json 文件中 jsonDir 的位置。
config.json 文件中的 htmlDir 和 pdfDir,则分别填入我们在代码文件夹中创建的两个子文件夹的位置。
分别填入之后,按下 Ctrl + S 保存我们对 config.json 文件作出的修改。
按下 Win + S 打开 Windows 自带的搜索,输入 cmd,打开「命令提示符」。
下图左侧就是我们打开的命令提示符窗口,在其中输入 cd,后面加上一个空格,接着再将代码文件夹 vWechatCrawl 的路径粘贴到空格后边。
粘贴路径之后,按下回车键 Enter,进入代码文件夹中。
接着输入 python setupPackage.py,按下回车键,它就会帮我们安装等会 Python 需要用到的一些第三方库或者模块。
安装的时候它会出现一些黄颜色的警告信息 WARNING,这些信息不是说我们的程序出错了,只是一个提醒而已,可以忽略它们。
接着输入 python start.py,导出文章的 python 程序就会开始运行啦,你可以去到 html 文件夹中,会发现文件夹中多出一些 html 文件和一个名为 images 的文件夹。
Python 程序自动抓取的文章
在浏览器中打开任意一个 html 文件,就能看到我们用 Python 导出的文章啦,文章格式、排版和原来的一样,文章中的图片也没有丢失。
如果你想得到 PDF 格式的文章,可以在命令提示符窗口中按下 Ctrl + C,先暂停当前正在运行的 Python 程序。
接着输入 python start.py pdf,让 Python 程序将我们刚刚得到的 html 格式的文章转换为 PDF。
输入上面的命令,有的朋友可能会遇到一个错误提示「计算机丢失 MSVCR120.ddl」,这是因为系统缺少了一个与转换为 PDF 相关的组件 vcredist。
vcredist 组件下载地址:
https://wwx.lanzoui.com/i2kKjpaqwpi
安装组件之后,再次在命令提示窗口中输入 python start.py pdf,Python 程序就会将 HTML 格式的文章,自动转换为 PDF 格式。
下图就是 Python 程序将我的部分文章转换为 PDF 的效果啦,相比 HTML 格式,PDF 格式的文章命名比较规范,它会带上文章发布的日期和文章名称,更方便我们查看。
当然,使用这个 Python 导出文章的过程中,我也遇到了一个暂时还没有解决的问题:
如果你抓取的文章列表中包含有纯视频的内容,例如我之前在公众号发过的一期视频,那么这个视频内容就会使得程序出错,导致无法继续获取后面的文章。
程序出错
对于这个问题,可能只有修改 Python 代码,让程序自动跳过视频内容,才可以顺利导出后面的文章。
只是我还不知道怎么改,只能在线等有缘人、热心人来改代码了。
以上就是本次想和你分享的内容。