文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

用 Puppeteer 实现一个自动化机器人

2024-12-03 07:43

关注

目录

  • 简介

  • Selenium vs Puppeteer

  • 安装

  • 一个简单的例子

  • 解释代码

  • 把项目容器化

  • 容器打包时的一些坑

    • 1. Puppeteer 安装 Chromium 时会缺少一些组件

    • 2. 页面焦点问题

    • 3. Page Crash 问题

    • 4. 时区问题

Puppeteer 是 Node.js 的一个函数库,可用来操控浏览器,是 Google 的项目,可以应用的范围包括:前端的自动化测试、爬虫、表单提交等。

Selenium vs Puppeteer

之前有过用 Python 配合 Selenium 的经验,不过如果是做爬虫、自动化操作用 Puppeteer 还是非常方便的,安装简单快速,API 也容易使用。美中不足的是它只支持 Chromium 以下是两者的比较,仅供参考:

 

由于 Puppeteer 是用 Node.js 写的,所以必须要先安装 Node。

  1. 可以至官网 下载

  2. 如果用 mac 可以使用 https://nodejs.org/en/

安装完后可以在 terminal 输入 node -v 检查是否安装成功

然后到要开发的项目路径下输入 npm init -y 初始化项目,接着 npm i puppeteer ,安装的时候会发现它会连同 Chromium 一同安装。

安装成功后就可以开始了。

一个简单的例子

新增一个文件 main.js ,并复制以下代码:

  1. const puppeteer = require('puppeteer'); 
  2.  
  3. (async () => { 
  4.  
  5.   // 开启 browser 
  6.   const browser = await puppeteer.launch({ 
  7.         headless: false 
  8.   }); 
  9.   // 新增分页 
  10.   const page = await browser.newPage(); 
  11.   // 到自己的博客网站 
  12.   await page.goto(`https://www.myblog.com/`); 
  13.   // 等待订阅按钮出现 
  14.   await page.waitForSelector("button[class='subscribe-button pill-button']"); 
  15.   // 点击订阅按钮 
  16.   await page.click("button[class='subscribe-button pill-button']"); 
  17. })(); 

接着到终端下输入 node main.js 执行。

解释代码

前面的代码先引入 Puppeteer,以便后续使用,接下来可以看到用 async 以及 () => , async 表示函数要用到异步操作, () => 则是 JS 的箭头函数。

  1. const puppeteer = require('puppeteer'); 

接下来是用 Puppeteer 打开一个浏览器 ( Chromium ),其中可以看到我们设了参数 headless : false ,如果是设定为 true ,会开启没有界面的无头浏览器,如果设定 false ,就会开一个浏览器窗口。

  1. const browser = await puppeteer.launch({ 
  2.     headless: false 
  3. }); 

这段就很简单了,它会帮你在浏览器开一个新的分页。

  1. const page = await browser.newPage(); 

这段也很容易,看到 goto 就可以猜到会帮你导向后方指定的网址。

  1. await page.goto(`https://b123105.blogspot.com/`); 

最后这段代码用到了 click 这个方法,它能够帮你点击后面指定的元素,可以看到我是指定 class = subscribe-button pill-button 的 

来源:前端先锋内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯