puppteer

2023-01-03  本文已影响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();
});

上一篇下一篇

猜你喜欢

热点阅读