前言
先叠个甲:本软件免费,请别拿去卖钱。TX有反爬机制,一次性爬几百篇文章有封号风险(只是封接口,不影响微信正常使用)。最后,摊上事别赖我。。。
弄这个软件的起因是经常看的一个微信公众号的文章经常发出去没几天就被404,那不如将文章保存到本地。加上最近在学Electron和TypeScript,于是就有了WechatDownload
软件
下载链接:WechatDownload
源码地址:https://github.com/xiaoguyu/wechatDownload
页面
使用
单篇文章下载
直接输入链接,点击下载按钮即可(此功能无需安装证书,如需要下载评论,请使用监控下载)
此方式无需登录微信,也因此无法获取评论和文章中QQ音乐音频,如需要这两样数据,请使用批量下载或监控下载
批量下载
批量下载需要代理,如果是初次使用,需要安装证书(只需要安装一次)
- 初次使用请安装证书
设置中心 → 打开证书路径 → 打开rootCA.crt文件
-
批量下载
- 需要安装电脑版微信
- 在WechatDownload点击批量下载按钮
- 在电脑版微信打开一篇需要下载的公号的文章
- 回到WechatDownload,会弹框提示
-
监控下载
- 需要安装电脑版微信
-
在WechatDownload点击监控下载按钮(按钮会变颜色)
-
在电脑版微信打开需要下载的文章(可以打开多篇文章)
-
回到WechatDownload,再次点击监控下载按钮即可开始下载
-
保存至 MySql
需要执行文章末尾的 SQL 语句创建表
-
线程配置
时间间隔:单位是毫秒,假设时间间隔500,单线程是下载完一篇文章,等待500毫秒再继续下载。多线程就是每500毫秒异步下载文章,无需等待上一篇文章下载完成。
单批数量:假设单批数量10,每次会同时异步下载10篇文章,等待这10篇下载完成,再继续下载10篇。
功能
其实,支持啥页面一看就知道了。
- 支持选择下载范围
- 将网页抓换成HTML、Markdown、PDF
- 将网页源码保存至Mysql(下载来源是网络才有效)
- 下载图片、音频到本地
- 添加原文链接、元数据(作者、时间、公号名)
- 跳过现有文章
- 下载评论
下载来源(此选项只影响批量下载):
- 网络:就是从微信接口获取文章
- 数据库:如果选择了保存至Mysql选项,数据库中会保存文章的网页源码,此时如果需要将源码转换成HTML、Markdown ,选择下载来源是数据库即可。(微信接口用得多会被限制)
如需要用到数据库相关功能,请先创建相应的数据库表
DROP TABLE IF EXISTS wx_article;
CREATE TABLE wx_article (
id INT ( 11 ) NOT NULL AUTO_INCREMENT,
title VARCHAR ( 255 ) NULL DEFAULT NULL COMMENT '标题',
content LONGTEXT NULL COMMENT '内容',
author VARCHAR ( 255 ) NULL DEFAULT NULL COMMENT '作者',
content_url VARCHAR ( 1023 ) NULL DEFAULT NULL COMMENT '详情链接',
create_time datetime ( 0 ) NULL DEFAULT NULL,
copyright_stat INT ( 11 ) NULL DEFAULT NULL,
PRIMARY KEY ( id ) USING BTREE,
UNIQUE INDEX uni_title ( title, create_time ) USING BTREE
) ;
-- 2023-4-1 添加评论字段
ALTER TABLE wx_article ADD COLUMN comm LONGTEXT NULL COMMENT '精选评论',
ADD COLUMN comm_reply LONGTEXT NULL COMMENT '评论回复';
最后
没啥好说的了,有意见评论区提吧。欢迎大神帮忙优化代码。
文章评论
希望能增加 macOS 版本,或者网页版
@DC 用Electron写的,理论上支持macOS,只是我没有苹果电脑,没法打包,你可以拉取源码自行编译。
一开始是想做网页版的,只是需要通过代理获取微信的一些参数,所以做成桌面端的。
不能下载评论,大神想想办法吧,多谢。
@BCV 我新增了下载评论的功能,你重新下载安装包更新下就行
能否添加微信,谈谈合作,相关研究所。18*******30
我的怎么检测不到打开的文章
@许 先点批量下载,再打开文章
批量下载点了,再打开文章,一直显示检测不到;单篇复制网址下载是没问题的;监控下载也是一直失败
@yangboy 批量下载需要安装证书
已经使用过,非常棒。
有一个问题,微信文章如果没有发标题、正文、头图这种格式,只是一个简短的一小段文字这种,就会提取失败。这种有办法解决吗?
@卫斯特 可以提供一下失败的文章的链接,我找时间优化下
另外还有一个问题,好像有下载上限。想下载一个公众号写了5、6年,得有1400篇左右,大概每次都下载到500左右就停止了。这个是微信禁止获取接口了吗
@卫斯特 是的,微信有反爬机制。目前我也没找到好的解决办法。
@王谷雨 好的,感谢感谢。已经很棒了
@王谷雨 大佬,测试了一下自定义时间没法批量下载。我之前想分批下载,比如就下19年的,报错:
错误信息:unknown error
@卫斯特 可以试试下载范围选7天内,如果还是unknown error,那就是微信接口被封了。一般一两个星期才能回复。建议不要大批量下载文章。
你好,吾爱破解过去也有个同类功能软件,也叫wechatdownload,是同一个软件吗?貌似界面有差异
@zd 不是,名字一样而已
软件用了下非常好,想提一点额外的建议是能否增加爬取文章中的作者名
@yep 已添加,勾选保存元数据的功能就行
@王谷雨 刚刚测试了下,不勾选"添加原文链接",但是仍会自动保存链接
@yep 额,漏了个if,下个版本修复
你好,v1.3.0 版勾选了下载评论和下载评论回复,粘贴单篇文章的链接下载得到的 html 里没有这两项,证书已安装过。还有2点建议,希望能考虑下,谢谢创作这么好用的软件。
1、下载的文章直接放 savepath 里,不创建同名文件夹存放
2、文章标题的形式为:[公众号标题]-日期 文章标题
@ll 如果需要下载评论,请使用监控下载,具体看文章(我更新了介绍文章)
1. 创建文件夹是因为如果图片、音频等需要下载到本地,可以放在同一个文件夹中
2.文件夹已经做好名字处理了,所以文章就统一使用index
所以我暂时不会进行修改
很牛,找这样的软件好几年了,以前网上有相同名的,不行。你这个,好用
提个意见,下载的图片,在文件夹里保存,能不能按文章排序命名?我用你的软件尝试着下载了文章,在文件夹找到该软件下载的文章,打开,也没问题,在浏览器正常打开,但是文件夹里的图片却没有按序排列,一个文章有很多图片,不按原文序列来排的话,在文件夹里看图就很费劲,希望能增加这个功能。当然我也知道若重命名了,可能文章在浏览器打开时会对不上文件名,但我想知道能不能解决,谢谢
@z 1.4.4版本已经对下载的文件名进行排序
感谢,牛的一塌糊涂
监控下载失效,已经提issue https://github.com/xiaoguyu/wechatDownload/issues/10
点击“监控下载”,然后电脑微信打开“微信公众号文章”,出现下面的界面,再次点击“监控下载” 出现获取文章失败
代理开启成功,准备批量下载...
请在微信打开需要下载的文章,可打开多篇文章
获取文章失败
版本: 微信 3.9.6.33, wechatdownload 1.4.4
日志:
[2023-09-26 10:06:07.375] [info] [ 'setting', 'savePath', 'D:\wechatdownload微信公众号文章' ]
[2023-09-26 10:06:07.375] [info] [ 'setting', 'caPath', 'C:\Users\corebug\.anyproxy\certificates' ]
[2023-09-26 10:06:07.376] [info] [ 'setting', 'mysqlHost', 'localhost' ]
[2023-09-26 10:06:07.377] [info] [ 'setting', 'mysqlPort', 3306 ]
[2023-09-26 10:14:28.711] [info] [ 'setting', 'firstRun', false ]
[2023-09-26 10:14:28.714] [info] [ 'setting', 'dlSource', 'web' ]
[2023-09-26 10:14:28.715] [info] [ 'setting', 'threadType', 'multi' ]
[2023-09-26 10:14:28.716] [info] [ 'setting', 'dlInterval', 500 ]
[2023-09-26 10:14:28.717] [info] [ 'setting', 'batchLimit', 10 ]
[2023-09-26 10:14:28.718] [info] [ 'setting', 'dlHtml', 1 ]
[2023-09-26 10:14:28.719] [info] [ 'setting', 'dlMarkdown', 1 ]
[2023-09-26 10:14:28.719] [info] [ 'setting', 'dlPdf', 1 ]
[2023-09-26 10:14:28.720] [info] [ 'setting', 'dlMysql', 0 ]
[2023-09-26 10:14:28.721] [info] [ 'setting', 'dlAudio', 1 ]
[2023-09-26 10:14:28.721] [info] [ 'setting', 'dlImg', 1 ]
[2023-09-26 10:14:28.722] [info] [ 'setting', 'skinExist', 1 ]
[2023-09-26 10:14:28.723] [info] [ 'setting', 'saveMeta', 1 ]
[2023-09-26 10:14:28.723] [info] [ 'setting', 'sourceUrl', 1 ]
[2023-09-26 10:14:28.724] [info] [ 'setting', 'dlComment', 1 ]
[2023-09-26 10:14:28.724] [info] [ 'setting', 'dlCommentReply', 1 ]
[2023-09-26 10:14:28.725] [info] [ 'setting', 'dlScpoe', 'seven' ]
[2023-09-26 10:14:28.725] [info] [
'setting',
'tmpPath',
'C:\Users\corebug\AppData\Local\Temp\wechatDownload'
]
[2023-09-26 10:14:28.726] [info] [ 'setting', 'savePath', 'D:\wechatdownload微信公众号文章' ]
[2023-09-26 10:14:28.726] [info] [ 'setting', 'caPath', 'C:\Users\corebug\.anyproxy\certificates' ]
[2023-09-26 10:14:28.727] [info] [ 'setting', 'mysqlHost', 'localhost' ]
[2023-09-26 10:14:28.728] [info] [ 'setting', 'mysqlPort', 3306 ]
[2023-09-26 10:18:21.249] [info] [ '触发检查更新' ]
[2023-09-26 10:18:21.250] [info] [ { code: 2, msg: '正在检查更新……' } ]
[2023-09-26 10:18:32.643] [info] [ { code: 4, msg: '现在使用的就是最新版本,不用更新' } ]
@lx 又好了