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

作者: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技术

引用地址:

发表评论:

Powered by emlog 去你妹的备案 sitemap