阿里云优惠券|阿里云幸运券

微信公众号文章下载器,用于下载微信公从号的所有文章

以前也是用论坛一位大佬的软件(WeChatDownload)下载文章的,后来微信版本更新了,需要用回旧版本微信才能使用,就弄了个。
设计得比较简单,就是一步一步来,没有使用多线程之类的,也没有以前大佬的那么多功能。

如需要分析微信公众号文章列表的可参考之前的另外一篇分析文章:Fiddler抓取PC版微信公众所有文章数据的分析

软件环境:VS2015+C#+.NET4.0+Fiddler+SQLITE
SQLITE是用来存放文章列表信息的:标题、链接、状态、文章类型等信息
本软件提供源代码,基本的注释都有,需要的可以下载修改。

补充说明:
1、文章下载后,放在软件的根目录下,以公众号名命名的文件夹

2、显示 ok 2022/6/20 16:37:57 的那条信息表示的是获取文章列表成功,文章列表存放在SQLITE数据库中,即:Database.db 文件中,可以用SQLite Expert Personal软件打开,软件有免费版本。当公众号的文章比较多的时候,需要一定的时间才能下载完成。
3、出现:success: 文章标题(http://mp.weixin.qq.com/XXXXXXXX),获取文章成功。 2022/6/20 16:38:41 才表示开始下载文章,出现这个时,根目录下才有公众号命名的文件夹及文章发布时间和文章标题命名的html文件。





补充2:
问:下载过程中,中途停止(意外/主动都算)后接下来是怎么处理的?
答:中途停止分两种情况
       一种是在下载文章列表的时候停止,下次重新获取后,需要从头开始重新获取一次文章列表,但是重复的文章不会保存,只保存上次没有保存的文章。
    (当初设想的时候考虑到这个中止不知道是中止一天还是一个月或是一年,所以就没有去设计保存上次获取的offset,自己动手的可以在数据表中添加个保存offset,下次从这个offset开始。不过需要考虑一种情况,就是中止了很久,中止期间又更新了很多文章的情况)
       一种是在下载文章的时候停止,这个没有影响,下次重新开始后,会从接下来的一篇未保存的文章开始保存(数据库有记录哪篇已下载)。


文章列表获取的原理:当一次文章列表获取完成时,会在数据表中记录最后一次完整获取的时间,当下次再获取同一公众号时,会从最新的开始获取,然后一直找到上次完整获取时间的前3天。比如上次完整获取为2022-6-3日,这次会从最新的开始,一直获取到2022-6-1日为止,冗余几天是为了防止漏掉文章。
所以如果没有一次完整获取文章列表,那就会每次都从头到尾的获取一次。

文章存放形式

软件功能:获取一个公众号里的所有文章,然后保存成HTML文件。一篇文章一个HTML文件。
不实现功能:付费文章隐藏了的不能下载,视频不能下载,音频没有下载。图片没有下载,直接使用图片链接地址。
下载时间:假设1000篇文章,没有出错等情况下,下载完成所需时间:1000/10*20+1000*20=6.2小时。
                 获取文章列表的参数每30分钟过期一次,1000篇文章中间需要重新获取一次参数。
                 觉得时间太久的,可以自行修改 获取时间间隔,不建议过快,太频繁有可能会触发微信的防采集机制而限制访问某公众号。
                 由于采集太快还导致一段时间限制访问某公众号的,一般隔天会恢复。(使用20秒的间隔测试过采集多个公众号,合计大几千文章没有出现过限制访问的情况)
注意:虽然测试过采集多个公众号,不过由于微信文章表示形式多样,可能会出现采集出错或是采集后内容与原文不一致的情况。

测试过的平台(VB虚拟机):WIN7_X86+.NET4.0,WIN7_X64+.NET4.0,WIN10_X86,WIN10_X64,微信版本:3.7.0

动图演示:

界面

session参数有效时间为30分钟,超过30分钟就会超时,需要重新获取


重新获取session参数

使用方法:
1、先关掉所有正在打开的公众号文章。
2、点击【①获取参数】,然后再打开需要下载文章的公众号,选择打开公众号里任意一文章。
3、文章加载完全后,【运行日志】里会显示获取的各项参数。当参数获取完成后,会自动开始获取文章。
4、请不要多开本软件。

获取一个公众号里文章的流程:
先获取必须的参数-->获取公众号的所有文章并入SQLITE数据库里-->再从数据库里取出文章,一篇一篇下载并做标记。

获取内容:
只是把文章的内容保存,没有做处理。图片使用的是网络地址,没有保存留言,可以自己修改添加上去。

会产生的问题及解决方法:
1、当正在获取参数的时候,浏览器可能会出现:【未连接:有潜在的安全问题】,而不能浏览网页。
解决方法:大概原因是Fiddler的证书问题,只需要等参数获取完成或手动停止参数获取即可恢复。

2、当没有关闭现有打开的公众号文章时,此时点击【获取参数】有可能会获取到当前浏览文章的参数,当你要获取另外一个公众号的数据时,可能会出现参数错误的情况。
解决方法:先关掉所有正在浏览的公众号文章,然后再点击【①获取参数】,再打开需要下载的公众号的任意一文章。

3、出现提示error类的信息问题。
解决方法:一般按照方法重试一/几次就可以。如果不行,可关掉软件重新打开。

4、在获取参数时,软件意外关闭或是主动关闭,再访问网页时会提示:【代{过}{滤}理服务器拒绝连接】
解决方法:这是由于在获取参数时,软件会修改系统的代{过}{滤}理,如果没有停止,该代{过}{滤}理会一直存在。只需要重开软件,点击【①获取参数】,然后再点击【①停止获取】即可。

5、正在获取文章时,软件意外或主动关闭后,重新打开后,以前文章是否会重复获取或下载。
答:不会重复,在获取文章列表时关闭,下次重开后,还是会重第一篇文章开始获取,找到重复的会自动跳过。
      当在下载文章时关闭,下次重开后,会从下一篇未下载的文章开始下载。

6、由于Fiddler证书安装问题,可能会出现其它未知错误,请使用搜索引擎查找相关解决方法,或提供可复现的方案进行回帖。

7、有时候会出现打开文章后,参数没有获取完全,一直不进行采集。
解决方法:关掉文章后再打开一次一篇文章即可,尽量不使用刷新,有些参数只有第一次打开才有。

8、软件被WIN10的安全中心删除了怎么办?
解决方法:通过安全中心,添加到排除列表里面。

免责和隐私声明:
1、本软件只用于个人技术学习和免费使用,请勿用于非法用途,如产生法律纠纷与本人和52破解论坛无关。
2、本软件在任何情况下都不会收集个人隐私及其它任意数据。
3、本软件为开源软件,如经过修改,发生任何意外情况均与本人和52破解论坛无关。

软件

链接: https://pan.baidu.com/s/16QojgMOwGxVOtdDa5X52RA?pwd=h32s 提取码: h32s

本文转载于:https://www.52pojie.cn/thread-1651719-1-1.html

发表评论

您的电子邮件地址将不会发布。