zoenbo 发表于 2020-12-13 18:31

JS大佬看看这个控制台相关的问题

本帖最后由 zoenbo 于 2020-12-13 20:32 编辑

我想在网页端看那种图片阅读的网站,页面是滚动向下继续阅读,有没有办法在控制台输入代码把这些加载了的图片打包下载?目前有一段姑狗图书上可以用的代码,可不可以把这个改成咨询图书联盟可用的呢?

http://book.ucdrs.superlib.net/search?Field=1&channel=search&sw=%D2%F4%C0%D6

下边的代码放到控制台后,滚动阅读后到最后一张,输入finish()就可以把图片都打包成book.zip
var zipJSUTL='https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.js';
var fileSaverURL='https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js';
function loadLibraries(srcURL) {
    var script = document.createElement("script"); // Make a script DOM node
    script.src = srcURL // Set it's src to the provided URL
    document.head.appendChild(script); // Add it to the end of the head section of the page (could change 'head' to 'body' to add it to the end of the body section instead)
}


function addBlob(source,ind){
    var xhr = new XMLHttpRequest();
    xhr.open("GET", source);
    xhr.responseType = "blob";//force the HTTP response, response-type header to be blob
    xhr.onload = function()
    {
      if(blobs==undefined)
            blobs = xhr.response;//xhr.response is now a blob object
    }
    xhr.send();   
}
var res=[];
var blobs=[]
scrollBar=document.querySelector('.overflow-scrolling');
scrollBar.addEventListener('scroll', scrollFnc);
function scrollFnc(){
      imges=document.querySelectorAll('img')
      for(var i=1;i<imges.length;i++){
      //console.log(imges.width)
    if(imges.width >500){
       // console.log(imges.src);
                res.push(imges)
      var regex = new RegExp(/pg=\w\w\d+/i);
      str=imges.src;
      x=str.match(regex)
      if(x==null){
            console.log('!!!!!!!!!'+str);
            continue;
      }
      x=x;
      pageNo= x.substring(5)/1;
      console.log(pageNo);
      addBlob(str,pageNo);
    }
      }

}

loadLibraries(zipJSUTL);
loadLibraries(fileSaverURL);

function finish(){
    var zip= new JSZip();
    for(var i=0; i<blobs.length;i++){
      if(blobs==undefined)
            continue;
      zip.file('images/'+i+'.png', blobs, {base64: true});
    }
    zip.generateAsync({type:"blob"})
    .then(function(content) {
    // see FileSaver.js
    saveAs(content, "book.zip");
});
   
}

fortytwo 发表于 2020-12-13 19:35

不能正常访问

zoenbo 发表于 2020-12-13 20:12

本帖最后由 zoenbo 于 2020-12-13 20:14 编辑

SailZhao520 发表于 2020-12-13 19:35
不能正常访问
大佬,是图书联盟的访问不了吗?可以在图书咨询联盟里随便找一本试读的就行
http://book.ucdrs.superlib.net/search?Field=1&channel=search&sw=%D2%F4%C0%D6

hebeijianke 发表于 2020-12-13 21:06

不是可以直接PDF下载吗

zoenbo 发表于 2020-12-13 21:12

hebeijianke 发表于 2020-12-13 21:06
不是可以直接PDF下载吗

可以,我想用这个控制台的方法,要的是图片,浏览器插件的方法也会,就是想用控制台实现一下。如果没有直接PDF下载的网站,控制台就有用了。

or6522 发表于 2020-12-13 22:13

jszip在这个图书联盟里面加载不进去。
图片地址的list已经拿到了。JSZip is not defined。。。。
尴尬

zoenbo 发表于 2020-12-13 22:17

本帖最后由 zoenbo 于 2020-12-13 22:22 编辑

or6522 发表于 2020-12-13 22:13
jszip在这个图书联盟里面加载不进去。
图片地址的list已经拿到了。JSZip is not defined。。。。
尴尬
这个JSZIP可能得扶梯子 https://github.com/Stuk/jszip

https://wws.lanzouj.com/iA2Hijc87hi
大佬,我把那两个JS打包了

or6522 发表于 2020-12-13 22:19

zoenbo 发表于 2020-12-13 22:17
这个JSZIP可能得扶梯子

感觉文档详情页面禁止js文件写入了。我在文档列表页面用都好着呢。

zoenbo 发表于 2020-12-13 22:23

or6522 发表于 2020-12-13 22:19
感觉文档详情页面禁止js文件写入了。我在文档列表页面用都好着呢。

那如果用到其他同类网站好使不呢?

or6522 发表于 2020-12-13 22:31

zoenbo 发表于 2020-12-13 22:23
那如果用到其他同类网站好使不呢?

那铁定是不好使的。
第二十三行。是获取滚动区域。每个网站滚动区域的class不一样,这里就得改。

26行,一般的都是img标签来显示图片,但是这个图书联盟就是用的<input type="image">这里获取方法也要改。

31到41是获取src之后拿到具体的图片地址。图书联盟就是省略了host的相对地址。拼上host直接就是真实地址

56行是正式开始下载,jszip没法加载,我就没具体看。但是看样子第一个参数是真实地址的样子。
页: [1] 2
查看完整版本: JS大佬看看这个控制台相关的问题