2023年6月29日发(作者:)
Puppeteer环境搭建的详细步骤简介Puppeteer是Google开发并开源的⼀款⼯具,可⽤代码驱动浏览器操作。由于诸多优秀的特性,Puppeteer常被⽤在爬⾍与⾃动化测试上。详细介绍参见官⽅ 。Puppeteer本⾝是个NodeJS的库,⾃动化脚本也需要使⽤NodeJS编写,如果对JS不了解建议先学习JavaScript基础语法,或者使⽤Selenium等其他⼯具去实现。对于⼀个陌⽣的⼯具,应当先检查是否适合⾃⼰,再去尝试使⽤,切莫盲⽬从众。Puppeteer ⽤处利⽤⽹页⽣成PDF、图⽚爬取SPA应⽤,并⽣成预渲染内容(即“SSR” 服务端渲染)可以从⽹站抓取内容⾃动化表单提交、UI测试、键盘输⼊等帮你创建⼀个最新的⾃动化测试环境(chrome),可以直接在此运⾏测试⽤例6.捕获站点的时间线,以便追踪你的⽹站,帮助分析⽹站性能问题配置Node环境配置下载并安装NodeJS:wget /dist/v8.12.0/ xf node-v8.12.0-linux-x64 /usr/local/libln -s /usr/local/lib/node-v8.12.0-linux-x64/bin/npm /usr/local/bin/ln -s /usr/local/lib/node-v8.12.0-linux-x64/bin/node /usr/local/bin/*(可选)配置淘宝的源,加速npm包的下载:npm config set registry 安装Puppeteer配置淘宝的Puppeteer下载源,⽤于安装Chromium:export PUPPETEER_DOWNLOAD_HOST= i puppeteer国内不配置时会在卡在下载Chromium⽰例新建⼀个t puppeteer = require('puppeteer');(async () => { const browser = await ({ ignoreHTTPSErrors: true, headless: false, args: ['--no-sandbox'] }); const page = await e(); await (''); await r(5e3); await ();})();运⾏:node 截图知识点 启动浏览器实例e() 创建⼀个新页⾯ 进⼊指定⽹页shot 截图const puppeteer = require('puppeteer');(async () => {const browser = await (({// 若是⼿动下载的chromium需要指定chromium地址, 默认引⽤地址为 /项⽬⽬录/node_modules/puppeteer/.local-chromium/executablePath: '/Users/huqiyang/Documents/project/z/chromium//Contents/MacOS/Chromium',//设置超时时间timeout: 15000,//如果是访问https页⾯ 此属性会忽略https错误ignoreHTTPSErrors: true,// 打开开发者⼯具, 当此值为true时, headless总为falsedevtools: false,// 关闭headless模式, 会打开浏览器headless: false}));const page = await e();await ('/u/40909ea33e50');await shot({path: '',type: 'png',// quality: 100, 只对jpg有效fullPage: true,// 指定区域截图,clip和fullPage两者只能设置⼀个// clip: {// x: 0,// y: 0,// width: 1000,// height: 40// }});();})();进阶,获取⽹易云⾳乐的歌词和评论⽹易云⾳乐的API经过AES和RSA算法加密,需要携带加密的信息通过POST⽅式请求才能获取到数据。但 Puppeteer 出现后,这些都不重要了,只要它页⾯上显⽰了,通过 Puppeteer 都能获取到该元素。知识点 获取输⼊框焦点并输⼊⽂字 模拟键盘按下某个按键,⽬前mac上组合键⽆效为已知r 页⾯等待,可以是时间、某个元素、某个函数() 获取当前页⾯所有的 iframe,然后根据 iframe 的名字精确获取某个想要的 iframeiframe.$('.srchsongst') 获取 iframe 中的某个元素te() 在浏览器中执⾏函数,相当于在控制台中执⾏函数,返回⼀个 将类数组对象转化为对象() 点击⼀个元素iframe.$eval() 相当于在 iframe 中运⾏ elector 获取指定元素,并将其作为第⼀个参数传递iframe.$$eval 相当于在 iframe 中运⾏ electorAll 获取指定元素数组,并将其作为第⼀个参数传递const fs = require('fs');const puppeteer = require('puppeteer');(async () => {const browser = await (({ executablePath: '/Users/huqiyang/Documents/project/z/chromium//Contents/MacOS/Chromium', headless: false }));const page = await e();// 进⼊页⾯await ('/#');// 点击搜索框拟⼈输⼊ ⿁才会想起const musicName = '⿁才会想';await ('.txt.j-flag', musicName, {delay: 0});// 回车await ('Enter');// 获取歌曲列表的 iframeawait r(2000);let iframe = await ().find(f => () === 'contentFrame');const SONG_LS_SELECTOR = await iframe.$('.srchsongst');// 获取歌曲 ⿁才会想起 的地址const selectedSongHref = await te(e => {const songList = (odes);const idx = dex(v => odes[1].e(/s/g, '') === '⿁才会想起');return songList[idx].childNodes[1].;}, SONG_LS_SELECTOR);// 进⼊歌曲页⾯await (selectedSongHref);// 获取歌曲页⾯嵌套的 iframeawait r(2000);iframe = await ().find(f => () === 'contentFrame');// 点击 展开按钮const unfoldButton = await iframe.$('#flag_ctrl');await ();// 获取歌词const LYRIC_SELECTOR = await iframe.$('#lyric-content');const lyricCtn = await te(e => {return ext;}, LYRIC_SELECTOR);(lyricCtn);// 截图await shot({path: '歌曲.png',fullPage: true,});// 写⼊⽂件let writerStream = WriteStream('歌词.txt');(lyricCtn, 'UTF8');();// 获取评论数量const commentCount = await iframe.$eval('.sub.s-fc3', e => ext);(commentCount);// 获取评论const commentList = await iframe.$$eval('.itm', elements => {const ctn = (v => {return e(/s/g, '');});return ctn;});(commentList);})();参考以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687986048a63982.html
评论列表(0条)