API 介绍
启动 Chrome 进程并返回浏览器实例
使用注意:
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: 获取对话框类型。类型有:alert
,beforeunload
,confirm
,或 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 # 在此处设置