批量下载在漫画的通用解决方法,包括脚本生成内容
作者:V君 发布于:2017-10-25 13:43 Wednesday 分类:折腾手记
TLDR:
由于太过简单(也就百来行代码),写得还有点丑,就不传到SVN上了 (´∀((☆ミつ
流程大概如下:- CsQuery解析HTML
- jurassic解析Javascript
- Newtonsoft解析Json对象
- 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技术
评论:
blogger
Google Web Translator
热门日志
随机日志
最新日志
最新评论
- V君
@Quartz:(出现)... - Quartz
怎么不见人了呢... - V君
@Soar:DHCP 协议相... - V君
@Soar:当然是非... - Soar
@V君:谢谢 有空... - Soar
搞一个 1230v3+B85... - V君
@Soar:另外,也可... - V君
@Soar:iscsi服务端... - Soar
难怪这么卡,尤其... - Soar
clone了源码,提示...
分类
存档
- 2024年5月(1)
- 2023年7月(1)
- 2023年5月(1)
- 2022年11月(1)
- 2022年10月(1)
- 2022年9月(1)
- 2022年8月(1)
- 2022年7月(1)
- 2022年6月(1)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(1)
- 2022年2月(1)
- 2022年1月(1)
- 2021年12月(1)
- 2021年11月(1)
- 2021年10月(1)
- 2021年9月(1)
- 2021年8月(1)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(1)
- 2021年4月(1)
- 2021年3月(1)
- 2021年2月(1)
- 2021年1月(1)
- 2020年12月(1)
- 2020年11月(1)
- 2020年10月(2)
- 2020年9月(1)
- 2020年8月(1)
- 2020年7月(1)
- 2020年6月(1)
- 2020年5月(1)
- 2020年4月(2)
- 2020年3月(3)
- 2020年2月(1)
- 2020年1月(1)
- 2019年12月(1)
- 2019年11月(1)
- 2019年10月(1)
- 2019年9月(1)
- 2019年8月(2)
- 2019年7月(1)
- 2019年6月(1)
- 2019年5月(1)
- 2019年4月(1)
- 2019年3月(1)
- 2019年2月(1)
- 2019年1月(2)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(3)
- 2018年9月(4)
- 2018年8月(6)
- 2018年7月(4)
- 2018年6月(1)
- 2018年5月(2)
- 2018年4月(2)
- 2018年3月(3)
- 2018年2月(1)
- 2018年1月(1)
- 2017年12月(1)
- 2017年10月(2)
- 2017年9月(1)
- 2017年8月(2)
- 2017年7月(1)
- 2017年6月(5)
- 2017年5月(2)
- 2017年4月(2)
- 2017年3月(3)
- 2017年2月(2)
- 2017年1月(2)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(3)
- 2016年9月(4)
- 2016年8月(2)
- 2016年7月(4)
- 2016年6月(3)
- 2016年5月(1)
- 2016年4月(4)
- 2016年3月(3)
- 2016年2月(1)
- 2016年1月(5)
- 2015年12月(4)
- 2015年11月(5)
- 2015年10月(1)
- 2015年9月(6)
- 2015年8月(4)
- 2015年7月(1)
- 2015年6月(6)
- 2015年5月(3)
- 2015年4月(3)
- 2015年3月(2)
- 2015年2月(1)
- 2015年1月(3)
- 2014年12月(1)
- 2014年11月(1)
- 2014年10月(1)
- 2014年9月(3)
- 2014年8月(1)
- 2014年7月(1)
- 2014年6月(1)
- 2014年5月(3)
- 2014年4月(1)
- 2014年3月(1)
- 2014年2月(2)
- 2014年1月(1)
- 2013年12月(2)
- 2013年11月(2)
- 2013年10月(1)
- 2013年9月(3)
- 2013年8月(14)
- 2013年7月(7)
- 2013年4月(1)
- 2013年3月(4)
- 2013年2月(6)
- 2013年1月(6)
- 2012年12月(8)
- 2012年11月(6)
2022-05-24 21:13
但我刚开始学习JS 不久,属实半新人一枚,只看完大大你提供的思路,在具体实现代码方面还有些难度,个人猜测大大你当初依据这篇文章中的思路写了个成品,想着下载到本地参考下源码。。。我之后立马到大大你的 gogs 的个人仓库,将大大你做的所有公开的项目翻了个遍,也没见依据这篇博文的思路而做的成品。。。呜呜呜X﹏X,哭惹
也可能是我看大大你个人的 gist 仓库中两三年前的很多项目名字都是纯英文,没点进看具体是哪些类型的项目,如果大大当初依据这篇文章的思路而写了个成品,已上传到个人 gist 仓库中,麻烦大大回复说明下具体是哪个项目呗??
亦或者,如果大大当初没将成品传到gogs 仓库中,但目前在个人电脑中仍保留着个人做的历史项目,麻烦大大在电脑上翻翻旧项目,找到后并分享下源码文件呗
求大大回复惹,带带俺这个刚入坑JS 不久的半新人(小纠结,弱弱地望向大大)