python爬虫-pyppeteer常用API

pyppeteer的基本使用

API 介绍

启动器
  • pyppeteer.launcher.launch()
    启动 Chrome 进程并返回浏览器实例

参数:

参数类型解释
ignoreHTTPSErrorsbool是否忽略 HTTPS 错误。默认为 False
headlessbool无头模式下运行浏览器。默认为 True 除非 appModedevtools 选项 True
executablePathstr运行 Chromium 或 Chrome 可执行文件的路径,而不是默认捆绑的 Chromium
slowMoint或float按指定的毫秒数减慢 pyppeteer 操作。
argsList [str]传递给浏览器进程的附加参数(标志)。
dumpiobool是否管道浏览器进程 stdout 和 stderr 进入 process.stdoutprocess.stderr。默认为 False。
userDataDirstr用户数据目录的路径
envdict指定浏览器可见的环境变量。默认与 python 进程相同。
devtoolsbool为每个选项卡自动打开 DevTools 面板。如果是此选项 Trueheadless 则将设置该选项 False
logLevelint或str用于打印日志的日志级别。默认值与根记录器相同。
autoClosebool脚本完成时自动关闭浏览器进程。默认为 True
loopasyncio.AbstractEventLoop事件循环(实验)。

使用注意:

参数注意
ignoreHTTPSErrors不解释
headless不解释
executablePath默认的路径就行
slowMo一般要加这个参数
args常用的有[’–no-sandbox’,’–disable-gpu’, ‘–disable-setuid-sandbox’,’–window-size=1440x900’]
dumpio不加 dumpio=True 有时会出现浏览器卡顿
userDataDir保留 cookie等数据,可以达到免登录,而这个参数没什么用
env看需要
devtools看需要
logLevel无用
autoClose默认就好,不过如果你需要保持浏览器状态,可以不关闭,下次直接连接这个已存在的浏览器
loop看需要
  • pyppeteer.launcher.connect() 连接到现有的 Chrome

参数:

参数类型解释
browserWSEndpointstr要连接的浏览器 WebSocket 端点。(必填
ignoreHTTPSErrorsbool是否忽略 HTTPS 错误。默认为 False
slowMoint或float按指定的毫秒数减慢 pyppeteer 的速度。
logLevelint或str用于打印日志的日志级别。默认值与根记录器相同
loopasyncio.AbstractEventLoop事件循环(实验

使用注意:

browserWSEndpoint:格式是 ws://${host}:${port}/devtools/browser/<id>。
浏览器的 wsEndpoint 这个值,可以通过  
brower = pyppeteer.launcher.launch()
dev = brower. wsEndpoint
来获取,保存这个值就可以下次启动了
  • pyppeteer.launcher.executablePath() 获取默认 Chrome 的可执行路径
浏览器类
  • pyppeteer.browser.Browser() 这个类是由 launch()返回的实例
参数解释
_contexts返回所有打开的浏览器上下文的列表,在新创建的浏览器中,这将返回单个实例
close()关闭连接并终止浏览器进程
createIncognitoBrowserContext()创建一个新的隐身浏览器上下文。这不会与其他浏览器上下文共享 cookie /缓存
disconnect()断开浏览器
newPage()在此浏览器上创建新页面并返回其对象
pages()获取此浏览器的所有页面。返回格式为列表,包含所有页面
process返回此浏览器的进程
target()获取浏览器中所有活动目标的列表
userAgent()返回浏览器的原始 UA
version()获取浏览器的版本
wsEndpoint返回 WebSocket 端点 url
页面类
  • pyppeteer.page.Page() 由 brower.newPage()或者 brower.pages()得到
    • J():别名 querySelector(),看名字就知道通过 CSS 选择器来选出元素
    • JJ(): 别名 querySelectorAll()
    • Jeval(): 功能比 page.J()功能多一点,可以选出网页文本或者属性指
    • JJeval(): querySelectorAllEval()
    • Jx(): 别名 xpath()
    • addScriptTag(): 将脚本标记添加到此页面, 返回 ElementHandle其中一个 url,path 或 content 选择是必要的。
      参数类型解释
      url字符串要添加的脚本的 URL。
      path字符串
      content字符串要添加的 JavaScript 字符串。
      type字符串脚本类型。使用 module 以加载一个 JavaScript ES6 模块。
    • coroutine addStyleTag(): 将样式或链接标记添加到此页面, 返回 ElementHandle
      其中一个 urlpathcontent 选择是必要的。
      参数类型解释
      url字符串要添加的链接标记的 URL。
      path字符串要添加的本地 CSS 文件的路径
      content字符串要添加的 CSS 字符串
    • authenticate(): 提供 http 身份验证的凭据
    • bringToFront(): 将页面置于前面
    • browser: 获取该页面所属的浏览器
    • click(): 相当于鼠标左键单击匹配的元素,参数是 CSS 选择器的字符串。如果没有匹配到元素,则会引发 PageError
      参数类型解释
      buttonstrleft,right 或 middle,默认为 left。
      clickCountint默认为 1。
      delayint或float等待时间 mousedown 和 mouseup 以毫秒为单位的时间。默认为 0。
    • 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
      参数解释
      url-
      timeout-
      waitUntil等待访问成功,参数需要另外指定
    • hover(): 鼠标悬停匹配的元素
    • isClosed(): 判断页面是否关闭
    • keyboard: 获取 keyboard 对象
    • mainFrame: 获取 frame 页面的主要内容
    • metrics(): 获取页面中的信息
    • mouse: 获取 mouse 对象
    • reload(): 刷新网页
    • screenshot(): 截图
      参数类型解释
      pathstr保存图像的文件路径。屏幕截图类型将从文件扩展名中推断出来。
      typestr指定屏幕截图类型,可以是 jpeg 或 png。默认为 png。
      qualityint图像的质量,在 0-100 之间。不适用于 png 图像
      fullPagebool如果为 true,请截取完整的可滚动页面。默认为 False。
      clip字典指定页面剪切区域的对象。有参数x,y,width,height
      omitBackgroundbool隐藏默认的白色背景并允许捕获具有透明度的屏幕截图。
      encodingstr图像的编码可以是 base64binary。默认为 binary
    • select(): 选择选项并返回所选值。如果未找到元素,抛出 ElementHandleError。
    • setCacheEnabled(): 为每个请求启用/禁用缓存。默认启用
    • setContent(): 将 HTML 加到网页
    • setCookie(): 设置 cookie
    • setDefaultNavigationTimeout(): 更改默认的最大导航超时。默认 30 秒
    • setJavaScriptEnabled(): 设置 JavaScript 启用/禁用
    • setExtraHTTPHeaders(): 设置默认 headers 头,值为一个字典
    • setRequestInterception(): 启用/禁用请求拦截。配合 page.on()
    • setUserAgent(): 设置要在此页面中使用的 UA
    • setViewport(): 设置窗口大小。
      参数类型解释
      widthint以像素为单位的页面宽度。
      heightint以像素为单位的页面高度
      deviceScaleFactorfloat默认为 1.0
      isMobilefloat默认为 False
      hasTouchbool默认为 False
      isLandscapebool默认为 False
    • tap(): 点击与之匹配的元素
    • title(): 获取页面标签
    • tracing:获取 tracing 对象
    • 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)处的按钮
    参数类型解释
    buttonSTRleft(左键)、right(右键)或 middle(中键),默认为 left
    clickCountint默认为 1。
    delayint或float等待时间 mousedownmouseup 以毫秒为单位的时间。默认为 0
  • down(): 同上
  • move(): 移动鼠标光标。
  • up(): 同上
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 类
参数解释
J()-
JJ()-
JJeval()-
asElement-
boundingBox()返回此元素的边界框,如果元素不可见,则返回 None
boxModel()返回元素框
click()-
contentFrame()返回元素句柄的 frame
focus()-
hover()-
isIntersectingViewport()如果元素在视口中可见,则返回 True
press()-
screenshot()-
tap()-
type()-
uploadFile()上传文件
request 类
  • page.on(‘request’, 函数) 这个函数传入的参数就是 request 类
    • abort(): 中断请求
    • continue_(): 使用可选的请求覆盖继续请求
      参数类型解释
      urlstr如果设置,请求 URL 将被更改。
      methodstr如果设置,则更改请求方法(例如 GET)。
      postDatastr如果设置,则更改发布数据或请求。
      headersdict如果设置,则更改请求 HTTP 标头
    • failure(): 返回错误文本
    • frame : 返回匹配的 frame 对象
    • headers: 返回此请求的 HTTP 标头字典
    • method:返回此请求的方法
    • postData: 返回此请求的子正文
    • redirectChain: request 类重定向的所有请求
    • resourceType:渲染引擎感知的此请求的资源类型
    • respond(): 通过给定的参数修改请求
      参数类型解释
      statusint响应状态代码,默认为 200。
      headersdict可选的响应头。
      contentTypestr如果设置,则等于设置Content-Type 响应头
      bodystr或bytes可选的响应主体
    • response(): 返回匹配的 response 对象
    • url: 此请求的 URL
response 类
参数解释
buffer()返回相应的字节内容
fromCache如果响应是从缓存提供的,则返回 True。缓存可能是浏览器的磁盘缓存或者内存,而不是服务器响应的
fromServiceWorker如果响应由服务器提供,则返回 True
headers返回此响应的 HTTP 标头字典
json()获取响应正文的 JSON
ok返回 bool 此请求是否成功
request获取匹配的 request 对象
securityDetails返回与此响应关联的安全详细信息
status响应的状态代码
text()获取响应正文的文本
url响应的 URL
target 类
参数解释
browser获取目标所属的浏览器
browserContext返回目标所属的浏览器上下文
createCDPSession()创建附加到目标的 Chrome Devtools 协议会话
opener获取打开此目标的目标
page()获取此目标的页面
type获取此目标的类型
url获取此目标的网址
Debugging

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

mport asyncio
import pyppeteer
from pyppeteer import launch

pyppeteer.DEBUG = True  # 在此处设置

async def main():
    browser = await launch()
    
asyncio.get_event_loop().run_until_complete(main())
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值