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(); } }) }
执行过程:
输出网址:
全选复制,就可以用下载器批量下载了。迅雷什么的都行。
美桌网壁纸批量下载工具
-
Google Chrome 73Windows 7 我来暖高级说说了
我来暖高级说说了