本文授权转载自:小痴印记
不知道你有没有这样的经历。

偶然间,关注了一个自己特别感兴趣的公众号,感觉就像是挖到了一个宝藏。于是,我们就想翻一翻宝藏里都有什么。

但是,如果你想看到宝藏最开始的内容,你不得不翻山越岭,刷到公众号的历史起点。这还不算什么,等你下次想要接着看下一篇时,不得不重蹈覆辙。

那么,我们有什么办法解决一下这个问题呢?

用万能的python写个脚本,我们就可以把公众号历史所有的文章批量的保存为本地的PDF,这样,就可以根据标题和日期来看自己喜欢的文章啦!

核心内容:

1 抓包工具Fiddler的配置及其使用

2 python获取公众号全部历史文章url地址

3 把url转化为PDF

4 获取单个文章的方法

1 抓包工具Fiddler的配置及使用

1)工作原理

客户端和服务器之间建立一个代理服务器,监听本机发出的请求和服务器返回的响应结果。

浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器。 
而Fiddler是c#开发(微软出品,主要作者Eric Lawrence)的http代理服务器,fiddler工作于七层中的应用层,能够捕获到通过的http(s)请求。
2)下载地址
这是官网:http://www.telerik.com/fiddler你也可以在公众号【小痴印记】后台,回复关键字“Fiddler抓包”直接获取。
3)配置https
默认情况下,Fiddler是不会捕获HTTPS会话的,初次使用时,需要下载安全证书,并配置。
具体步骤:依次点击“Tools-Options-Https”,进行如下图的配置,“Actions-Trust root”是下载安全证书的。

4)设置局域网ip和端口号
Fiddler的运行机制其实就是本机上监听 8888 端口的 HTTP 代理。
Fiddler 启动的时候默认 IE 的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置的,所以将 Chrome 浏览器的代理改为127.0.0.1:8888 就可以监听数据了。
具体操作步骤,见第一篇参考文章:https://blog.csdn.net/jingjingshizhu/article/details/80566191

注意:运行爬虫程序时,要关闭Fidder客户端

2 python源码分析

1)打开微信客户端,点开某一个公众号的历史文章界面

以我的公众号为例,如图。

2)打开Fiddler,监听url通过对比,前后两个url,可以发现,只是offset这个参数有所改变。

一些重要的关键字段:__biz : 用户和公众号之间的唯一id
uin :用户的私密idkey :请求的秘钥,一段时候只会就会失效offset :偏移量

        
图的右下角,我们可以看到返回的数据类型,及其格式。
           好啦,接下来,我们可以获取一页内容看看啦。
看看,reponse_dict的内容。


根据上图的json字符串,我们要做的是把title、content_url、datetime提取出来。
见下图。
至此,我们成功的获取到了标题、时间、内容url等信息。

只有在最后一篇文章时,can_msg_continue=0,其余所有文章都是1。
因此,获取公众号历史文章全部内容,可以加一个死循环,当判断为最后一篇文章时,直接break,结束循环。
完整代码:关注【小痴印记】公众号,后台回复“公众号历史文章”

3 把url转化为pdf

用到了python第三方库pdfkit,重点在安装。
1)安装pdfkit pip install pdfkit
2)安装wkhtmltopdf1.下载地址:https://wkhtmltopdf.org/downloads.html,安装到本地即可。2.将按照目录下的bin添加到环境变量的path中;
3)重启电脑,重启电脑,重启电脑。

最终结果:

4 获取单个文章的其他途径

1)在网页上,打开对应的文章,注意,一定要把文章加载到底部(待图片显示完全)
2)我用的谷歌浏览器,打印-ctrl+p,另存为pdf

结果如下图:

5 文章小结

本文主要介绍了,使用python获取你喜欢的公众号的历史文章,并保存到本地PDF文件。
其中,用到了Fiddler抓包工具,首先获得所有文章内容的url地址,然后可把url转为PDF文件,不过,此方法保存的文件,图片不能很好的显示。
所以,如果你只是想打印一篇文章,那么,我建议你可在浏览器端打开指定一篇文章,另存为PDF文件。
回复关键字“Fiddler抓包”,获取“抓包工具”回复关键字“公众号历史文章”,获取“完整源代码”
推荐阅读:(点击下方标题即可跳转)暑期实习的那 5 周,我收获了些什么?
GitHub 标星 8w!学完这份指南后,你就可以去 Google 面试了!

⬆️欢迎长按图片识别二维码关注~

我是怎么保存公众号历史文章合集到本地的?当然是用python了!相关推荐

  1. 2021 年公众号历史文章合集

    作者 | JiekeXu 大家好,我是JiekeXu,很高兴又和大家见面了,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达! 2021 年也已经过去了,平平淡淡的 2021 走到了尽头,这一 ...

  2. python爱好者社区公众号历史文章合集_如何优雅的抓取微信公众号历史文章

    这是几天前在公众号上发的文章,主要讨论现在微信公众号文章抓取的一般思路以及优缺点,我不会讲技术细节,但我会分享别人已经开源的项目,你可以参考代码开了解其中的细节. 背景 微信公众号历史记录只可以通过客 ...

  3. python爱好者社区公众号历史文章合集_GitHub - acherie/weixin_crawler: 高效微信公众号历史文章和阅读数据爬虫powered by scrapy...

    What is weixin_crawler? weixin_crawler是一款使用Scrapy.Flask.Echarts.Elasticsearch等实现的微信公众号文章爬虫,自带分析报告和全文 ...

  4. 个人公众号历史文章合集

    初次玩微信公众号,欢迎关注 给自己写的一篇命令行模式文章 Git教程-自己为自己总结的一篇教程 springboot整合mongodb java校验器的使用 java之缓存的使用 java之手机号校验 ...

  5. python爱好者社区公众号历史文章合集_精心整理 |人工智能爱好者社区历史文章合集(作者篇)...

    公众号创办两年来,感谢小伙伴们长期的支持和关注,也感谢各位投稿老师带给我们的好作品,支撑起了我们这个社区,让更多人工智能爱好者和从业者获得更棒的知识给养.六月已经过去了,在这年中之际,小编选取在人工智 ...

  6. nsx很可爱的公众号 vSAN 文章合集

    本公众号一开始计划只写 NSX 的话题,最近有些跑偏,这其中与本人的工作变动相关,但更多的原因是,我想去完成一些曾经没有尝试过的操作,记录下来,再分享给大家. https://mp.weixin.qq ...

  7. 原创 Spark go nsx很可爱的 公众号 vSAN 文章合集

    https://mp.weixin.qq.com/s/j0OOCJjl88_pDPojna5K0g 本公众号一开始计划只写 NSX 的话题,最近有些跑偏,这其中与本人的工作变动相关,但更多的原因是,我 ...

  8. 订阅号微信公众号历史文章爬虫php,一步步教你怎么打造微信公众号历史文章爬虫...

    原标题:一步步教你怎么打造微信公众号历史文章爬虫 开篇语: 邓爷爷曾说过:不管黑猫白猫,逮到耗子就是好猫.不管我是凑的还是笨办法堆出来的,确实把批量导出微信公众号所有历史文章的这个功能给做出来了,而且 ...

  9. Python从放弃到入门,公众号历史文章爬取成pdf的项目实践与自主学习法

    这篇文章不谈江流所专研的营销与运营,而聊一聊技能学习之路,聊一聊Python这门最简单的编程语言该如何学习,我完成的第一个Python项目,将任意公众号的所有历史文章导出成PDF电子书. 或许我这个P ...

最新文章

  1. android 高德地图设置不能旋转_这个地图APP,专注于地图软件该做的事!
  2. flask 与layui冲突
  3. Android中开发习惯
  4. 雷观(十五):提高生产力和程序员价值的2种方法
  5. 多线程中的队列不一定需要线程安全
  6. java文件共享ftp怎么访问_文件共享服务器
  7. vue.js框架的生命周期:常用钩子函数
  8. java 双重检查加锁弊端
  9. 面趣 | 马云在面试中出的一道题,据说只有一个人答对……
  10. 神经网络技巧篇之寻找最优参数的方法【续】
  11. D 语言是否可作为入门级的编程语言?
  12. pytorch 中 torch.optim.Adam 方法的使用和参数的解释
  13. [摘译]js内存泄漏常见的四种情况
  14. bzoj 3671 贪心
  15. Transfer-Encoding
  16. 想了解APT与加密勒索软件?那这篇文章你绝不能错过……
  17. 收藏啦~ Github上 10 个开源免费且优秀的后台控制面板
  18. 类名作为形式参数传递
  19. Objective-C 日记② 关于self用法
  20. Winamp v5.6.6.3516

热门文章

  1. 安装icephp 记
  2. python简单小游戏代码_一个简单的python小游戏---七彩同心圆
  3. mssql 查询无记录时sum_只会使用Sum函数求和,那就真的Out了,不信你试试Sumif、Sumifs、Sumproduct等...
  4. swiper用loop不出图片_swiper实现双向控制
  5. android 能自动选择的listview,Android ListView多选模式
  6. java扫雷教程_java实现简单扫雷游戏
  7. linux双核对线程,Linux检查双核(及多核)CPU信息
  8. 计算机重装系统知识,电脑重装系统基础知识扫盲贴
  9. 画时域随机信号波形_【鼎阳硬件智库原创︱测试测量】任意波形发生器的基本输出波形及其相关参数...
  10. 【CKEditor】上传图片接口接收不到CKEditorFuncNum参数