Puppeteer库主要用来做什么的,基本用法是怎样
Admin 2022-07-28 群英技术资讯 795 次浏览
Puppeteer
是谷歌官方出品的一个通过DevTools协议
控制headless Chrome
的Node
库。可以通过Puppeteer
的提供的api直接控制Chrome
模拟大部分用户操作来进行UI Test
或者作为爬虫
访问页面来收集数据。作用:
能做什么?
Puppeteer因为是一个npm的包,所以安装很简单:
npm i puppeteer
或者
yarn add puppeteer
如何使用:
// 引入 Puppeteer 模块 let puppeteer = require('puppeteer') //puppeteer.launch实例化开启浏览器 async function test() { //可以传入一个options对象({headless: false}),可以配置为无界面浏览器,也可以配置有界面浏览器 //无界面浏览器性能更高更快,有界面一般用于调试开发 let options = { //设置视窗的宽高 defaultViewport:{ width:1400, height:800 }, //设置为有界面,如果为true,即为无界面 headless:false, //设置放慢每个步骤的毫秒数 slowMo:250 } let browser = await puppeteer.launch(options); // 打来新页面 let page = await browser.newPage(); // 配置需要访问网址 await page.goto('http://www.baidu.com') // 截图 await page.screenshot({path: 'test.png'}); //打印pdf await page.pdf({path: 'example.pdf', format: 'A4'}); // 结束关闭 await browser.close(); }test()
// 获取页面内容 //$$eval函数,使回调函数可以运行在浏览器中,并且可以通过浏览器的方式进行输出 await page.$$eval('#head #s-top-left a',(res) =>{ //console.log(res); res.forEach((item,index) => { console.log($(item).attr('href')); }) }) // 监听console.log事件 page.on('console',(...args) => { console.log(args); }) // 获取页面对象,添加点击事件 ElementHandle = await page.$$('#head #s-top-left a') ElementHandle[0].click();
// 通过表单输入进行搜索 inputBox = await page.$('#form .s_ipt_wr #kw') await inputBox.focus() //光标定位在输入框 await page.keyboard.type('Node.js') //向输入框输入内容 search = await page.$('.s_btn_wr input[type=submit]') search.click() //点击搜索按钮
爬虫实践
很多网页通过user-agent
来判断设备,可以通过page.emulate(options)
来进行模拟。options有两个配置项,一个为userAgent
,另一个为viewport
可以设置宽度(width)
、高度(height)
、屏幕缩放(deviceScaleFactor)
、是否是移动端(isMobile)
、有无touch事件(hasTouch)
。
const puppeteer = require('puppeteer'); const devices = require('puppeteer/DeviceDescriptors'); const iPhone = devices['iPhone 6']; puppeteer.launch().then(async browser => { const page = await browser.newPage(); await page.emulate(iPhone); await page.goto('https://www.example.com'); // other actions... await browser.close(); });
上述代码则模拟了iPhone6
访问某网站,其中devices
是puppeteer
内置的一些常见设备的模拟参数。
很多网页需要登录,有两种解决方案:
Tip:有些网站需要扫码,但是相同域名的其他网页却有登录,就可以尝试去可以登录的网页登录完利用cookie访问跳过扫码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
监听属性可以针对某个属性进行监听,当监听的属性的值发生了变化,则会执行相应的函数,下面这篇文章主要给大家介绍了关于Vue监听属性的相关资料,需要的朋友可以参考下
这篇文章主要介绍了vue长按事件touch,文末给大家补充介绍了Vue长按触摸事件的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要为大家详细介绍了如何基于Echarts实现绘制立体柱状图的功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
JavaScript函数的用处、用法、调用是怎样的?今天来给大家说说看关于JavaScript函数的相关知识,如果你对这方面比较感兴趣的话,下面我们一起来了解看看吧。
在本篇文章里小编给大家整理了一篇关于js数组forEach实例用法详解内容,有需要的朋友们可以跟着学习参考下。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008