文库下载实现自动化
文库下载
原文链接腾讯课堂以及文库下载实现自动化
刚才在做英语练习题的时候,做完了,想对一下答案,就百度了搜了一下,进去一个文库。
下载文档要12块钱,我就看了一下,上面预览的都是图片,所以就想着,js批量把图片下载下来,然后合成pdf,就正常看了,关键是没花钱啊,要不用浪费多长时间。
具体的使用我放到youtube的文库免费下载小技巧,本来想往b站传的,但是被驳回锁定了。下面放上代码吧。
{% asset_img 3.png 只不过是程序代替了手动 %}
1 示例淘豆网
淘豆网就是直接把图片放出来了,咱们直接下手就行。
function download(url, fileName) {
let xhr = new XMLHttpRequest();
xhr.open('GET', url, true);//true表示异步
xhr.responseType = 'blob';
xhr.onload = () => {
if (xhr.status === 200) {
downloadByA(xhr.response,fileName);
}
};
xhr.send();
}
function downloadByA(data,fileName){
let urlObject = window.URL || window.webkitURL || window;
let export_blob=new Blob([data]);
let a=document.createElement("a");
a.href=urlObject.createObjectURL(export_blob);
a.download=fileName;
a.click();
}
//下面这块代码需要按自己需求,进行稍微地修改,上面两块代码可以不用动
document.querySelectorAll(".pageBox img").forEach(function(ele, i) {
download(ele.src,i+".jpg");
});
然后将下载出的图片合成pdf,就ok了
点击进入淘豆网示例网址
2 示例道客巴巴
道客巴巴就有点小心眼了,他把所有的预览图片,都转成了canvas形式的,那也没事,咱们同样用代码给他转回来。
function download(url, fileName) {
let xhr = new XMLHttpRequest();
xhr.open('GET', url, true);//true表示异步
xhr.responseType = 'blob';
xhr.onload = () => {
if (xhr.status === 200) {
downloadByA(xhr.response,fileName);
}
};
xhr.send();
}
function downloadByA(data,fileName){
let urlObject = window.URL || window.webkitURL || window;
let export_blob=new Blob([data]);
let a=document.createElement("a");
a.href=urlObject.createObjectURL(export_blob);
a.download=fileName;
a.click();
}
//下面这块代码需要按自己需求,进行稍微地修改,上面两块代码可以不用动
document.querySelectorAll(".outer_page .inner_page").forEach(function(ele, i) {
download(ele.toDataURL("image/jpeg"),i+".jpg");
});
点击进入道客巴巴示例网址
3 示例百度文库
百度文库有文字显示的,也有图片显示的,这里主要针对图片显示的,文字的我也看了太麻烦了。
但是在处理图片的过程中也出了问题,涉及到跨域的问题
{% asset_img 2.png 百度文库 %}
document.querySelectorAll(".mod.reader-page.complex.hidden-doc-banner .inner .bd .reader-pic-item").forEach(function(ele, i) {
download(ele.style.backgroundImage.match(/[^url("].*[^")]/)[0],i+".jpg");
});
点击进入百度文库示例网址,网址放到这里,留着以后有时间再研究。准备上数学课了。
4 关于合成pdf
现在工具很多,有免费在线版,也有免费的客户端,给大家推荐两款吧。
我是用的acrobat这个软件,这个比较好用,还可以去水印之类的。在我之前去水印的文章里,有提到过