Golang爬虫实践-将你的掘金小册装进kindle

1,895 阅读3分钟

背景:

不知不觉在掘金买了好几本小册了,基本没怎么看,在电脑或者手机上看,看一会就觉得累,还要打开掘金的网站,找到自己的小册,零碎的时间根本用不上。平时自己用kindle比较多,就像把掘金小册装进kindle多好,就算批量下载到电脑上,也比打开掘金网站找小册强,于是就产生了这个项目。

项目思路:

项目的思路比较简单,分为下面几个步骤。

  1. 分析掘金小册站点,我们每次点击一个章节,都会发现URL的后面一串会发生变化,于是怀疑这一串字符就是每章节的ID,于是首先要获取的就是整个小册的所有章节ID;
  2. 经过上面思路的寻找,就找到了XHR请求中get?uid这个请求,看了一下response,果然有一串是sectionID;
  3. 拿到所有章节ID后,就要找获取章节内容的API,这时你可以在开发者工具的filter中,搜索section(直觉),可以找到getSection?uid的API,打开一看,果然就是根据sectionID获取内容;
  4. 所有API找到后,就可以构造参数,爬取你想要的内容了。

Github README

直接把GitHub上的README拿过来了,写的比较详细,适合小白入手。


将你的掘金小册装进kindle

  1. 下载掘金小册保存为MarkDown的格式
  2. 下载掘金小册保存为mobi格式

注意:转成mobi用的是这个项目,只支持一级目录和二级目录,导致目前mobi格式比较乱,里面的图片没有处理,如果你有好用的转mobi的工具或者代码,一定提issue告诉我,或者直接contribute.

使用方法

  • 从掘金小册的站点获取client_id,uid,token等信息,填入./config/config.json中
  • go run main.go
  • 对于没有Go环境的小伙伴,在tool文件夹中已经编译好了Linux&Mac版本的可执行文件,./juejinxiaoceToolForLinux或者./juejinxiaoceToolForMac即可
  • 等待你的小册出炉🍺

小白操作步骤

  1. 登录掘金网站,打开你的一本小册,如下图:

  1. windows按F12,Mac使用快捷键conmand+shift+i,进入开发者工具,如下图:

  1. 选择XHR(意思是过滤Ajax的异步请求),刷新一下网页,找到get?uid=xxx,上图中红色圈出部分。点击get?uid=xxx部分,可以看到该API的请求与返回等信息,其实就是我们需要的uid,id,token等,如下图所示:

  1. 可以点击response查看该API的返回信息,对于golang来说也是构造结构体的关键,具体可查看代码;
  2. 通过这个API我们可以获取sectionId的一个数组,每一个sectionId就对应文章中的一节,在第filter中搜索getSection,该API就是获取指定sectionId的内容;

上面所用的URL我都放到了config/config.json里面,可以直接使用。

以上是基本操作,搞定之后,就执行go run main.go等待你的小册出炉🍺。

可以看到MarkDown格式和mobi格式的书籍都已经下载。


  • 项目地址:github.com/hantmac/jue…
  • 其实这个mobi格式转的并不是特别好,如果大家有什么好的方法,求分享!
  • 如果Golang没有好用的包的话,后面会出Python版本,Python还是有不少好用的工具。

最后要说的是,本博客仅做技术分享,作者创作小册都不容易,大家下载后不要传播。