puppteer

作者: 破浪_ | 来源:发表于2023-01-03 20:59 被阅读0次

    /*

    // ,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome
    const puppeteer = require('puppeteer');
    const request = require("request");
    const fs = require("fs");
    const path = require("path");
    // defaultViewport: null,
    // args: ['--start-maximized']

    //文本
    // (async () => {
    // const browser = await puppeteer.launch({
    // headless:false,
    // defaultViewport: {
    // width:1920,
    // height:1080
    // }
    // });
    // const page = await browser.newPage();
    // await page.goto('https://wwww.baidu.com');
    // await page.screenshot({path: Date.now()+'example.png'});

    // await browser.close();
    // })();

    //导出源码

    // (async function () {
    // const browser = await puppeteer.launch();
    // const page = await browser.newPage();
    // await page.goto("https://wwww.baidu.com");
    // const html = await page.content();
    // fs.writeFileSync(path.join(__dirname, "exportHtml.html"), html);
    // await browser.close();
    // })();

    // 打印pdf https://zhuanlan.zhihu.com/p/524254998?utm_id=0
    // (async () => {
    // const browser = await puppeteer.launch();
    // const page = await browser.newPage();
    // await page.goto('https://wwww.baidu.com', {waitUntil: 'networkidle2'});
    // await page.pdf({path: 'hn.pdf', format: 'A4'});
    // await browser.close();
    // })();

    //表单
    // (async () => {
    // const browser = await puppeteer.launch({
    // headless:false,
    // defaultViewport:{
    // width:1920,
    // height:1080
    // },
    // args: ['--start-fullscreen']
    // // args: ['--start-maximized']
    // });
    // const page = await browser.newPage();
    // page.setViewport({
    // width:1920,
    // height:1080
    // })
    // await page.goto('https://wwww.baidu.com', {waitUntil: 'networkidle2'});

    // // let passwordInput = page.('#kw')//document.querySelector

    // await page.type("#kw", "哈士奇图片", { delay: 100 });
    // await page.waitFor(2000)
    // let pictureDog = await page.$('#content_left .result-op .c-container .c-title a')

    // pictureDog.click()

    // await browser.close();
    // })();

    // //爬取图片
    // let pictureSrc=async () => {
    // const browser = await puppeteer.launch({
    // headless:false,
    // defaultViewport:{
    // width:1920,
    // height:1080
    // },
    // args: ['--start-fullscreen']
    // // args: ['--start-maximized']
    // });
    // const page = await browser.newPage();
    // page.setViewport({
    // width:1920,
    // height:1080
    // })
    // await page.goto('https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%B9%FE%CA%BF%C6%E6&fr=ala&ala=1&alatpl=normal&pos=0&dyTabStr=MCwzLDEsNiw0LDUsOCw3LDIsOQ%3D%3D')

    // await page.waitFor(3000)
    // const data = await page.evaluate( ()=> {
    // //拿到图片节点
    // let dom = document.querySelectorAll('#imgid img')
    // console.log(dom)
    // let arr = []
    // for(let i=0;i<dom.length-1;i++){
    // //去除base64格式
    // if(!dom[i].src.includes('base64'))
    // arr.push(dom[i].src)
    // }
    // //返回图片链接
    // return arr
    // })
    // return data
    // await browser.close();
    // };

    // pictureSrc().then((value) => {
    // for(let i = 1; i < value.length-1; i++) {
    // let imgUrl = value[i];
    // let filename = ${new Date().getTime()}imgage${i}.png;
    // //在C盘下创建文件夹
    // fs.mkdir(__dirname+'downloadpic',(e)=>{
    // if(!e || (e&&e).code === 'EEXIST'){
    // if(imgUrl)
    // //保存在这个目录下
    // request(imgUrl).pipe(fs.createWriteStream(__dirname+"downloadpic/" + filename));
    // else
    // console.log('地址为空')
    // }
    // else{
    // console.log('err')
    // }
    // })
    // }
    // });

    //服务端渲染 网络seo
    // 抓取内容之后拦截
    // page.request page.response

    puppeteer.launch(conf.launchOption).then(async browser => {
    const server = http.createServer();
    server.on('request', function(request, response){
    let url = (conf.useHttps ? 'https://' : 'http://') + request.headers.host + request.url;
    let ip = getIp(request);

        // 检测ip地址
        if (checkIP(ip)) {
         browser.newPage().then(async page => {
    
            // 访问url
            await page.goto(url);
            let content= await page.content();
    
            // 关闭页面,返回数据
            await page.close();
            response.end(content);
         })
      } else {
         response.statusCode = 404;
         response.end("404 NOT Found");
      }
    })
    
    server.on('close', function(){
        browser.close();
    })
    
    server.listen(3000, '127.0.0.1', function () {
        console.log('puppeteer server listening on port 3000!');
    });
    

    });

    /// 性能优化
    (async () => {
    const browser = await puppeteer.launch({
    headless:false,
    })
    const page = await browser.newPage()
    await page.goto('https://wwww.baidu.com')
    const performanceTiming = JSON.parse(
    await page.evaluate(() => JSON.stringify(window.peformance.timing))
    );
    console.log(performanceTiming);
    })()

    //测试浏览器插件
    

    const CRX_PATH = '/path/to/crx/folder/';

    puppeteer.launch({
    headless: false, // extensions only supported in full chrome.
    args: [
    --disable-extensions-except=${CRX_PATH},
    --load-extension=${CRX_PATH},
    ]
    }).then(async browser => {
    const page = await browser.newPage();
    await page.evaluate("document.title = 'PuppeteerAgent'");

    // ... do some testing ...

    await browser.close();
    });

    相关文章

      网友评论

          本文标题:puppteer

          本文链接:https://www.haomeiwen.com/subject/pykwqdtx.html