page.click(selector, clickOptions),
大概意思是 click()触发如果会跳转网页,则需要 page.waitForNavigation()这个函数来等待。但点击事件和触发事件是同时的,所以需要将这两个事件绑定,代码如上。
coroutine close(): 关闭此页面
coroutine content(): 获取页面的完整 HTML 内容
coroutine cookies(): 获取 cookie。参数为 URL,如果未指定 URL,则此方法返回当前页面 URL 的 cookie。如果指定了 URL,则仅返回这些 URL 的 cookie
coverage: 返回 coverage
coroutine deleteCookie(): 删除 cookie,参数为 cookie 字段参数,比如 name、url、domain、path 等
coroutine emulate(): 模拟给定的设备指标和用户代理。相当于同时设置了 setUserAgent()、setViewport()
coroutine emulateMedia(): 模拟页面的 css 媒体类型。参数为:screen、print、None。
coroutine evaluate(): 在浏览器上执行 js 并获取结果
coroutine evaluateHandle(): 同上,只是会返回一个值。至于是什么,没用过
coroutine evaluateOnNewDocument(): 也是执行 js,至于区别。好像是在页面跳转时执行
coroutine exposeFunction(): 将 python 函数添加到浏览器的 window 对象中 name。不知道有什么用
coroutine focus(): 聚焦匹配的元素。如果不存在,抛出 PageError
frames:获取此页面的所有 frame
coroutine goBack():返回上一个网页。如果不存在,则返回 None
coroutine goForward(): 跳转到下一页。如果不存在,则返回 None
coroutine goto(): 访问某个 URL。
url:。。。
timeout:。。。
waitUntil:什么情况下算成功访问。没看懂参数的几个值有什么用
coroutine hover(): 鼠标悬停匹配的元素
isClosed(): 判断页面是否关闭
keyboard: 获取 keyboard 对象
mainFrame: 获取 frame 页面的主要内容
coroutine metrics(): 好像是获取页面中的信息
mouse: 获取 mouse 对象
coroutine reload(): 刷新网页
coroutine screenshot(): 截图
path
(str):保存图像的文件路径。屏幕截图类型将从文件扩展名中推断出来。
type
(str):指定屏幕截图类型,可以是
jpeg
或
png
。默认为
png
。
quality
(int):图像的质量,在 0-100 之间。不适用于
png
图像。
fullPage
(bool):如果为 true,请截取完整的可滚动页面。默认为
False
。
clip
(字典):指定页面剪切区域的对象。此选项应包含以下字段:
x
(int):剪辑区域左上角的 x 坐标。
y
(int):剪辑区域左上角的 y 坐标。
width
(int):剪切区域的宽度。
height
(int):剪切区域的高度。
omitBackground
(bool):隐藏默认的白色背景并允许捕获具有透明度的屏幕截图。
encoding
(str):图像的编码可以是
'base64'
或
'binary'
。默认为
'binary'
。
coroutine select(): 选择选项并返回所选值。如果未找到元素,抛出 ElementHandleError。
coroutine setCacheEnabled(): 为每个请求启用/禁用缓存。默认启用
coroutine setContent(): 将 html 加到网页
coroutine setCookie(): 设置 cookie
setDefaultNavigationTimeout(): 更改默认的最大导航超时。默认 30 秒
coroutine setJavaScriptEnabled(): 设置 JavaScript 启用/禁用
coroutine setExtraHTTPHeaders(): 设置默认 headers 头,值为一个字典
coroutine setRequestInterception(): 启用/禁用请求拦截。配合 page.on()
coroutine setUserAgent(): 设置要在此页面中使用的 UA
coroutine setViewport(): 设置窗口大小。
width
(int):以像素为单位的页面宽度。
height
(int):以像素为单位的页面高度。
deviceScaleFactor
(float):默认为 1.0。
isMobile
(bool):默认为
False
。
hasTouch
(bool):默认为
False
。
isLandscape
(bool):默认为
False
。
coroutine tap(): 点击与之匹配的元素
coroutine title(): 获取页面标签
tracing:获取 tracing 对象
coroutine type(): 往输入框中输入内容,第一个参数为 css 选择器,第二个为文本内容
url:获取此页面的 url
waitFor(): 等待页面上匹配的函数,超时或元素。参数可以是 int 或者 float,单位毫秒。也可以是 css 选择器
waitForFunction():
coroutine waitForNavigation(): 等到网页跳转
coroutine waitForRequest(): 等待请求
coroutine waitForResponse(): 等待回应
waitForSelector(): 等到页面上出现匹配的元素。其实 waitFor()也有同样功能。
waitForFunction(): 等到函数完成并返回一个值
coroutine waitForXPath(): 等到 xpath 页面上出现匹配的元素
workers: 获取页面的所有 worker。至于是什么,我不知道
coroutine xpath(): ..
worker 类
page.on('workercreated', 函数) 这个函数传入的参数就是 worker 类
coroutine evaluate(): 同上
coroutine evaluateHandle():同上
coroutine executionContext():同上
url: 同上
coroutine down(): 如果没有参数,则是按下鼠标左键。如果是键盘的某个值比如 shift、A 等键,则是相当于按下这些键。
coroutine press(): 同 down(),但是上面是不会释放鼠标或者键盘,需要调用 up 方法释放鼠标。
coroutine sendCharacter:将字符发送到页面。没用过
coroutine type(): 同上
coroutine up(): 释放由 down 按下的键或者鼠标
coroutine click(): 按下(x, y)处的按钮
button
(STR): ,left(左键)、right(右键)或 middle(中键),默认为
left
。
clickCount
(int):默认为 1。
delay
(int | float):等待时间
mousedown
和
mouseup
以毫秒为单位的时间。默认为 0。
coroutine down(): 同上
coroutine move(): 移动鼠标光标。
coroutine up(): 同上
tracing 类
创建可在 Chrome DevTools 或时间线查看器打开的跟踪文件 ,使用如下
await page.tracing.start({'path': 'trace.json'})
await page.goto('https://www.google.com')
await page.tracing.stop()
coroutine start(): 开始跟踪
coroutine stop(): 停止跟踪
不好用,可能是我不知道用
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(): 上传文件
request 类
page.on('request', 函数) 这个函数传入的参数就是 request 类
coroutine abort(): 中断请求
coroutine continue_(): 使用可选的请求覆盖继续请求
url
(str):如果设置,请求 URL 将被更改。
method
(str):如果设置,则更改请求方法(例如 GET
)。
postData
(str):如果设置,则更改发布数据或请求。
headers
(dict):如果设置,则更改请求 HTTP 标头
failure(): 返回错误文本
frame : 返回匹配的 frame 对象
headers: 返回此请求的 HTTP 标头字典
isNavigationRequest(): ??
method:返回此请求的方法
postData: 返回此请求的帖子正文
redirectChain: request 类重定向的所有请求
resourceType:渲染引擎感知的此请求的资源类型
coroutine respond(): 通过给定的参数修改请求
status
(int):响应状态代码,默认为 200。
headers
(dict):可选的响应头。
contentType
(str):如果设置,则等于设置 Content-Type
响应头。
body
(str | bytes):可选的响应主体。
response(): 返回匹配的 response 对象
url: 此请求的 URL
response 类
buffer(): 返回相应的字节内容
fromCache: 如果响应是从缓存提供的,则返回 True。缓存可能是浏览器的磁盘缓存或者内存,而不是服务器响应的
fromServiceWorker: 如果响应由服务器提供,则返回 True
headers: 返回此响应的 HTTP 标头字典
coroutine json(): 获取响应正文的 JSON
ok: 返回 bool 此请求是否成功
request: 获取匹配的 request 对象
securityDetails: 返回与此响应关联的安全详细信息
status: 响应的状态代码
coroutine text(): 获取响应正文的文本
url : 响应的 URL
target 类
我到现在还没明白这是干什么的
browser: 获取目标所属的浏览器
browserContext: 返回目标所属的浏览器上下文
coroutine createCDPSession(): 创建附加到目标的 Chrome Devtools 协议会话
opener: 获取打开此目标的目标
coroutine page(): 获取此目标的页面
type: 获取此目标的类型
url: 获取此目标的网址
CDPSession 类
coroutine detach(): 从目标分离会话
send() :
Debugging
对于调试,您可以设置 for 和 功能 logLevel
选项。但是,此选项会打印太多日志,包括 pyppeteer 的 SEND / RECV 消息。为了只显示被抑制的错误消息,您应该设置 logging.DEBUG 为 True
import asyncio
import pyppeteer
from pyppeteer import launch
pyppeteer.DEBUG = True # print suppressed errors as error log
async def main():
browser = await launch()
... # do something
asyncio.get_event_loop().run_until_complete(main())