«

node使用puppeteer爬取数据

emer 发布于 2023-2-14 18:05   753 次阅读     


const puppeteer = require('puppeteer');

(async () => {
    // 启动浏览器
    const browser = await puppeteer.launch({
        headless: true, // 默认是无头模式,这里为了示范所以使用正常模式
        args: ['--no-sandbox', '--disable-setuid-sandbox'],
    })

    // 控制浏览器打开新标签页面
    const page = await browser.newPage()
    // 在新标签中打开要爬取的网页
    await page.goto('https://lininn.cn')

    // 使用evaluate方法在浏览器中执行传入函数(完全的浏览器环境,所以函数内可以直接使用window、document等所有对象和方法)
    let data = await page.evaluate(() => {
        let list = document.documentElement.outerHTML
        // let res = []
        // for (let i = 0; i < list.length; i++) {
        //     res.push({
        //         name: list[i].getAttribute('data-positionname'),
        //         company: list[i].getAttribute('data-company'),
        //         salary: list[i].getAttribute('data-salary'),
        //         require: list[i].querySelector('.li_b_l').childNodes[4].textContent.replace(/ |\n/g, ''),
        //     })
        // }
        return list
    })
  await page.close();
  await browser.close();
    console.log(data)
})()
//设置宽
await page.setViewport({ width: 1000, height: 500 }); 
 await page.screenshot({  path: path.join(__dirname, 'screenshot.png'),  });
//模拟设备
const iPhone = puppeteer.devices['iPhone XR'];
//添加userAgent
await page.setViewport({ width: 1024, height: 1366 });  
await page.setUserAgent(  'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',  );

http://www.wukai.me/2021/05/22/puppeteer-notes/