昨天想去极客时间把购买的一个专栏里的数据扒下来,发现之前写的python脚本不能用了,原因是他们网站做了限流、也加了http时间戳的一些校验。我们可以将之前的python脚本进行改进,用ip代理池来处理限流,寻找时间戳验证的规则就可以解决。
但是这次我们用了另外的一种爬虫的思路,就是我们直接写一些js脚本,在对方的网站里运行,去请求相应的接口,从而得到想要的数据。
这种思路其实见过很多例子,之前有一个很火的,qq空间自动点赞的脚本,看过它的源码,其实很简单,就是直接去操作dom,然后触发一些事件。
另外一个很火的例子,github上很火的一个repo, fuckZhihu,据说是winter当年退知乎时写的,将自己在知乎的数据保存下来。
下面是这次实践的内容:
获取文章id集合
刚进入专栏的时候会有一个获取左侧文章列表集合的请求,在这个接口里,我们就能获取到当前专栏的所有请求。
这个专栏大概有50多篇文章,因为限流的原因,我们分成两次进行请求。
注入FileSaver.js
FileSaver是一个运行在浏览器中,将数据下载为json或者excel文件的库。