puppeteer 小项目初体验

puppeteer是谷歌推出的无头浏览器框架,提供了完备的api用于控制浏览器
以爬取某资源网站为例,简单使用puppeteer

在这里插入图片描述
在这里插入图片描述
这里使用页面获取的代码需要实现两部分,即打开网页,然后点击获取地址的按钮,最后获取链接地址和提取密码并返回。打开网页部分可以通过暴力枚举数字即可。

const puppeteer = require('puppeteer-core')
const cheerio = require('cheerio')
const sleep = () => new Promise((res, rej) => setTimeout(res, 2000));

async function crawlXXX(url){
    var brower = puppeteer.launch({
        headless:true,
        executablePath:'你的chrome.exe地址'
    });
    var page = await (await brower).newPage();
    try{
        page.setDefaultTimeout(2 * 60 * 1000);
        page.setUserAgent('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36');
        page.setJavaScriptEnabled(true);
        page.setCacheEnabled(true);
        await page.goto(url);
        await page.waitForSelector('html');   
        let button = await page.$('.data_details > div > .btn-primary'); // 获取按钮
        button.click();
        let title = await page.title();
        let link = await page.$eval('.bs-example-modal-sm > .modal-sm > .modal-content > a > font',el=>el.innerHTML); 
        let pass = await page.$eval('.bs-example-modal-sm > .modal-sm > .modal-content > font',el=>el.innerHTML);
        return {link,pass,title};
    }catch(err){
        console.error(err);
    }
    finally{
        (await brower).close();
    }
}

class crawlSiteController{
    static async getSite(ctx){
        let req = ctx.request.body;
        var type = req.type;
        if(type === 1){
            let num = req.num;
           let url = 'http://xxxx.xxxxxx.xxxx/article/';
            let res = await crawlXXX(url+num);
            ctx.response.status = 200;
            ctx.response.body = res
        }
    }
}

module.exports = crawlSiteController;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海燕技术栈

你的鼓励我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值