欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
【专题】简书下载器:Python-Tkinter项目编程入门
现有问题
简书在【用户头像>设置>账号管理】中有个【下载所有文章】按钮,点击后可以将个人的全部文章都下载成为一个压缩包,解压后包含了所有文章的Markdown文件。
但悲催的是,这个下载所有文字的按钮得到的只有文字,没有图片。那么如果你的文章中使用了大量图片的话,那么这个按钮就毫无帮助。
这篇文章和大家一起研究如何用Python把自己的简书文章完整的下载到电脑上面。
路径分析
登陆后从简书首页右上角【写文章】进入到自己的文章列表页面,地址栏类似:
https://www.jianshu.com/writer#/notebooks/xxxxxxxx/notes/xxxxxxxx
这里的第一组xxxxx序号表示的是每个文集Notebook的序号,后面一组xxxx是每个文章Note的编号,这和页面显示的内容相对应,如下图。
当我们点击切换Notebook时候整个地址栏都会变,因为我们打开了新的文集并默认打开了新文集的第一个文章;如果我们只点击切换Note,那么就只有右侧内容Content会变,因为我们没换文集,只是换了一个文章。
接口分析
在页面上【右键-检查】打开控制面板,切换到【Network】网络选项卡,刷新页面,按type类型排序,找到很多xhr数据请求行。
点击每个请求查看【preview】数据预览,可以看到各个请求获取的数据内容。
仔细对照可以看出几个主要请求接口的数据内容(地址从【Headers】中看到):
-
https://www.jianshu.com/author/notebooks
获取所有文集的列表。 -
https://www.jianshu.com/author/notebooks/xxxxxxxx/notes
获取xxx文集的所有文章列表。 -
https://www.jianshu.com/author/notes/xxxxxxxx/content
获取xxx文章内容文字。
解决思路
- 因为文章是私有内容,所以首先要用Python模拟用户登录,获取到用户相应的Cookie和Session之类。
- 先获取到个人的所有文集Notebooks。
- 循环获取每个文集的所有文章Notes。
- 循环获取每个文章的内容Contents(Markdown格式的.md文件)。
- 检查每个文章中的图片链接,获取这个图片并存放好。
- 把文章中对应的图片链接换为对应的存储的图片地址。
- 找一个能够显示Markdown文件的网页框架。
- 页面框架和所有.md文件放到自己的网页空间上(比如Github)。
- 建立一个机制以便于在自己的空间上更新最新增加的文章。
最后三个不是必须的,后续文章中我们将逐步实现这些思路,请持续关注~
欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
每个人的智能新时代
如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~
END