以下的测试是在chrome上进行的,以火影忍者为例。
该方法可行的根本原因只有一个:js中定义了全局变量DATA,代码本身并没有什么技术含量。
操作方法:拷贝代码块中的js,输入指定网站,在chrome中进入开发者模式(F12 or Ctrl+shift+i),进去Console,将代码全部拷贝过去,按下回车就可以了,然后你会看到浏览抽风边开边关,不要惊慌,静静的等待文件被下载完。文件中为图片url地址。
注意事项:1,官网进入的url与示例中的有差别。后缀略有区别,没具体试过官网展示中的url是不是也是强规则,感觉差别不大。实在不行你可以猜中间的域名,如火影忍者为naruto,海贼王为onepiece。2,输入的网站一定要是同域名下的,否则会出现跨域问题。
var i=0;
var windowOne;
var urlArray=[];
//入口域名很重要,初始可以为http://ac.qq.com/naruto/v/cid/1
var orginUrl="http://ac.qq.com/naruto/v/cid/";
//获取当前总集数
var lastUrl= document.querySelector("#catalogueList li:last-child a").href;
var total=parseInt(lastUrl.substring(lastUrl.lastIndexOf("/")+1))+1;
function getUrl() {
i++;
if(i<total){
windowOne=window.open(orginUrl+i);
setTimeout(function(){
var c=new Object();
c=windowOne;
let flag=true;
try{
if(windowOne.DATA){};
}catch(e){
console.log(i+"=====");
flag=false;
}
if(flag){
for (let picture of windowOne.DATA.picture){
urlArray.push(picture.url);
}
urlArray.push("|||")
console.log(urlArray.length+"=========")
if(i%50==0||i==total-1){ //每50集的url放一个txt
doSave(urlArray, "text/latex", i+"naruto.txt");
urlArray=[];
}
}
windowOne.close();
getUrl();
},300);
}
}
getUrl();
function doSave(value, type, name) {
var blob;
if (typeof window.Blob == "function") {
blob = new Blob([value], {type: type});
} else {
var BlobBuilder = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder;
var bb = new BlobBuilder();
bb.append(value);
blob = bb.getBlob(type);
}
var URL = window.URL || window.webkitURL;
var bloburl = URL.createObjectURL(blob);
var anchor = document.createElement("a");
if ('download' in anchor) {
anchor.style.visibility = "hidden";
anchor.href = bloburl;
anchor.download = name;
document.body.appendChild(anchor);
var evt = document.createEvent("MouseEvents");
evt.initEvent("click", true, true);
anchor.dispatchEvent(evt);
document.body.removeChild(anchor);
} else if (navigator.msSaveBlob) {
navigator.msSaveBlob(blob, name);
} else {
location.href = bloburl;
}
} ;