long blogs

进一步有进一步惊喜


  • Home
  • Archive
  • Tags
  •  

© 2025 long

Theme Typography by Makito

Proudly published with Hexo

blibli动态9宫格图片下载脚本

Posted at 2019-10-07 爬虫 javascript 

涉及到的技术点

  • js控制样式和类
  • DOM的节点添加和删除
  • 原生的xhr
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
window.downloadImage = function (url) {
var timeout = Math.random() * 5000;
this.setTimeout(function () {
var xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob";
xhr.onload = function () {
if (this.status == 200) {
var blob = this.response;
var downloadElement = document.createElement('a');
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = name; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
}
}
xhr.send()
}, timeout);
}

window.insertButtons = function (element) {
console.log("=== element =======");
console.log(element);
console.log("=== end ========== ");
var button = document.createElement("button");
button.addEventListener("click", function () {
console.log(element);
// 获得该box的9个图片的url
var urlList = element.firstElementChild.firstElementChild.children;
for (var i = 0; i < urlList.length; i++) {
var url = "https:" + urlList[i].firstElementChild.style.backgroundImage.split("url")[1].replace(/[\(\)\"]/g, "").split("@")[0].trim();
console.log(url);
// console.log(timeout);
window.downloadImage(url);
}
});
// button.style.backgroundColor = "#3388ff";
// button.style.color = "white";
button.style.borderRadius="10px";
button.style.height = "35px";
button.style.backgroundColor="white";
button.style.opacity= "0.5";
button.style.borderWidth="thin";
button.style.position="absolute";
button.classList.add("downBtn");
button.innerText = "下载该九宫格的图片";
element.append(button);
}

window.initImageBox = function(){
// 先清除按钮
var allDownBtn = document.getElementsByClassName("downBtn");
var btnLength = allDownBtn.length;
for(let i = 0;i < btnLength;i++){
allDownBtn[0].remove();
}
var allImagesBox = document.getElementsByClassName("imagesbox");
// 每个动态插入下载图片按钮
console.log("=======allImagesBox======");
console.log(allImagesBox);
console.log("=======end============");
for (var i = 0; i < allImagesBox.length; i++) {
var element22 = allImagesBox[i];
console.log("i="+i);
window.insertButtons(element22);
}
console.log("call back initImageBox")
}
function insertFreshButton(){
var freshButton = document.createElement("button");
freshButton.style.backgroundColor = "#ABD6E6";
freshButton.style.position = "fixed";
freshButton.style.right="60px";
// var buttonTop = screen.height / 2;
// freshButton.style.top= buttonTop +"px";
freshButton.style.bottom="40px";
freshButton.style.zIndex="99";
freshButton.style.color = "white";
freshButton.style.borderWidth="thin";
freshButton.style.height = "40px";
freshButton.innerText = "刷新/查看下载按钮";
freshButton.setAttribute("onclick","initImageBox()");
document.body.append(freshButton);
}
(function() {
'use strict';
// Your code here...
insertFreshButton()
})();

Share 

 Previous post: m3u8解码和合并工具 Next post: 一键下载blibli的专栏图片 

© 2025 long

Theme Typography by Makito

Proudly published with Hexo