利用chrome console批量下载文件

因工作需要,需要定期从某页面下载多个文档,是体力活。

想用chrome扩展,找了几个不行。原因是:

1、有的扩展识别不了链接,因为链接是形如:jsp?XXX=XXX的形式

2、有的扩展能批量打开链接,但打开的太快了或其他原因,触发了验证码。

想用chromedp模拟操作,感觉大材小用,也懒得费事。

决定还是用比较简单的chrome console

参考以下代码(https://bbs.csdn.net/topics/392177700?list=31152598

(function () {
    var arr = ["https://www.baidu.com/","http://url2","http://url3"];
    var nw = window.open();
    var i = 0;
    function op() {
        console.log(arr[i]);
        nw.location = arr[i];
        i++;
        if (i<arr.length)
            setTimeout(op, 5000);
    }
    op();
})();

我写的代码如下:其中用了正则/owner=/.test(aa[i].href)匹配链接:

(function () {
    var aa=$("a");
    var arr=[];
    for(var i=0;i<aa.length;i++){
      if(/owner=/.test(aa[i].href)){
      arr.push(aa[i].href);
    }
    }
    var nw = window.open();
    var i = 0;
    function op() {
        console.log(arr[i]);
        nw.location = arr[i];
        i++;
        if (i<arr.length)
            setTimeout(op, 5000);
    }
    op();
})();

因为我在页面上用代码访问链接时,会直接下载word。所以在启动脚本的时候,chrome会提示:想要下载多个文件?             允许就可以了。

实际使用中没有触发验证码,终于不用一个个点击鼠标右键另存为了。

后来发现这里有一个疑惑之处:我用的是$("a"),而不是$$("a"),竟然也能成功!

更好的选择办法:可以不用正则表达式,用“子串匹配属性选择器”好像更方便些,如:$("a[href*=要匹配的部分URL内容]")

补充:之前用以下代码,chrome只能打开一个新窗口

var nw  =window.open("https://www.sohu.com","one");
var nw1  =window.open("https://www.cnblogs.com","two");

后来发现,浏览器为了安全考虑是不会让浏览器一次打开多个窗口的,不过如果用户需要是可以在浏览器里面进行设置的,chrome中chrome://settings/content/popups,设置为允许即可。(参考:https://blog.csdn.net/Tayshin/article/details/73614854

原文地址:https://www.cnblogs.com/pu369/p/11987502.html