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

简单介绍Puppeteernode

Puppeteer是一个Node库,它经过DevTools协议提供高级API来控制Chrome或Chromium。Puppeteer默认以无头方式运行,但能够配置为有头方式运行。Puppeteer中文”木偶”,很贴切,它可使用node程序来模拟人操做浏览器的行为,好比点击某个按钮等。git

Puppeteer能够作什么github

在浏览器中手动执行的大多数操做均可以使用Puppeteer完成!例如:web

  • 生成页面的屏幕截图和PDF。
  • 抓取SPA(单页面应用程序)并生成预渲染内容(即“SSR”(服务器端渲染))。
  • 自动化表单提交,UI测试,键盘输入等。
  • 建立最新的自动化测试环境。使用最新的JavaScript和浏览器功能直接在最新版本的Chrome中运行测试。
  • 捕获时间线跟踪 您的网站,以帮助诊断性能问题。
  • 测试Chrome扩展程序。

 

官网(入门必定要看的)ajax

https://pptr.devchrome

 

必定使用async await来写异步,这样会更简洁npm

个人应用场景浏览器

我老婆有一份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 版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。
相关文章
相关标签/搜索