avatar

目录
前端爬虫神器-puppeteer

介绍

Puppeteer 翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人.Puppeteer是一个Nodejs的库,支持调用Chrome的API来操纵Web.

作用

  1. 利用网页生成PDF、图片
  2. 爬取SPA应用,并生成预渲染内容(即“SSR” 服务端渲染)
  3. 可以从网站抓取内容
  4. 自动化表单提交、UI测试、键盘输入等
  5. 帮你创建一个最新的自动化测试环境(chrome),可以直接在此运行测试用例
  6. 捕获站点的时间线,以便追踪你的网站,帮助分析网站性能问题

使用

Code
1
2
npm i puppeteer
or "yarn add puppeteer"
方法名称 方法说明 特殊情况
browser.newPage() 创建一个 Page 实例
browser.close() 关闭浏览器 注意catch住异常关闭,避免浏览器进程没有关闭掉,耗费系统资源
browser.pages() 获取所有打开的 Page 实例 打开多个tab页处理时切换page特别有用
puppeteer.launch 启动浏览器 调试时推荐slowMo,headless,devtools 这三个参数
page.goto(url) 打开指定网站 注意使用它的waitUntil参数,默认是load,有时会超时
page.screenshot 把当前页面截图 不但可以截图也可以截取元素的图片
Page.$(selector) 获取单个元素,底层是调用的是 document.querySelector()
Page.$$(selector) 获取一组元素,底层调用的是 document.querySelectorAll() 注意返回的参数经过Array.form了,可能有些参数不能够使用
Page.$eval() 此方法在页面内执行 document.querySelector,然后把匹配到的元素作为第一个参数传给 pageFunction 是在在浏览器实例上下文中要执行的方法
page.$$eval(selector, pageFunction[, …args]) 此方法在页面内执行 Array.from(document.querySelectorAll(selector)),然后把匹配到的元素数组作为第一个参数传给 pageFunction
page.click() 点击一个元素
Page.emulate 修改模拟器(客户端)运行配置,模拟设备,参数设备对象,比如 iPhone, Mac, Android 等
page.select(‘#dname’, “77”) select选择器第一个参数是元素,第二个元素是options的value值
page.waitFor 等待sleep
page.waitForFunction(pageFunction[, options[, …args]]) 等待 pageFunction 执行完成之后
page.waitForNavigation(options) 等待页面基本元素加载完之后,比如同步的 HTML, CSS, JS 等代码
page.waitForSelector(selector[, options]) css语法,等待某个选择器的元素加载之后,这个元素可以是异步加载的
page.waitForXPath(xpath[, options]) xpath语法,等待某个选择器的元素加载之后,这个元素可以是异步加载的
page.evaluate(pageFunction, …args) 返回一个可序列化的普通对象,pageFunction 表示要在页面执行的函数, args 表示传入给 pageFunction 的参数, 下面的 pageFunction 和 args 表示同样的意思。 注意是在浏览器页面执行
Page.evaluateHandle(pageFunction, …args) 在 Page 上下文执行一个 pageFunction, 返回 JSHandle 实体 Page 上下文执行
page.evaluateOnNewDocument(pageFunction, …args), 在文档页面载入前调用 pageFunction, 如果页面中有 iframe 或者 frame, 则函数调用 的上下文环境将变成子页面的,即iframe 或者 frame, 由于是在页面加载前调用,这个函数一般是用来初始化 javascript 环境的,比如重置或者 初始化一些全局变量
Page.exposeFunction 此方法添加一个命名为 name 的方法到页面的 window 对象 当调用 name 方法时,在 node.js 中执行 puppeteerFunction,并且返回 Promise 对象,解析后返回 puppeteerFunction 的返回值 使用时会变成全局的,也可以引用你的类库
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论