python爬虫-pyppeteer常用API

pyppeteer的基本使用

API 介绍

  • pyppeteer.launcher.launch()
    启动 Chrome 进程并返回浏览器实例
  • 常用的有['--no-sandbox','--disable-gpu', '--disable-setuid-sandbox','--window-size=1440x900'] dumpio 不加 dumpio=True 有时会出现浏览器卡顿 userDataDir 保留 cookie等数据,可以达到免登录,而这个参数没什么用 devtools logLevel autoClose 默认就好,不过如果你需要保持浏览器状态,可以不关闭,下次直接连接这个已存在的浏览器

    使用注意:

    browserWSEndpoint:格式是 ws://${host}:${port}/devtools/browser/<id>。
    浏览器的 wsEndpoint 这个值,可以通过  
    brower = pyppeteer.launcher.launch()
    dev = brower. wsEndpoint
    来获取,保存这个值就可以下次启动了
    
  • pyppeteer.launcher.executablePath() 获取默认 Chrome 的可执行路径
  • pyppeteer.browser.Browser() 这个类是由 launch()返回的实例
  • pyppeteer.page.Page() 由 brower.newPage()或者 brower.pages()得到
  • J():别名 querySelector(),看名字就知道通过 CSS 选择器来选出元素
  • JJ(): 别名 querySelectorAll()
  • Jeval(): 功能比 page.J()功能多一点,可以选出网页文本或者属性指
  • JJeval(): querySelectorAllEval()
  • Jx(): 别名 xpath()
  • addScriptTag(): 将脚本标记添加到此页面, 返回 ElementHandle其中一个 url,path 或 content 选择是必要的。
  • close(): 关闭此页面
  • content(): 获取页面的完整 HTML 内容
  • cookies(): 获取 cookie。参数为 URL,如果未指定 URL,则此方法返回当前页面 URL 的 cookie。如果指定了 URL,则仅返回这些 URL 的 cookie
  • coverage: 返回 coverage
  • deleteCookie(): 删除 cookie,参数为 cookie 字段参数,比如 name、url、domain、path 等
  • emulate(): 模拟给定的设备指标和用户代理。相当于同时设置了 setUserAgent()、setViewport()
  • emulateMedia(): 模拟页面的 CSS 媒体类型。参数为:screen、print、None。
  • evaluate(): 在浏览器上执行 js 并获取结果
  • evaluateHandle(): 同上,只是会返回一个值。
  • evaluateOnNewDocument(): 也是执行 js,在页面跳转时执行
  • exposeFunction(): 将 python 函数添加到浏览器的 window 对象中 name。
  • focus(): 聚焦匹配的元素。如果不存在,抛出 PageError
  • frames:获取此页面的所有 frame
  • goBack():返回上一个网页。如果不存在,则返回 None
  • goForward(): 跳转到下一页。如果不存在,则返回 None
  • goto(): 访问某个 URL
  • select(): 选择选项并返回所选值。如果未找到元素,抛出 ElementHandleError。
  • setCacheEnabled(): 为每个请求启用/禁用缓存。默认启用
  • setContent(): 将 HTML 加到网页
  • setCookie(): 设置 cookie
  • setDefaultNavigationTimeout(): 更改默认的最大导航超时。默认 30 秒
  • setJavaScriptEnabled(): 设置 JavaScript 启用/禁用
  • setExtraHTTPHeaders(): 设置默认 headers 头,值为一个字典
  • setRequestInterception(): 启用/禁用请求拦截。配合 page.on()
  • setUserAgent(): 设置要在此页面中使用的 UA
  • setViewport(): 设置窗口大小。
  • type(): 往输入框中输入内容,第一个参数为 CSS 选择器,第二个为文本内容
  • url:获取此页面的 url
  • waitFor(): 等待页面上匹配的函数,超时或元素。参数可以是 int 或者 float,单位毫秒。也可以是 CSS 选择器
  • waitForNavigation(): 等到网页跳转
  • waitForRequest(): 等待请求
  • waitForResponse(): 等待回应
  • waitForSelector(): 等到页面上出现匹配的元素。其实 waitFor()也有同样功能。
  • waitForFunction(): 等到函数完成并返回一个值
  • waitForXPath(): 等到 xpath 页面上出现匹配的元素
  • workers: 获取页面的所有 worker。
  • xpath(): xpath页面寻找
  • worker 类

  • page.on('workercreated', 函数) 这个函数传入的参数就是 worker 类
  • evaluate(): 同上
  • evaluateHandle():同上
  • executionContext():同上
  • url: 同上
  • down(): 如果没有参数,则是按下鼠标左键。如果是键盘的某个值比如 shift、A 等键,则是相当于按下这些键。
  • press(): 同 down(),但是上面是不会释放鼠标或者键盘,需要调用 up 方法释放鼠标。
  • sendCharacter:将字符发送到页面。
  • type(): 同上
  • up(): 释放由 down 按下的键或者鼠标
  • click(): 按下(x, y)处的按钮

    tracing 类

    创建可在 Chrome DevTools 或时间线查看器打开的跟踪文件 ,使用如下

    await page.tracing.start({'path': 'trace.json'})
    await page.goto('https://www.google.com')
    await page.tracing.stop()
    
  • start(): 开始跟踪
  • stop(): 停止跟踪
  • Dialog类

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

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

    frame 类

  • isDetached(): 如果此框架已分离,则返回 True
  • name:获取 frame 的名称,如果没有则返回 ID
  • parentFrame:获取父框架
  • frme类和page基本相同 一般使用page

    ElementHandle 类

    Debugging

    对于调试,您可以设置 for 和 功能 logLevel 选项。但是,此选项会打印太多日志,包括 pyppeteer 的 SEND / RECV 消息。为了只显示被抑制的错误消息,您应该设置 logging.DEBUG 为 True

    mport asyncio
    import pyppeteer
    from pyppeteer import launch
    pyppeteer.DEBUG = True  # 在此处设置