![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/31d9de323c48942644da05b628b5b623.jpeg)
不知道你有没有这样的经历。
偶然间,关注了一个自己特别感兴趣的公众号,感觉就像是挖到了一个宝藏。于是,我们就想翻一翻宝藏里都有什么。
但是,如果你想看到宝藏最开始的内容,你不得不翻山越岭,刷到公众号的历史起点。这还不算什么,等你下次想要接着看下一篇时,不得不重蹈覆辙。
那么,我们有什么办法解决一下这个问题呢?
用万能的python写个脚本,我们就可以把公众号历史所有的文章批量的保存为本地的PDF,这样,就可以根据标题和日期来看自己喜欢的文章啦!
核心内容:
1 抓包工具Fiddler的配置及其使用
2 python获取公众号全部历史文章url地址
3 把url转化为PDF
4 获取单个文章的方法
1 抓包工具Fiddler的配置及使用
客户端和服务器之间建立一个代理服务器,监听本机发出的请求和服务器返回的响应结果。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/7ad8427d3af6c56af619b4483b5249a2.png)
浏览器与服务器之间通过建立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”是下载安全证书的。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/705162149a7f25056f60cf47187f7a5e.png)
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源码分析
以我的公众号为例,如图。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/eda272e1e7f133ab2bf3298af122a250.jpeg)
2)打开Fiddler,监听url 通过对比,前后两个url,可以发现,只是offset这个参数有所改变。
一些重要的关键字段: __biz : 用户和公众号之间的唯一id
uin :用户的私密id key :请求的秘钥,一段时候只会就会失效 offset :偏移量
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/eac8511a93b249d0d6353b0158005f1d.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/27580be0b185eb36ddbc7d0bac1e9b07.jpeg)
图的右下角,我们可以看到返回的数据类型,及其格式。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/aa062456c43fd359c184ad45485e225a.jpeg)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/ae326e96fa24f24e5656150adc696368.jpeg)
看看,reponse_dict的内容。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/67f4980779f621be959849a7771896e2.png)
根据上图的json字符串,我们要做的是把title、content_url、datetime提取出来。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/219a37d1074c4aa7c0e64fb30c7a3fd9.png)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/a573e4b221b0ce24b1976e689bdde5d7.jpeg)
只有在最后一篇文章时,can_msg_continue=0,其余所有文章都是1。
因此,获取公众号历史文章全部内容,可以加一个死循环,当判断为最后一篇文章时,直接break,结束循环。
完整代码: 关注【小痴印记】公众号,后台回复“公众号历史文章”
3 把url转化为pdf
用到了python第三方库pdfkit,重点在安装。
1)安装pdfkit pip install pdfkit
2)安装wkhtmltopdf 1.下载地址: https://wkhtmltopdf.org/downloads.html,安装到本地即可。 2.将按照目录下的bin添加到环境变量的path中;
3)重启电脑,重启电脑,重启电脑。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/a288010a6c7366b933b9181a62007abe.png)
最终结果:
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/79a52403db3383feae3f5ef45699787e.png)
4 获取单个文章的其他途径
1)在网页上,打开对应的文章,注意,一定要把文章加载到底部(待图片显示完全)
2)我用的谷歌浏览器,打印-ctrl+p,另存为pdf
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/2d0fabff6e6e4846520d9f6dc7b9e27e.jpeg)
结果如下图:
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/3c4b2ac428ecec35410c3fd140132483.jpeg)
5 文章小结
本文主要介绍了,使用python获取你喜欢的公众号的历史文章,并保存到本地PDF文件。其中,用到了Fiddler抓包工具,首先获得所有文章内容的url地址,然后可把url转为PDF文件,不过,此方法保存的文件,图片不能很好的显示。
所以,如果你只是想打印一篇文章,那么,我建议你可在浏览器端打开指定一篇文章,另存为PDF文件。
回复关键字“Fiddler抓包”,获取“抓包工具” 回复关键字“公众号历史文章”,获取“完整源代码”
推荐阅读: (点击下方标题即可跳转) 暑期实习的那 5 周,我收获了些什么?
GitHub 标星 8w!学完这份指南后,你就可以去 Google 面试了!
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/832a69a3430e5ccfbe9912b29c918c66.jpeg)
⬆️欢迎长按图片识别二维码关注~