用Chrome headless和puppeteer做一个妹子图爬虫
编辑:浏览器知识首先奉上链接
代码
#!/usr/local/bin/node
/**
* @author: vanishcode
* @desc: hahahaha, fuck you, ADs!
*/
const puppeteer = require('puppeteer');
const axios = require('axios');
const fs = require('fs');
var currentNumber = 1;
async function run(url) {
console.log('Start to crawl girl\'s pivtures...');
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
let imgURL = await page.evaluate(() => {
let imgURL = []
let selector = 'a.view_img_link';
let imgUrlList = [...document.querySelectorAll(selector)];
imgUrlList.forEach(e => {
imgURL.push(e.href)
})
return imgURL
});
//console.log(imgURL);
imgURL.forEach((e, i) => {
//console.log(e)
if (currentNumber === 200) {
browser.close();
console.log('All pictures downloaded complete!')
return
}
axios.get(e, {
responseType: 'stream'
}).then(res => {
res.data.pipe(fs.createWriteStream(`./meizi/${currentNumber}.${e.substr(e.length-3)}`));
currentNumber++;
})
});
let nextPage = await page.evaluate(() => {
return document.querySelectorAll('#comments > div:nth-child(4) > div > a.previous-comment-page')[0].href;
})
console.log('OK!');
setTimeout(function() {
run(nextPage)
}, 3000);
}
run('http://jandan.net/ooxx');
一些感想
较为通用的小爬虫,其实妹子图网站就是一种结构,需要的信息是选择器以及下一页的地址。
本项目使用了puppeteer,确实十分强大,个人感觉headless差不多是chromium暴露接口后的一种产物,在macOS上其实有一点小瑕疵,在启动时候其实图标会显出来然后马上就消失了,自己可以用定时器看一下。
代码是比较水的,重要的是图,是吧。。。。。。。。。
文章TAG:chrome 一个 妹子 子图 用Chrome加载全部内容