起因
我个人算是极客时间的忠实用户,以前一段时间也是一直在极客时间购买课程,这里我想赞美一下极客时间的阅读体验(虽然我也想过将专栏持久化下来生成PDF,但其优越的阅读体验一直阻挠着我~👍)
这两天看领域驱动设计,发现GitChat一篇相关的课程不错,纠结一番购买后,在阅读过程中真心感觉GitChat的阅读体验真是辣眼睛,可能是我开始老花眼了?
突然右上角发现可以下载成PDF,心中一喜,GitChat还是挺上道的,虽然只能下载一章节,待我满怀希望地点击下载,我去,那么大的水印,我看着更!加!花!了!
所以,自己干吧,🤷♀️。思路很简单:
•利用爬虫模拟请求对应专栏并持久化成Markdown文件•利用Pandoc[1]批量将Markdown文件转化成PDF•批量将PDF合并,并根据文件名称以及页数添书签•写文章分享😀
最终成果:
放到Ipad上结合Expert进行阅读,完美了
使用
脚本怎么写我就不详细说,直接开源☞极客时间专栏PDF生成脚本[2]、 GitChat专栏PDF生成脚本[3] ,我觉得说说怎么用就好:
首先克隆项目:
git clone https://github.com/howie6879/ruia_spider.git cd ruia_spider.git # 确保有Python3.6+的环境 pipenv install # 利用PyCharm打开项目
在开始之前,需要点准备工作,也就是安装Pandoc[4],跟着我走:
# Mac系统哈,其他的自行谷歌,流程类似 brew install pandoc # 安装 [tinytex](https://yihui.name/tinytex/) sh -c "$(curl -sL "https://yihui.name/gh/tinytex/tools/install-unx.sh")" # 安装扩展 tlmgr install unicode-math filehook xecjk xltxtra realscripts fancyhdr lastpage ctex ms cjk ulem environ trimspaces zhnumber collection-fontsrecommended
接下来的工作就是执行脚本了,以下载GitChat专栏为例,首先打开文件gitchat/gen_pdf.py
:
请注意这两个字段customerId、customerToken
,这需要你自己手动填写,怎么弄,流程如下:
•进入GitChat官网,登录
•进入已经购买过的课程页面,比如领域驱动设计实践(战略篇)[5
•谷歌浏览器右键Inspect->Network->刷新当前资源页面->查看Cookies
•就能获取到这两个字段的值
将上图的两个值填入脚本中,然后执行该脚本,正常输出如下:
[2019:08:27 21:27:29] INFO Spider Spider started! [2019:08:27 21:27:29] INFO Spider Worker started: 4375136048 [2019:08:27 21:27:29] INFO Spider Worker started: 4375136184 [2019:08:27 21:27:33] INFO Spider Stopping spider: Ruia [2019:08:27 21:27:33] INFO Spider Total requests: 37 [2019:08:27 21:27:33] INFO Spider Time usage: 0:00:03.324412 [2019:08:27 21:27:33] INFO Spider Spider finished! [2019:08:27 21:27:33] INFO Spider 课程内容爬取完毕:/Users/howie6879/Documents/python/git/ruia_spider/gitchat/领域驱动设计实践(战略篇),即将生成PDF... [2019:08:27 21:27:33] INFO Spider 所有PDF转化完毕:/Users/howie6879/Documents/python/git/ruia_spider/gitchat/领域驱动设计实践(战略篇)/pdf,即将合并所有PDF... [2019:08:27 21:27:33] INFO Spider 合并成功:领域驱动设计实践(战略篇).pdf
完毕,美滋滋,PDF&MD文件都有了:
最后
如果这个脚本对你有用,请点好看!附上实际使用效果:
References
[1]
Pandoc: https://pandoc.org/
[2]
极客时间专栏PDF生成脚本: https://github.com/howie6879/ruia_spider/tree/master/geekbang
[3]
GitChat专栏PDF生成脚本: https://github.com/howie6879/ruia_spider/blob/master/gitchat/README.md
[4]
Pandoc: https://pandoc.org/
[5]
领域驱动设计实践(战略篇): https://gitbook.cn/gitchat/column/5b3235082ab5224deb750e02