简单介绍Puppeteer Puppeteer是一个Node库,它通过DevTools协议提供高级API来控制Chrome或Chromium。Puppeteer默认以无头方式运行,但可以配置为有头方式运行。Puppeteer中文”木偶”,很贴切,它可以使用node程序来模拟人操作浏览器的行为,比如点击某个按钮等。 Puppeteer可以做什么 在浏览器中手动执行的大多数操作都可以使用Puppeteer完成!例如: 生成页面的屏幕截图和PDF。 抓取SPA(单页面应用程序)并生成预渲染内容(即“SSR”(服务器端渲染))。 自动化表单提交,UI测试,键盘输入等。 创建最新的自动化测试环境。使用最新的JavaScript和浏览器功能直接在最新版本的Chrome中运行测试。 捕获时间线跟踪 您的网站,以帮助诊断性能问题。 测试Chrome扩展程序。 官网(入门一定要看的) https://pptr.dev 一定使用async await来写异步,这样会更简洁 我的应用场景 我老婆有一份list,list中有1000个item左右,每个item需要在网站中搜索,点击进入详情,然后切换tab,点击进入另一个详情,然后得到某些信息。如果手动操作,大概操作完一个需要3分钟左右,累计需要3000分钟(50小时),每天投入1-2小时(大量重复的操作非常无趣,而且累)。我见此情景,分析了下系统,发现很难使用一些ajax的接口就达到目的,看来系统本身做了一些处理。所以我打算使用Puppeteer来帮老婆完成这个工作,大概花了2-3天时间,对Puppeteer有了一些初步的了解,并且爬取了第一步的数据。我打算分步骤抓取数据,递进的去得到最终的一份清单。 几个我用到的对象的关系 遇到的一些问题 1. 安装问题 完整安装:npm i puppeteer --save 需要设置下淘宝镜像源 + puppeteer_download_host = https://npm.taobao.org/mirrors 2. ElementHandle类型的对象click方法不管用处理方法 启动代码如下 小结 Puppeteer总体来说非常好用,只不过是用过程中需要不断去看文档熟悉接口,是用来爬取各种网页内容的”利器”。这次我也支持接触了Puppeteer的以小部分功能而已,以后争取能够在更多合适的场景去使用它。 作者:张雪飞 出处:https://zhangxuefei.site/p/2210 版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 作者:张雪飞 出处:https://zhangxuefei.site 版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。https://www.cnblogs.com/mszhangxuefei/p/10979173.html