批量下载在漫画的通用解决方法,包括脚本生成内容

作者:V君 发布于:2017-10-25 13:43 Wednesday 分类:折腾手记

TLDR:

由于太过简单(也就百来行代码),写得还有点丑,就不传到SVN上了 (´∀((☆ミつ

流程大概如下:
  1. CsQuery解析HTML
  2. jurassic解析Javascript
  3. Newtonsoft解析Json对象
  4. PLINQ多线程下载图片文件


听我扯扯:

前面几天总是用见缝插针的时间在手机上看在线漫画, 终于抽出时间来次正经的看.

当然是用 MangaMeeya 来看, 这货只支持本地文件, 咋办?

早些年使用过批量下载工具, 也写过针对特定网站的下载小程序, 现在当然不会首选自己写.

 

但还是查看了一下页面代码, 看到了很常规的章节列表以及 --

点击查看原图

有点小看人的 js 压缩壳, 以为这样就抓不出你了? (差点笑出声

点击查看原图


技术锤子敲钉症发作,kongjibuzhujiji,写了百来行代码把图片自动批量下载.

 

TLDR 提到的类库均可从 NuGet 获取


下载 Web 资源的方式依旧是 WebClient,

以章节列表页作为入口, 

用 Chrome 的 F12 获得选择器,

用 CsQuery 按选择器提取每个章节的名称和对应页面Url.


然后依次处理每个章节页面,提取图片地址列表, 挨个下载图片.


针对章节页面脚本生成内容直接使用 jurassic 的 ScriptEngin 解析,

然后从全局变量 pages 取出解析结果, 这次是数组, 再用 Newtonsoft.Json 啪成 string[].

补上图片服务器域名, 然后丢给 WebClient, 填上 Referer就把服务器骗过去了.

顺便拼凑一下目录结构, 把所有从网页上提取到的文字全角化, 以防不测.

 

整个过程要不要太简单?


虽然本文是针对特定网站,和标题的通用解决方法描述不符,

但可以通过结构化代码把大部分过程封装起来, 将特定网站适配的代码降到最低

这就可以是“通用”解决方案了吧 (´∀((☆ミつ


其实是不知道这个月应该更新点啥

 

标签: 软件开发 javascript C# Chrome 爬虫 HTML Web技术

引用地址:

评论:

mayuu酱重症患者
2022-05-24 21:13
打破零回复惨案,最近正找批量下载漫画的通用方案,才在咕鸽上翻到大大在四年多前发布的这篇教程博文,先感谢大大提供的思路;

但我刚开始学习JS 不久,属实半新人一枚,只看完大大你提供的思路,在具体实现代码方面还有些难度,个人猜测大大你当初依据这篇文章中的思路写了个成品,想着下载到本地参考下源码。。。我之后立马到大大你的 gogs 的个人仓库,将大大你做的所有公开的项目翻了个遍,也没见依据这篇博文的思路而做的成品。。。呜呜呜X﹏X,哭惹

也可能是我看大大你个人的 gist 仓库中两三年前的很多项目名字都是纯英文,没点进看具体是哪些类型的项目,如果大大当初依据这篇文章的思路而写了个成品,已上传到个人 gist 仓库中,麻烦大大回复说明下具体是哪个项目呗??

亦或者,如果大大当初没将成品传到gogs 仓库中,但目前在个人电脑中仍保留着个人做的历史项目,麻烦大大在电脑上翻翻旧项目,找到后并分享下源码文件呗

求大大回复惹,带带俺这个刚入坑JS 不久的半新人(小纠结,弱弱地望向大大)
V君
2022-05-27 23:26
@mayuu酱重症患者:哈哈,写有,但没有公布,因为是随手针对dmzj写的,在代码写死编号或者路径,不够优雅,不放出来丢人现眼

另外,为什么不试试Android端的“立读”呢?这是开源的APP,适配了大量的漫画网站,有了别人造好的轮子,直接用就可以了_(:з)∠)_

当然如果目的不仅仅是看漫画,也想学习爬虫原理的话,可以多多交流互动
V君
2022-05-28 19:51
@mayuu酱重症患者:代码段贴到pastebin了,有点丢人)
https://pastebin.com/1wE3gftJ

发表评论:

Powered by emlog 去你妹的备案 sitemap