当前位置: 首页 > 后端技术 > Node.js

Puppeteer初探--抓取生成《ES6标准入门》PDF

时间:2023-04-03 11:30:47 Node.js

首先介绍一下PuppeteerPuppeteer是一个节点库,提供了一套操作Chrome的API(默认的headless就是chrome没有UI,也可以配置成有UI)有点类似于PhantomJS,但Puppeteer由Chrome官方团队维护,前景更好。使用Puppeteer相当于同时拥有了Linux和Chrome的能力,将会有很多的应用场景。就爬虫领域而言,它的通用性远超普通的爬虫工具,性能分析、自动化测试都不是问题。今天我们来讨论一下爬虫相关的Puppeteer官方文档。请点击这里。应用,并生成预渲染内容(即“SSR”服务端渲染)可以从网站抓取内容,实现表单提交、UI测试、键盘输入等自动化,助您打造最新的自动化测试环境(chrome),这里可以直接运行测试用例,抓取网站的时间线,以便跟踪你的网站,帮助分析网站的性能。OK,熟悉之后,接下来就是爬虫教学:使用puppeteer.launch()运行puppeteer,会返回一个promise,使用then方法获取Browser实例,BrowserAPI点击这里获取浏览器例如,您可以通过browser.newPage()方法获取页面实例。戳PageAPI,使用page.goto()方法跳转到ES6标准入口,在page.evaluate()方法中注册回调函数,解析dom结构。可以从下图详细分析,通过document.querySelectorAll('ollia')获取文章的所有链接,获取所有链接后,依次爬取每个页面(也可以承诺全部抓取多个同时打印页面),使用page.pdf()方法打印当前页面。核心代码如下awaittimeout(2000);letaTags=awaitpage.evaluate(()=>{letas=[...document.querySelectorAll('ollia')];returnas.map((a)=>{返回{href:a.href.trim(),name:a.text}});});awaitpage.pdf({path:`./es6-pdf/${aTags[0].name}.pdf`});page.close()//这里也可以使用promiseall,但是cpu可能吃紧,谨慎操作for(vari=1;i