用Chrome headless和puppeteer做一个妹子图爬虫

本文介绍了一个使用puppeteer的简单爬虫项目,用于抓取妹子图网站的图片,并通过axios下载到本地。代码展示了如何获取指定的选择器元素及翻页逻辑。

首先奉上链接

代码

#!/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上其实有一点小瑕疵,在启动时候其实图标会显出来然后马上就消失了,自己可以用定时器看一下。

代码是比较水的,重要的是图,是吧。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值