saber 酱的抱枕

Fly me to the moon

02/13
2019
软件

美桌网壁纸批量下载工具

美桌网壁纸批量下载工具

美桌网(http://www.win4000.com/)是一个壁纸图片网站,我想下载它的“二次元桌面壁纸”专题里的所有图片。但是这个专题有 5 个列表页,里面有 120 个图册,每个图册又有 8 张左右的图片,合起来有近千张图片。所以我写了个脚本用来自动抓取美桌网的壁纸图片网址。

该脚本可以在美桌网的任意列表页使用,就是图片列表底下有页码的:

美桌网壁纸批量下载工具

在列表页打开浏览器控制台,复制下面的脚本内容粘贴进去,按 enter 执行。等执行完毕,会打开一个新窗口输出图片网址。

代码:

/*
name: 美桌网壁纸批量下载工具
url: http://www.win4000.com/
version: 0.1
date: 20190213
author: 雪见仙尊 
*/

// 获取图片网址
let listpage_urls = []; // 列表页的 url
let page_urls = []; // 图片页面的 url
let img_urls_big = []; // 壁纸大图的 url

// 获取列表页的 url
let base_url = location.href.replace(/(_\d)(\.html)/, '$2'); // 去掉页码部分,作为列表页规则
let page_num = document.querySelectorAll('.pages a.num').length + 1; // 一共有几页,+1 加的是当前页
for (let index = 1; index <= page_num; index++) { // 加上页码
	listpage_urls.push(base_url.replace('.html', '_' + index + '.html'));
}
console.log('共抓取到' + listpage_urls.length + '个列表页');
getPageUrls();

// 获取图片页面的 url
function getPageUrls(url) {
	url = listpage_urls.shift();
	fetch(url)
		.then(res => res.text())
		.then(data => {
			let dom = new DOMParser().parseFromString(data, 'text/html');
			let page_list = dom.querySelectorAll('.Left_bar .tab_box ul li>a');
			for (const a of page_list) {
				page_urls.push(a.href);
			}
			if (listpage_urls.length) {
				getPageUrls();
			} else {
				console.log('共抓取到' + page_urls.length + '个图片页');
				getImgUrls();
			}
		})
}

// 获取壁纸大图的 url
function getImgUrls(url) {
	url = page_urls.shift();
	fetch(url)
		.then(res => res.text())
		.then(data => {
			let dom = new DOMParser().parseFromString(data, 'text/html');
			let img_urls_small = dom.querySelectorAll('#scroll a img');
			for (const img of img_urls_small) {
				img_urls_big.push(img.dataset['original'].replace(/_.*\d/, ''));
			}
			if (page_urls.length) {
				getImgUrls();
			} else {
				console.log('共抓取到' + img_urls_big.length + '个图片网址');
				let result = img_urls_big.reduce((total, cur) => {
					return total += cur + '<br>';
				}, '');
				let new_tab = window.open();
				new_tab.document.write(result);
				new_tab.document.close();
			}
		})
}

执行过程:

美桌网壁纸批量下载工具

美桌网壁纸批量下载工具

输出网址:

美桌网壁纸批量下载工具

全选复制,就可以用下载器批量下载了。迅雷什么的都行。

美桌网壁纸批量下载工具