朝小闇的博客

海上月是天上月,眼前人是心上人

js爬取鬼刀漫画

前言:前段时间突然想看鬼刀漫画,于是进了有妖气漫画官网,其间觉得一些图太惊艳,于是想着自己把漫画扒下来好好收藏……最开始使用js爬取所有图片链接再使用IDM批量下载,后来本打算直接使用js将链接下载保存到本地,先是遇到了跨域问题尝试了很多方法一直没有解决,后来直接在漫画服务器可以下载,但是却又不方便读取链接或者本地链接文件,于是暂时就此作罢,以后有时间看看用python直接爬取试试

js代码如下:

  • 第一部分几个函数忘了是从哪个大佬博客拿来的了,所以没有链接参考,这一部分直接调用download()可以将字符串保存到本地文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function serch_char(str,num){
var icount = 0;
var response = 0;
var charChest = '=';
for (var i in str){
var ch = str[i]
if (charChest == ch){
icount++;
if (icount == num)
return response;
}
response++;
}
}

function fake_click(obj) {
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent(
"click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null
);
obj.dispatchEvent(ev);
}

function download(name, data) {
var urlObject = window.URL || window.webkitURL || window;

var downloadData = new Blob([data]);

var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
save_link.href = urlObject.createObjectURL(downloadData);
save_link.download = name;
fake_click(save_link);
}
//调用方法
//download("save.txt","内容");
  • 这一部分全局变量和上面的函数一起定义一次即可:
1
2
3
4
5
// 所有链接地址
var urls = "";
var oldUrl = ""
var url = ""
var countImg = 0;
  • 有妖气漫画由于每一章都会停一次,不能直接按照章节数直接循环到尾,所以需要手动重新在控制台循环这段代码44次(章节数):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while(true){
var nextButton = document.getElementsByClassName('next');
var Img = document.getElementsByClassName('image_cache loading cur_img');
url = Img[0].getAttribute("src");

if(oldUrl!=url){
oldUrl = url
}else{
break;
}

urls = urls + url + "\n";

// 下一页
nextButton[0].click();
countImg++;
console.log(countImg);
}
  • 最后在保存到本地:
1
download("save.txt",urls);

最后放入下载好的鬼刀漫画一份

文叔叔链接只有七天:

https://ws28.cn/f/45e3vym3sdq

百度网盘链接:

链接:https://pan.baidu.com/s/1iNDip7X0dBpTOABOWgrfmw
提取码:52pj
复制这段内容后打开百度网盘手机App,操作更方便哦

-------- 本文结束 感谢阅读 --------