使用puppeteer爬取网页数据实践小结

简单介绍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的以小部分功能而已,以后争取能够在更多合适的场景去使用它。

puppeteer
作者:张雪飞
出处:https://zhangxuefei.site/p/2210
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注