• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
玅神
博客园    首页    新随笔    联系   管理    订阅  订阅

了解使用Pyppeteer

1.Pyppeteer的来源

如果大家对 Python 爬虫有所了解的话,想必你应该听说过 Selenium 这个库,这实际上是一个自动化测试工具.但是其环境配置的麻烦就不用我多说了.

 Pyppeteer,不是 Puppeteer。它是 Puppeteer 的 Python 版本的实现,但他不是 Google 开发的,是一位来自于日本的工程师依据 Puppeteer 的一些功能开发出来的非官方版本。

在 Pyppetter 中,实际上它背后也是有一个类似 Chrome 浏览器的 Chromium 浏览器在执行一些动作进行网页渲染.

2.Pyppeteer的几种基本用法

pyppeteer github 地址:https://github.com/miyakogi/pyppeteer

2.1设置网页格式

driver = await launch({
        # 谷歌浏览器的安装路径
        'executablePath': 'C:\Program Files\Google\Chrome\Application\chrome.exe',
        # Pyppeteer 默认使用的是无头浏览器
        'headless': False,
        # 设置Windows-size和Viewport大小来实现网页完整显示
        'args': ['--no-sandbox', '--window-size=1024,768']
    })
code1

2.2打开你所需要的网站

page = await driver.newPage()
await page.goto(url)
code2

2.3通过选择器进行操作

await page.type(选择器信息,内容,时间)
#await page.type('#q4','20183769')
await page.click(选择器信息)
#await page.click('#divquestion3 > ul > li > a')
test=await page.querySelector(选择器信息)
await test.click()
#date=await page.querySelector('#q1')
#await date.click()
code3

2.4通过xpath 定位/操作

click_handle = await page.xpath("xpath路径")
await click_handle[0].click()
code4

2.5定位转换frame

date = await page.querySelector('#q2')
    await date.click()
    frame = page.frames#获取所有的frame
    date2 = await frame[1].querySelector('#selectTodayButton')
    await date2.click()
code5

2.6获取所有页面

page_list = await driver.pages()
await page_list[-1].content() 
code6

3.Pyppeteer几种常用类

浏览器类

pyppeteer.browser.Browser()
这个类是由launch()返回的实例

  • browserContexts: 返回所有打开的浏览器上下文的列表,在新创建的浏览器中,这将返回单个实例
  • coroutine close(): 关闭连接并终止浏览器进程
  • coroutine createIncognitoBrowserContext(): 创建一个新的隐身浏览器上下文。这不会与其他浏览器上下文共享cookie /缓存
  • coroutine disconnect(): 断开浏览器
  • coroutine newPage(): 在此浏览器上创建新页面并返回其对象
  • coroutine pages(): 获取此浏览器的所有页面。返回格式为列表,包含所有页面
  • process:返回此浏览器的进程
  • target(): 获取浏览器中所有活动目标的列表
  • coroutine userAgent():返回浏览器的原始UA
  • coroutine version(): 获取浏览器的版本
  • wsEndpoint: 返回websocket端点url

 键盘类

  • coroutine down(): 如果没有参数,则是按下鼠标左键。如果是键盘的某个值比如shift、A等键,则是相当于按下这些键。
  • coroutine press(): 同down(),但是上面是不会释放鼠标或者键盘,需要调用up方法释放鼠标。
  • coroutine sendCharacter:将字符发送到页面。没用过
  • coroutine type(): 同上
  • coroutine up(): 释放由down按下的键或者鼠标

worker类

page.on(‘workercreated’, 函数) 这个函数传入的参数就是worker类

  • coroutine evaluate(): 同上
  • coroutine evaluateHandle():同上
  • coroutine executionContext():同上
  • url: 同上

Dialog类

page.on( 'dialog', 函数),函数的参数就是这个类

  • coroutine accept(): 接受对话框
  • defaultValue: 如果对话框提示,则获取默认提示值
  • coroutine dismiss(): 关闭对话框
  • message: 获取对话框消息
  • type: 获取对话框类型。类型有:alert,beforeunload,confirm,或prompt

frame类

 

  • coroutine J():
  • coroutine JJ():
  • coroutine JJeval(): 
  • coroutine Jeval(): 
  • coroutine Jx(): 
  • coroutine addScriptTag(): 
  • coroutine addStyleTag(): 
  • childFrames: 获取子框架
  • coroutine click(): 
  • coroutine content(): 
  • coroutine evaluate(): 
  • coroutine evaluateHandle(): 
  • coroutine executionContext(): 
  • coroutine focus(): 
  • coroutine hover(): 
  • isDetached():如果此框架已分离,则返回True
  • name:获取frame的名称,如果没有则返回ID
  • parentFrame:获取父框架
  • 后面这些属性和page类一模一样

ElementHandle类

 

  • coroutine J()
  • coroutine JJ()
  • coroutine JJeval()
  • coroutine Jeval()
  • asElement
  • coroutine boundingBox(): 返回此元素的边界框,如果元素不可见,则返回None
  • coroutine boxModel():返回元素框
  • coroutine click()
  • coroutine contentFrame(): 返回元素句柄的frame
  • coroutine focus()
  • coroutine hover()
  • coroutine isIntersectingViewport(): 如果元素在视口中可见,则返回True
  • coroutine press()
  • coroutine screenshot()
  • coroutine tap()
  • coroutine type()
  • coroutine uploadFile(): 上传文件

 

 

 

frame类

  • coroutine J():
  • coroutine JJ():
  • coroutine JJeval(): 
  • coroutine Jeval(): 
  • coroutine Jx(): 
  • coroutine addScriptTag(): 
  • coroutine addStyleTag(): 
  • childFrames: 获取子框架
  • coroutine click(): 
  • coroutine content(): 
  • coroutine evaluate(): 
  • coroutine evaluateHandle(): 
  • coroutine executionContext(): 
  • coroutine focus(): 
  • coroutine hover(): 
  • isDetached():如果此框架已分离,则返回True
  • name:获取frame的名称,如果没有则返回ID
  • parentFrame:获取父框架
    后面这些属性和page类一模一样
posted @ 2021-01-13 14:55  玅神  阅读(866)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3