puppeteer的使用

1、

2、

// puppeteer元素基本操作-输入文本与元素点击
const puppeteer = require(‘puppeteer‘)

async function fun() {
    const browser = await puppeteer.launch({ headless: false, defaultViewport: { width: 1366, height: 768 } })
    const page = await browser.newPage()
    await page.goto(‘https://www.baidu.com‘)
    const input_area = await page.$(‘#kw‘) // 定位输入框
    await input_area.type(‘hello world‘) // 输入文本

    // const search_btn = page.$(‘#su‘) // 定位‘百度一下‘搜索按钮
    // await search_btn.click() // 点击
    await page.click(‘#su‘)
}

fun()

3、

// puppeteer获取文本元素值
const puppeteer = require(‘puppeteer‘)

async function fun() {
    const browser = await puppeteer.launch({ headless: false, defaultViewport: { width: 1366, height: 768 } })
    const page = await browser.newPage()
    await page.goto(‘https://www.baidu.com‘)
    const input_area = await page.$(‘#kw‘) // 定位输入框
    await input_area.type(‘hello world‘) // 输入文本

    // const search_btn = page.$(‘#su‘) // 定位‘百度一下‘搜索按钮
    // await search_btn.click() // 点击
    await page.click(‘#su‘)

    await page.waitForSelector(‘div#content_left > div.result-op.c-container.xpath-log‘)

    let resultText = await page.$eval(‘div#content_left > div.result-op.c-container.xpath-log‘, ele => ele.innerHTML)
    console.log(`resultText=${resultText}`)
}

fun()

4、

// puppeteer处理多个元素
const puppeteer = require(‘puppeteer‘)

async function fun() {
    const browser = await puppeteer.launch({ headless: false, defaultViewport: { width: 1366, height: 768 } })
    const page = await browser.newPage()
    await page.goto(‘https://www.jd.com‘)

    const input = await page.$(‘#key‘) // 定位输入框
    await input.type(‘手机‘) // 输入文本

    await page.keyboard.press(‘Enter‘) // 按下回车键

    await page.waitForSelector(‘ul.gl-warp > li‘)

    let resultTextList = await page.$$eval(‘ul.gl-warp > li‘, eles => eles.map(ele.innerText))
    console.log(‘resultTextList = ‘, resultTextList)
}

fun()

5、

// pupputeer切换iframe进行安居客登陆操作
const puppeteer = require(‘puppeteer‘)

async function fun() {
    const browser = await puppeteer.launch({ headless: false, defaultViewport: { width: 1366, height: 768 } })
    const page = await browser.newPage()
    await page.goto(‘https://login.anjuke.com/login/form‘)

    // 打印页面所有的frame的地址
    await page.frames().map(frame => { console.log(frame.url()) })

    // 通过frame的url定位到frame
    const targetFrameUrl = ‘https://login.anjuke.com/login/iframeform‘
    const frame = await page.frames().find(frame => frame.url().includes(targetFrameUrl))

    const phone = await frame.waitForSelector(‘#phoneIpt‘)
    await phone.type(‘13530125464‘)

}

fun()

6、

// puppeteer拖拽操作阿里云验证码
async function fun() {
    const browser = await puppeteer.launch({ headless: false, defaultViewport: { width: 1366, height: 768 }, ingoreDefaultArgs: [‘--enable-automation‘] })
    const page = await browser.newPage()
    await page.goto(‘https://account.aliyun.com/register/register.htm‘, { waitUntil: ‘networkidle2‘ }) // 等待页面加载完

    // 定位到frame
    const frame = await page.frames().find(frame => frame.url().includes(‘https://passport.aliyun.com‘))
    // 定位到验证滑块
    const span = await frame.waitForSelector(‘#nc_1_nlz‘)
    const spanInfo = await span.boundingBox()
    console.log(spanInfo)

    const div = await frame.waitForSelector(‘div#nc_1_scale_text > span‘)
    const divInfo = await div.boundingBox()

    await page.mouse.move(spanInfo.x, spanInfo.y)
    await page.mouse.down()

    // 鼠标移动
    for (let i = 0, width = divInfo.width; i < width; i++) {
        await page.mouse.move(spanInfo.x + i, spanInfo.y)
    }
    // 松开鼠标
    await page.mouse.up()
}

fun()

7、

---

原文地址:https://www.cnblogs.com/xy-ouyang/p/12244505.html

时间: 2024-08-30 18:03:57

puppeteer的使用的相关文章

puppeteer安装以及demo

安装node 利用npm安装puppeteer(忽略安装chromium脚本,待会手动安装) npm install puppeteer --ignore-scripts   vim path/to/puppeteer/node_modules/puppeteer/utils/ChromiumDownloader.js 找到方法downloadFile并打印url 得到下载chromium的地址 然后手动去下载 将下载的文件存放至自定义的web服务器中 更改之前那个url的地址 指向自定义服务器

[Puppeteer] Get a Page&#39;s Load Time with Puppeteer (window.profermence.timing)

In this lesson we are going to use Google's Puppeteer to gather metrics about a page's load time. We'll use a high level date subtraction method as well as gather data from the window performance timing. Then see how throttling the network to 3G affe

基于puppeteer模拟登录抓取页面

关于热图 在网站分析行业中,网站热图能够很好的反应用户在网站的操作行为,具体分析用户的喜好,对网站进行针对性的优化,一个热图的例子(来源于ptengine) 上图中能很清晰的看到用户关注点在那,我们不关注产品中热图的功能如何,本篇文章就热图的实现做一下简单的分析和总结. 热图主流的实现方式 一般实现热图显示需要经过如下阶段: 获取网站页面 获取经过处理后的用户数据 绘制热图 本篇主要聚焦于阶段1来详细的介绍一下主流的在热图中获取网站页面的实现方式 使用iframe直接嵌入用户网站 抓取用户页面保

实例:使用puppeteer headless方式抓取JS网页

puppeteer google chrome团队出品的puppeteer 是依赖nodejs和chromium的自动化测试库,它的最大优点就是可以处理网页中的动态内容,如JavaScript,能够更好的模拟用户. 有些网站的反爬虫手段是将部分内容隐藏于某些javascript/ajax请求中,致使直接获取a标签的方式不奏效.甚至有些网站会设置隐藏元素"陷阱",对用户不可见,脚本触发则认为是机器.这种情况下,puppeteer的优势就凸显出来了. 它可实现如下功能: 生成页面的屏幕截图

使用Puppeteer进行数据抓取(二)——Page对象

page对象是puppeteer最常用的对象,它可以认为是chrome的一个tab页,主要的页面操作都是通过它进行的.Google的官方文档详细介绍了page对象的使用,这里我只是简单的小结一下. 客户端模拟 页面模拟设置相关函数有如下几个, page.setViewport: 设置视图大小 page.setUserAget: 设置UserAgent page.SetCookie: 设置Cookie 另外,也可以使用emulate函数提供快捷设置,puppeteer/DeviceDescript

使用Puppeteer进行数据抓取(三)——简单的示例

本文以一个示例简单的介绍一下puppeteer的用法,我们的目的是:获取我博客上的文章的前十页的所有随笔的标题和链接.由于puppeteer本身是自动化chorme,因此这里我们的步骤和手动操作浏览器差不多: 打开chrome,跳转到博客首页 获取所有博客标题信息 点击下一页按钮,跳转到下一页 重复2.3两步,直到所有信息采集完毕 获取信息 采集过程中比较麻烦的一步就是信息的采集,和传统采集html后解析的方式不同的时,由于chrome本身有完整的js引擎,因此我们采用注入一段js,利用该js采

使用Puppeteer进行数据抓取(四)——图片下载

大多数情况下,图片获取并不是很困难的事情,获取图片的url,然后模拟浏览器请求即可.但是,有的时候这种方法往往无法生效,常见的情形有: 动态图片,每次获取都是一个新的,例如图片验证码,重新获取时是一个新的验证码图片,已经失去了效果了. 动态上下文,有的网站为了反爬虫,获取图片时要加上其动态生成的cookie才行. 这些情况下,使用puppeteer驱动chrome浏览器能看到图片,但获取url后单独请求时,要么获取到的图片无效,要么获取不到图片.本文这里就简单的介绍下一些十分通用且有效的下载这些

基于jest和puppeteer的前端自动化测试实战

前端测试现状 经常听到后端同学说“单元测试”,前端写过测试用例的有多少?答案是:并不多,为什么呢?两个主要原因 1.前端属于GUI软件,浏览器众多,兼容问题让人头大,用户量有一定规模的浏览器包括: IE8.IE9.IE10.IE11.chrome.FireFox.360浏览器.搜狗浏览器.QQ浏览器…… 要在这么多浏览器上做几轮测试并不容易 2.前端界面变化快,很多时候界面比测试脚本迭代的更快,测试跟不上脚步,投入产出不成正比 以上两点导致前端测试不受重视,很多前端开发者可能工作数年仍未写过单元

Puppeteer之爬虫入门

译者按: 本文通过简单的例子介绍如何使用Puppeteer来爬取网页数据,特别是用谷歌开发者工具获取元素选择器值得学习. 原文: A Guide to Automating & Scraping the Web with JavaScript (Chrome + Puppeteer + Node JS) 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. 我们将会学到什么? 在这篇文章,你讲会学到如何使用JavaScript自动化抓取网页

puppeteer:官方出品的chrome浏览器自动化测试工具

puppeteer发布应该有一段时间了,这两天正好基于该工具写了一些自动化解决方案,在这里抛砖引给大家介绍一下. 官方描述: Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full