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

    作者:张雪飞
    出处:https://zhangxuefei.site/p/2210
    版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
     
  • 相关阅读:
    通过strace 监控 fdatasync
    RAID 2.0
    AHCI vs NVMe
    NVMe 图解
    详解linux运维工程师入门级必备技能
    条带深度 队列深度 NCQ IOPS
    NVMe 与 AHCI
    IO负载高的来源定位 IO系列
    磁盘性能指标--IOPS 理论
    java程序员从笨鸟到菜鸟系列
  • 原文地址:https://www.cnblogs.com/mszhangxuefei/p/10979173.html
Copyright © 2020-2023  润新知