我正在参加「掘金·启航计划」
为什么会有这么一个想法呢
是因为mangabz这个网站不是很稳定,有时候一本漫画看着看着网就卡了,然后就出不来,所以我就想把内容下载下来一次性看个爽。
准备的工具
superagent和cheerio,一个是用来爬取网站的,一个是用来解析网站的。
分析网站结构
章节结构
这种结构还是很简单的,几句jQuery就能搞定
图片资源获取
图片详情页面
首先呢,可以寻找图片节点的id,cp_image,以及 它的上层id,cp_img。为什么?因为这都是经验啊!大部分单图片网站的资源都是这么搞的。
寻找详情页的js
我们可以一个js一个js的搜索id
- cp_image,包含的每个函数都可以过一遍,基本没什么有用的信息。所以可以走下一个节点了
- cp_img,每个函数都过一版,可以在这个函数的结尾发现点不一样的东西
- 异步加载图片,那么我们可以控制台打印并双击找到这个函数
- 这个我们就可以打断点然后猜想是不是这个方法出来的图片。
- 复制地址出来发现是图片,那现在我们就可以直接开始编代码了。
代码实现
我们需要分析分析,漫画下载的步骤
- 首先是下载列表,。那么我们的列表需要存什么数据呢。
- id这个毋庸置疑,但是id得有效的利用起来,所以我们可以适用漫画章节的列表来当作这个章节的id
- 图片总数,也就是判断什么时候下载完成
- 然后列表下载完了之后就是去详情页下载图片,这时候就需要分析页面的结构以及参数配置,然后再发送一遍请求,就可以获取到图片的地址了
- 数据保存,文本的读写和图片的存储,文件不大,用fs就行。保存之后就可以直接走下一页了,直到走到图片总数,那么久可以走下一章了。
- 最后就是错误回溯,当视没有下载下来的某张图片,应该怎么办。我这的处理方法是,把图片分别命名为1、2、3...等的数字,那么我只要读取一遍所有文件的名称,然后过滤一遍,就可以找到差的是哪一页。
相当简单吧
代码放在这里了,欢迎大家体验。 github.com/NEOS55555/m…