pyppeteer中文文档

  目录

1.命令

​​​​​​2.环境变量

3.Launcher(启动器)

4.浏览器类

5.浏览器上下文类

6.页面类

7.Worker 类

8.键盘类

9.鼠标类

10.Tracing类

11.对话框类

12.控制台消息类

13.Frame 类

14.执行上下文类

15.JSHandle 类

16.元素句柄类

17.请求类

18.响应类

19.Target 类

20.CDPSession类

21.Coverage类

22.调试

23.补充

安装

用法

puppeteer 和 pyppeteer 之间的区别

选项的关键字参数

元素选择器方法名称 ( $-> querySelector) 

和Page.evaluate() _Page.querySelectorEval()

未来计划

学分

内容

索引和表格


pyppeteer官方说明网站

https://miyakogi.github.io/pyppeteer/reference.htmlhttps://miyakogi.github.io/pyppeteer/reference.html

1.命令

  • pyppeteer-install:下载并安装chromium for pyppeteer。
  • pyppeteer要求Python >= 3.6

    使用来自PyP的pip安装:

    pip install pyppeteer
    

    或者从以下网站安装最新版本 this github repo:

    pip install -U git+https://github.com/pyppeteer/pyppeteer@dev

​​​​​​2.环境变量

  • $PYPPETEER_HOME:指定pyppeteer要使用的目录。Pyppeteer使用这个目录来提取下载的Chromium,并创建临时用户数据目录。默认位置取决于平台:

    • windows:C:\Users\\AppData\Local\pyppeteer
    • OS X:/Users//Library/Application Support/pyppeteer
    • Linux:/home//.local/share/pyppeteer
      • 或者在$XDG_DATA_HOME/pyppeteer如果$XDG_DATA_HOME已定义。

    详情见appdirs · PyPI.

  • $PYPPETEER_DOWNLOAD_HOST:覆盖用于下载Chromium的URL的主机部分。默认为https://storage.googleapis.com.

  • $PYPPETEER_CHROMIUM_REVISION:指定您希望pyppeteer使用的某个版本的chromium。默认值可通过以下方式检查pyppeteer.__chromium_revision__.

3.Launcher(启动器)

pyppeteer.launcher.launch(options: dict = None**kwargs) →pyppeteer.browser.Browser  [源码]

启动chrome进程并返回Browser.

此功能是的快捷方式Launcher(options, **kwargs).launch().

可用选项包括:

  • ignoreHTTPSErrors(bool):是否忽略HTTPS错误。默认为False.
  • headless(bool):是否以无头模式运行浏览器。默认为True除非appMode或者devtools选项是True.
  • executablePath(str):运行Chromium或Chrome可执行文件的路径,而不是默认的捆绑Chromium。
  • slowMo(int|float):将pyppeteer操作减慢指定的毫秒数。
  • args(List[str]):要传递给浏览器进程的附加参数(标志)。
  • ignoreDefaultArgs(bool):不要使用pyppeteer的默认参数。这是一个危险的选择;小心使用。
  • handleSIGINT(bool):按Ctrl+C关闭浏览器进程。默认为True.
  • handleSIGTERM(bool):关闭SIGTERM上的浏览器进程。默认为True.
  • handleSIGHUP(bool):关闭SIGHUP上的浏览器进程。默认为True.
  • dumpio(bool):是否将浏览器进程stdout和stderr通过管道传输到process.stdoutprocess.stderr。默认为False.
  • userDataDir(字符串):用户数据目录的路径。
  • env(dict):指定对浏览器可见的环境变量。默认与python过程相同。
  • devtools(bool):是否为每个选项卡自动打开DevTools面板。如果此选项为True,的headless将设置选项False.
  • logLevel(int|str):打印日志的日志级别。默认与根日志记录器相同。
  • autoClose(bool):脚本完成时自动关闭浏览器进程。默认为True.
  • loop(asyncio。AbstractEventLoop):事件循环(实验的).
  • appMode(bool):已弃用。

注意

Pyppeteer也可以用来控制Chrome浏览器,但它最好与它捆绑的Chrome版本一起使用。不能保证它能与任何其他版本一起工作。使用executablePath选择时要格外小心。

pyppeteer.launcher.connect(options: dict = None**kwargs) → pyppeteer.browser.Browser  [来源]

连接到现有的chrome。

browserWSEndpoint选项是连接到chrome所必需的。格式是ws://${host}:${port}/devtools/browser/。这个值可以通过wsEndpoint 获取.

可用选项包括:

  • browserWSEndpoint(str):要连接的浏览器websocket端点。(需要)
  • ignoreHTTPSErrors(bool):是否忽略HTTPS错误。默认为False.
  • slowMo(int|float):按指定的毫秒数减慢pyppeteer的速度。
  • logLevel(int|str):打印日志的日志级别。默认与根日志记录器相同。
  • loop(asyncio。AbstractEventLoop):事件循环(实验的).

pyppeteer.launcher.executablePath()→ str   [来源]

        获取默认chrome的可执行路径。

4.浏览器类

 pyppeteer.browser.Browser连接:pyppeteer.connection.Connection,contextIds:List [str],ignoreHTTPSErrors:bool,setDefaultViewport:bool,process:Optional [subprocess.Popen] = None,closeCallback:Callable [[],Awaitable [None]] = None , **kwargs )[来源]

基类:pyee.EventEmitter

浏览器类。

当 pyppeteer 通过launch()或 连接到 chrome 时,会创建一个 Browser 对象connect()。

browserContexts

        返回所有打开的浏览器上下文的列表。

        在新创建的浏览器中,这将返回一个实例 [BrowserContext]

协程close( ) → 无[来源]

        关闭连接并终止浏览器进程。

协程createIncogniteBrowserContext( ) → pyppeteer.browser.BrowserContext[来源]

        [弃用] 拼写错误的方法。

        改用createIncognitoBrowserContext()方法。

协程createIncognitoBrowserContext( ) → pyppeteer.browser.BrowserContext[来源]

        创建一个新的隐身浏览器上下文。

        这不会与其他浏览器上下文共享 cookies/缓存。

browser = await launch()
# Create a new incognito browser context.
context = await browser.createIncognitoBrowserContext()
# Create a new page in a pristine context.
page = await context.newPage()
# Do stuff
await page.goto('https://example.com')
...
 
  

协程disconnect( ) → 无[来源]

         断开浏览器。

协程newPage( ) → pyppeteer.page.Page[来源]

        在此浏览器上创建新页面并返回其对象。

协程pages( ) → 列表[pyppeteer.page.Page][来源]

        获取该浏览器的所有页面。

        不可见的页面,例如"background_page",将不会在此处列出。你可以找到然后使用pyppeteer.target.Target.page()

process

        本浏览器的返回过程。

        如果浏览器实例是由创建的pyppeteer.launcher.connect(),则返回None

targets( ) → 列表[pyppeteer.target.Target][来源]

        获取浏览器内所有活动目标的列表。

        在多个浏览器上下文的情况下,该方法将返回一个列表,其中包含所有浏览器上下文中的所有目标。

协程userAgent( ) → str[来源]

        返回浏览器的原始用户代理。

        笔记:页面可以使用 覆盖浏览器用户代理 pyppeteer.page.Page.setUserAgent()。

协程version( ) → str[来源]

        获取浏览器的版本。

wsEndpoint

        返回 websocket 端点 url。

5.浏览器上下文类

pyppeteer.browser.BrowserContext浏览器:pyppeteer.browser.Browser,contextId:可选[str] )[来源]

基类:pyee.EventEmitter

BrowserContext 提供多个独立的浏览器会话。

当浏览器启动时,它默认使用一个 BrowserContext。该方法browser.newPage()在默认浏览器上下文中创建一个页面。

如果一个页面打开另一个页面,例如通过调用window.open,弹出窗口将属于父页面的浏览器上下文。

Pyppeteer 允许使用方法创建“隐身”浏览器上下文 browser.createIncognitoBrowserContext()。“隐身”浏览器上下文不会将任何浏览器数据写入磁盘。

# Create new incognito browser context
context = await browser.createIncognitoBrowserContext()
# Create a new page inside context
page = await context.newPage()
# ... do stuff with page ...
await page.goto('https://example.com')
# Dispose context once it's no longer needed
await context.close()

browser

        返回此浏览器上下文所属的浏览器。

协程close( ) → 无[来源]

        关闭浏览器上下文。

        所有属于浏览器上下文的目标都将被关闭。

         笔记:只能关闭隐身浏览器上下文。

isIncognite( ) → 布尔值[来源]

        [弃用] 拼写错误的方法。

        改用isIncognito()方法。

isIncognito( ) → 布尔值[来源]

        返回 BrowserContext 是否隐身。

        默认浏览器上下文是唯一的非隐身浏览器上下文。

        笔记:无法关闭默认浏览器上下文。

协程newPage( ) → pyppeteer.page.Page[来源]

         在浏览器上下文中创建一个新页面。

targets( ) → 列表[pyppeteer.target.Target][来源]

        返回浏览器上下文中所有活动目标的列表。

6.页面类

pyppeteer.page.Page客户端:pyppeteer.connection.CDPSession,目标:Target,frameTree:Dict [KT,VT],ignoreHTTPSErrors:bool,screenshotTaskQueue:list = None )[来源]

基类:pyee.EventEmitter

页面类。

此类提供与单个 chrome 选项卡交互的方法。一个 Browser对象可能有多个页面对象。

该类Page发出各种可以通过使用或方法Events处理的类,它继承自 pyee的类。ononceEventEmitter

Events=命名空间(Close='close',Console='console',DOMContentLoaded='domcontentloaded',Dialog='dialog',Error='error',FrameAttached='frameattached',FrameDetached='framedetached',FrameNavigated='framenavigated' , Load='load', Metrics='metrics', PageError='pageerror', Request='request', RequestFailed='requestfailed', RequestFinished='requestfinished', Response='response', WorkerCreated='workercreated', WorkerDestroyed ='workerdestroyed') 

可用事件。

协程J选择器:str ) →可选[pyppeteer.element_handle.ElementHandle] 

别名为querySelector()

协程JJ选择器:str ) →列表[pyppeteer.element_handle.ElementHandle] 

别名为querySelectorAll()

协程JJeval选择器:strpageFunction:str*args ) →任何

别名为querySelectorAllEval()

协程Jeval选择器:strpageFunction:str*args ) →任何

别名为querySelectorEval()

协程Jx表达式:str ) →列表[pyppeteer.element_handle.ElementHandle] 

别名为xpath()

协程addScriptTag选项:Dict[KTVT] = None**kwargs ) → pyppeteer.element_handle.ElementHandle[来源]

将脚本标签添加到此页面。

url,path或选项之一content是必要的。

  • url(字符串):要添加的脚本的 URL。
  • path(字符串):要添加的本地 JavaScript 文件的路径。
  • content(字符串):要添加的 JavaScript 字符串。
  • type(字符串):脚本类型。用于module加载 JavaScript ES6 模块。
返回元素句柄:
ElementHandle 添加的标签。

协程addStyleTag选项:Dict[KTVT] = None**kwargs ) → pyppeteer.element_handle.ElementHandle[来源]

将样式或链接标记添加到此页面。

url,path或选项之一content是必要的。

  • url(字符串):要添加的链接标签的 URL。
  • path(字符串):要添加的本地 CSS 文件的路径。
  • content(字符串):要添加的 CSS 字符串。
返回元素句柄:
ElementHandle 添加的标签。

协程authenticate凭证:Dict[str, str] ) →任何[来源]

提供用于 http 身份验证的凭据。

credentials应该是Noneor dict 其中有username和 password字段。

协程bringToFront( ) → 无[来源]

将页面置于最前面(激活选项卡)。

browser

获取页面所属的浏览器。

协程click选择器:str选项:dict = None**kwargs ) →无[来源]

单击匹配的元素selector

此方法使用 获取元素selector,在需要时将其滚动到视图中,然后用于mouse单击元素的中心。如果没有元素匹配selector,则该方法引发 PageError

可用的选项是:

  • button(str): leftright, 或middle, 默认为 left.
  • clickCount(整数):默认为 1。
  • delay(int|float):等待时间,以毫秒为mousedown单位 mouseup。默认为 0。

笔记

如果此方法触发导航事件并且有一个单独的waitForNavigation(),您最终可能会遇到产生意外结果的竞争条件。单击并等待导航的正确模式如下:

await asyncio.gather(
    page.waitForNavigation(waitOptions),
    page.click(selector, clickOptions),
)

协程close选项:Dict[KTVT] = None**kwargs ) →无[来源]

关闭此页面。

可用选项:

  • runBeforeUnload(bool): 默认为False. 是否运行 前卸载 页面处理程序。

默认情况下,运行 beforeunload 处理程序。close()

笔记

如果runBeforeUnload传递为True,则可能会调用一个beforeunload 对话框,并且应该通过页面的 dialog事件手动处理。

协程content( ) → str[来源]

获取页面的完整 HTML 内容。

返回包含文档类型的 HTML。

协程cookies*urls ) → 字典[来源]

获取饼干。

如果未指定 URL,则此方法返回当前页面 URL 的 cookie。如果指定了 URL,则只返回这些 URL 的 cookie。

返回的 cookie 是包含以下字段的字典列表:

  • name(str)
  • value(str)
  • url(str)
  • domain(str)
  • path(str)
  • expires(number): 以秒为单位的 Unix 时间
  • httpOnly(布尔)
  • secure(布尔)
  • session(布尔)
  • sameSite(str):'Strict''Lax'

coverage

返回Coverage。

协程deleteCookie*cookies ) → 无[来源]

删除 cookie。

cookies应该是包含这些字段的字典:

  • name(str):必需
  • url(str)
  • domain(str)
  • path(str)
  • secure(布尔)

协程emulate选项:dict = None**kwargs ) →无[来源]

模拟给定的设备指标和用户代理。

此方法是调用两个方法的快捷方式:

  • setUserAgent()
  • setViewport()

options是一个包含这些字段的字典:

  • viewport(听写)
    • width(int): 以像素为单位的页面宽度。
    • height(int): 以像素为单位的页面宽度。
    • deviceScaleFactor(float): 指定设备比例因子(可以认为是 dpr)。默认为 1。
    • isMobile(bool):标签是否被考虑在内。默认为.meta viewportFalse
    • hasTouch(bool): 指定视口是否支持触摸事件。默认为False.
    • isLandscape(bool): 指定视口是否处于横向模式。默认为False.
  • userAgent(str): 用户代理字符串。

协程emulateMediamediaType: str = None ) →无[来源]

模拟页面的 css 媒体类型。

参数: mediaType ( str ) – 更改页面的 CSS 媒体类型。唯一允许的值为'screen''print'和 None。传递None禁用媒体仿真。

协程evaluatepageFunction: str , *args , force_expr: bool = False ) → 任意[来源]

在浏览器上执行 js-function 或 js-expression 并得到结果。

参数:
  • pageFunction ( str ) – 要在浏览器上执行的 js 函数/表达式的字符串。
  • force_expr ( bool ) – 如果为真,则评估pageFunction为表达式。如果为 False(默认),尝试自动检测函数或表达式。

注意:force_exproption 是仅关键字参数。

协程evaluateHandlepageFunction: str , *args ) → pyppeteer.execution_context.JSHandle[来源]

执行此页面上的功能。

evaluate()和 之间的区别evaluateHandle()在于 evaluateHandle返回 JSHandle 对象(不是值)。

参数: pageFunction ( str ) – 要执行的 JavaScript 函数。

协程evaluateOnNewDocumentpageFunction: str , *args ) → 无[来源]

向文档添加 JavaScript 函数。

在以下情况之一中将调用此函数:

  • 每当浏览页面时
  • 每当附加或导航子框架时。在这种情况下,该函数在新附加框架的上下文中被调用。

协程exposeFunction名称:str,pyppeteerFunction:Callable[[…],Any] ) →无[来源]

将 python 函数window作为name.

可以从 chrome 进程中调用已注册的函数。

参数:
  • name ( string ) – 窗口对象上的函数名称。
  • pyppeteerFunction ( Callable ) – 将在 python 进程上调用的函数。这个函数不应该是异步函数。

协程focus选择器:str ) →无[来源]

聚焦匹配的元素selector

如果没有元素与 匹配selector,则引发PageError

frames

获取该页面的所有帧。

协程goBack选项:dict = None**kwargs ) →可选[pyppeteer.network_manager.Response][来源]

导航到历史记录中的上一页。

可用选项与方法相同goto()。

回不去就回None

协程goForward选项:dict = None**kwargs ) →可选[pyppeteer.network_manager.Response][来源]

导航到历史记录中的下一页。

可用选项与方法相同goto()。

如果不能前进,返回None

coroutine gotourl: str , options: dict = None , **kwargs ) → 可选[pyppeteer.network_manager.Response][来源]

url

参数: url ( string ) – 将页面导航到的 URL。网址应包括方案,例如https://

可用的选项是:

  • timeout(int): 以毫秒为单位的最大导航时间,默认为 30 秒,传递0给禁用超时。可以使用setDefaultNavigationTimeout()方法更改默认值。
  • waitUntil(str|List[str]): 什么时候认为导航成功,默认为load. 给定一个事件字符串列表,在触发所有事件后,导航被认为是成功的。事件可以是:
    • load: 当load事件被触发时。
    • domcontentloaded: 当DOMContentLoaded事件被触发时。
    • networkidle0:当至少 500 毫秒内没有超过 0 个网络连接时。
    • networkidle2:当至少 500 毫秒内不超过 2 个网络连接时。

如果出现以下情况,将Page.goto引发错误:

  • 存在 SSL 错误(例如,在自签名证书的情况下)
  • 目标网址无效
  • timeout导航期间超出
  • 然后主资源加载失败

笔记

goto()引发错误或返回主要资源响应。唯一的例外是导航到about:blank或导航到具有不同哈希值的相同 URL,这将成功并返回None

笔记

Headless 模式不支持导航到 PDF 文档。

协程hover选择器:str ) →无[来源]

鼠标悬停在匹配的元素上selector

如果没有元素与 匹配selector,则引发PageError

协程injectFile文件路径:海峡) →海峡[来源]

[已弃用] 将文件注入此页面。

此方法已弃用。改用addScriptTag()。

isClosed( ) → 布尔值[来源]

表示页面已经关闭。

keyboard

获取Keyboard对象。

mainFrame

获取Frame此页面的主要内容。

协程metrics( ) → Dict[str, Any][来源]

获取指标。

返回包含指标作为键/值对的字典:

  • Timestamp(数字):获取指标样本时的时间戳。
  • Documents(int): 页面中的文档数。
  • Frames(int): 页面中的帧数。
  • JSEventListeners(int): 页面中的事件数。
  • Nodes(int): 页面中的 DOM 节点数。
  • LayoutCount(int): 完整部分页面布局的总数。
  • RecalcStyleCount(int): 页面样式重新计算的总数。
  • LayoutDuration(int):页面持续时间的组合持续时间。
  • RecalcStyleDuration(int):所有页面样式重新计算的组合持续时间。
  • ScriptDuration(int):JavaScript 执行的组合持续时间。
  • TaskDuration(int): 浏览器执行的所有任务的总持续时间。
  • JSHeapUsedSize(float):使用的 JavaScript 堆大小。
  • JSHeapTotalSize(float):总的 JavaScript 堆大小。

mouse

获取Mouse对象。

协程pdf选项:dict = None**kwargs ) → 字节[来源]

生成页面的 pdf。

选项:

  • path(str): 保存 PDF 的文件路径。
  • scale(float): 网页渲染的比例,默认为1.
  • displayHeaderFooter(bool): 显示页眉和页脚。默认为False.
  • headerTemplate(str):打印标题的 HTML 模板。应该是具有以下类的有效 HTML 标记。
    • date: 格式化打印日期
    • title: 文件名
    • url: 文档位置
    • pageNumber: 当前页码
    • totalPages: 文档中的总页数
  • footerTemplate(str):打印页脚的 HTML 模板。应使用与headerTemplate.
  • printBackground(bool): 打印背景图形。默认为 False.
  • landscape(bool): 纸张方向。默认为False.
  • pageRanges(字符串):要打印的纸张范围,例如“1-5,8,11-13”。默认为空字符串,表示所有页面。
  • format(str): 论文格式。如果设置,优先于 widthor height。默认为Letter.
  • width(str):纸张宽度,接受标有单位的值。
  • height(str):纸张高度,接受标有单位的值。
  • margin(dict):页边距,默认为None.
    • top(str):上边距,接受标有单位的值。
    • right(str):右边距,接受标有单位的值。
    • bottom(str):底部边距,接受标有单位的值。
    • left(str): 左边距,接受标有单位的值。
退货: 返回生成的 PDFbytes对象。

笔记

目前仅在无头模式下支持生成 pdf。

pdf()print使用css 媒体生成页面的 pdf 。要生成带有媒体的 pdf screen,请 page.emulateMedia('screen')在调用pdf().

笔记

默认情况下,pdf()生成带有修改颜色的 pdf 以供打印。使用该--webkit-print-color-adjust属性强制渲染精确的颜色。

await page.emulateMedia('screen')
await page.pdf({'path': 'page.pdf'})

、和选项接受标有单位的值width。未标记的值被视为像素。heightmargin

几个例子:

  • page.pdf({'width': 100}):打印宽度设置为 100 像素。
  • page.pdf({'width': '100px'}):打印宽度设置为 100 像素。
  • page.pdf({'width': '10cm'}):打印宽度设置为 100 厘米。

所有可用的单位是:

  • px: 像素
  • in: 英寸
  • cm: 厘米
  • mm: 毫米

格式选项是:

  • Letter:8.5 英寸 x 11 英寸
  • Legal:8.5 英寸 x 14 英寸
  • Tabloid: 11 英寸 x 17 英寸
  • Ledger: 17 英寸 x 11 英寸
  • A0:33.1 英寸 x 46.8 英寸
  • A1:23.4 英寸 x 33.1 英寸
  • A2:16.5 英寸 x 23.4 英寸
  • A3:11.7 英寸 x 16.5 英寸
  • A4:8.27 英寸 x 11.7 英寸
  • A5:5.83 英寸 x 8.27 英寸
  • A6:4.13 英寸 x 5.83 英寸

笔记

headerTemplatefooterTemplate标记有以下限制:

  1. 不评估模板内的脚本标签。
  2. 页面样式在模板中不可见。

协程plainText( ) → str[来源]

[已弃用] 以纯文本形式获取页面内容。

协程queryObjectsprototypeHandle:pyppeteer.execution_context.JSHandle ) →pyppeteer.execution_context.JSHandle[来源]

遍历js堆,找到所有带句柄的对象。

参数: prototypeHandle ( JSHandle ) – 原型对象的 JSHandle。

协程querySelector选择器:str ) →可选[pyppeteer.element_handle.ElementHandle][来源]

获取匹配的元素selector

参数: 选择器str ) – 搜索元素的选择器。
返回可选[元素句柄]:
selector如果找到 与 匹配的元素 ,则返回其ElementHandle. 如果没有找到,返回None

协程querySelectorAll选择器:str ) →列表[pyppeteer.element_handle.ElementHandle][来源]

获取所有匹配的元素selector作为列表。

参数: 选择器str ) – 搜索元素的选择器。
返回列表[元素句柄]:
ElementHandle其中匹配的 列表 selector。如果没有元素与 匹配selector,则返回空列表。

协程querySelectorAllEval选择器:strpageFunction:str*args ) →任意[来源]

对匹配的所有元素执行函数selector

参数:
  • 选择器str ) – 查询页面的选择器。
  • pageFunction ( str ) – 要在浏览器上评估的 JavaScript 函数字符串。此函数将匹配元素的数组作为第一个参数。
  • args ( Any ) – 要传递给的参数pageFunction

协程querySelectorEval选择器:strpageFunction:str*args ) →任意[来源]

使用匹配的元素执行函数selector

参数:
  • 选择器str ) – 查询页面的选择器。
  • pageFunction ( str ) – 要在浏览器上评估的 JavaScript 函数字符串。此函数将与选择器匹配的元素作为第一个参数。
  • args ( Any ) – 要传递给的参数pageFunction

如果没有元素与selector.

协程reload选项:dict = None**kwargs ) →可选[pyppeteer.network_manager.Response][来源]

重新加载此页面。

可用选项与方法相同goto()。

协程screenshot选项:dict = None**kwargs ) → Union[bytes, str][来源]

截屏。

以下选项可用:

  • path(str): 保存图像的文件路径。屏幕截图类型将从文件扩展名推断出来。
  • type(str): 指定截图类型,可以是jpeg或 png. 默认为png.
  • quality(int): 图像的质量,介于 0-100 之间。不适用于png图像。
  • fullPage(bool): 当为 true 时,截取整个可滚动页面的屏幕截图。默认为False.
  • clip(dict):指定页面裁剪区域的对象。此选项应包含以下字段:
    • x(int): 剪辑区域左上角的 x 坐标。
    • y(int): 剪辑区域左上角的 y 坐标。
    • width(int): 裁剪区域的宽度。
    • height(int): 裁剪区域的高度。
  • omitBackground(bool): 隐藏默认的白色背景并允许捕获透明的屏幕截图。
  • encoding(str): 图像的编码,可以是 'base64''binary'. 默认为'binary'.

协程select选择器:str*值) → List[str][来源]

选择选项并返回选定的值。

如果没有元素与 匹配selector,则引发ElementHandleError

协程setBypassCSP已启用:bool ) →无[来源]

切换绕过页面的内容安全策略。

笔记

CSP 绕过发生在 CSP 初始化而不是评估时。通常这意味着page.setBypassCSP 应该在导航到域之前调用它。

协程setCacheEnabled已启用:bool = True ) →无[来源]

为每个请求启用/禁用缓存。

默认情况下,缓存是启用的。

协程setContenthtml: str ) → 无[来源]

将内容设置到该页面。

参数: html ( str ) – 分配给页面的 HTML 标记。

协程setCookie*cookies ) → 无[来源]

设置饼干。

cookies应该是包含这些字段的字典:

  • name(str):必需
  • value(str):必需
  • url(str)
  • domain(str)
  • path(str)
  • expires(number): 以秒为单位的 Unix 时间
  • httpOnly(布尔)
  • secure(布尔)
  • sameSite(str):'Strict''Lax'

setDefaultNavigationTimeout超时:整数) →无[来源]

更改默认的最大导航超时。

此方法更改以下方法的默认超时 30 秒:

  • goto()
  • goBack()
  • goForward()
  • reload()
  • waitForNavigation()
参数: timeout ( int ) – 最大导航时间(以毫秒为单位)。传递0 以禁用超时。

协程setExtraHTTPHeaders标头:Dict[str, str] ) →无[来源]

设置额外的 HTTP 标头。

页面发起的每个请求都会发送额外的 HTTP 标头。

笔记

page.setExtraHTTPHeaders不保证传出请求中标头的顺序。

参数: headers ( Dict ) – 一个字典,其中包含要随每个请求一起发送的附加 http 标头。所有标头值都必须是字符串。

协程setJavaScriptEnabled已启用:bool ) →无[来源]

设置 JavaScript 启用/禁用。

协程setOfflineMode已启用:bool ) →无[来源]

设置离线模式启用/禁用。

协程setRequestInterception值:bool ) →无[来源]

启用/禁用请求拦截。

激活请求拦截会启用 Request类的 abort()、 continue_()和 response()方法。这提供了修改页面发出的网络请求的能力。

协程setUserAgentuserAgent: str ) → 无[来源]

设置要在此页面中使用的用户代理。

参数: userAgent ( str ) – 在此页面中使用的特定用户代理

协程setViewport视口:字典) →无[来源]

设置视口。

可用的选项是:

  • width(int): 以像素为单位的页面宽度。
  • height(int): 以像素为单位的页面高度。
  • deviceScaleFactor(浮动):默认为 1.0。
  • isMobile(bool): 默认为False.
  • hasTouch(bool): 默认为False.
  • isLandscape(bool): 默认为False.

协程tap选择器:str ) →无[来源]

点击与 匹配的元素selector

参数: 选择器str ) – 用于搜索要触摸的元素的选择器。

target

返回创建此页面的目标。

协程title( ) → str[来源]

获取页面的标题。

touchscreen

获取Touchscreen对象。

tracing

获取跟踪对象。

协程type选择器:str文本:str选项:dict = None**kwargs ) →无[来源]

text在匹配的元素上键入selector

如果没有元素与 匹配selector,则引发PageError

详情见pyppeteer.input.Keyboard.type()。

url

获取此页面的 URL。

viewport

将视口作为字典获取。

返回字典的字段与 相同setViewport()。

waitForselectorOrFunctionOrTimeout: Union[str, int, float], options: dict = None, *args, **kwargs ) → Awaitable[T_co][来源]

等待页面上匹配的函数、超时或元素。

此方法的行为与第一个参数不同:

  • 如果selectorOrFunctionOrTimeout是数字(int 或 float),则将其视为以毫秒为单位的超时,并返回将在超时后完成的 future。
  • 如果selectorOrFunctionOrTimeout是一串 JavaScript 函数,此方法是waitForFunction().
  • 如果是选择器字符串或 xpath 字符串,则此方法是or selectorOrFunctionOrTimeout的快捷方式。如果字符串以 开头,则该字符串被视为 xpath。waitForSelector()waitForXPath()//

Pyppeteer 尝试自动检测函数或选择器,但有时会漏检。如果没有按预期工作,请 直接使用waitForFunction()或。waitForSelector()

参数:
  • selectorOrFunctionOrTimeout – 选择器、xpath 或函数字符串,或超时(毫秒)。
  • args ( Any ) – 传递函数的参数。
退货:

返回解析为成功值的 JSHandle 的可等待对象。

可用选项:见waitForFunction()或 waitForSelector()

waitForFunctionpageFunction: str , options: dict = None , *args , **kwargs ) → Awaitable[T_co][来源]

等到函数完成并返回真值。

参数: args ( Any ) – 要传递给的参数pageFunction
退货: pageFunction返回等待对象,该对象在返回真值时解析 。它解析为 JSHandle真值。

此方法接受以下选项:

  • polling(str|number): 执行的时间间隔pageFunction ,默认为raf. 如果polling是一个数字,则将其视为函数执行的时间间隔(以毫秒为单位)。如果polling是字符串,则它可以是以下值之一:
    • rafpageFunction:在回调中 不断执行requestAnimationFrame。这是最严格的轮询模式,适合观察样式变化。
    • mutationpageFunction:在每个 DOM 突变上执行。
  • timeout(int|float):等待的最长时间,以毫秒为单位。默认为 30000(30 秒)。传递0以禁用超时。

协程waitForNavigation选项:dict = None**kwargs ) →可选[pyppeteer.network_manager.Response][来源]

等导航。

可用选项与方法相同goto()。

Response当页面导航到新 URL 或重新加载时返回。当您运行将间接导致页面导航的代码时,它很有用。如果由于 使用History API而导航到不同的锚点或导航 ,则导航将返回None

考虑这个例子:

navigationPromise = async.ensure_future(page.waitForNavigation())
await page.click('a.my-link')  # indirectly cause a navigation
await navigationPromise  # wait until navigation finishes

或者,

await asyncio.wait([
    page.click('a.my-link'),
    page.waitForNavigation(),
])

笔记

使用 History API 更改 URL 被视为导航。

协程waitForRequesturlOrPredicate: Union[str, Callable[[pyppeteer.network_manager.Request], bool]], options: Dict[KT, VT] = None, **kwargs ) → pyppeteer.network_manager.Request[来源]

等待请求。

参数: urlOrPredicate – 要等待的 URL 或函数。

此方法接受以下选项:

  • timeout(int|float):以毫秒为单位的最长等待时间,默认为 30 秒,传递0以禁用超时。

例子:

firstRequest = await page.waitForRequest('http://example.com/resource')
finalRequest = await page.waitForRequest(lambda req: req.url == 'http://example.com' and req.method == 'GET')
return firstRequest.url

协程waitForResponseurlOrPredicate: Union[str, Callable[[pyppeteer.network_manager.Response], bool]], options: Dict[KT, VT] = None, **kwargs ) → pyppeteer.network_manager.Response[来源]

等待回应。

参数: urlOrPredicate – 要等待的 URL 或函数。

此方法接受以下选项:

  • timeout(int|float):以毫秒为单位的最长等待时间,默认为 30 秒,传递0以禁用超时。

例子:

firstResponse = await page.waitForResponse('http://example.com/resource')
finalResponse = await page.waitForResponse(lambda res: res.url == 'http://example.com' and res.status == 200)
return finalResponse.ok

waitForSelector选择器:str选项:dict = None**kwargs ) → Awaitable[T_co][来源]

等到匹配的元素selector出现在页面上。

等待selector出现在页面中。如果调用方法的时候selector已经存在,方法会立即返回。timeout如果在等待几毫秒后选择器没有出现 ,该函数将引发错误。

参数: 选择器str ) – 要等待的元素的选择器。
退货: 返回等待的对象,该对象在将选择器字符串指定的元素添加到DOM中时可以解决。

此方法接受以下选项:

  • visible(bool): 等待元素出现在 DOM 中并且可见;即没有或 CSS 属性。默认为.display: nonevisibility: hiddenFalse
  • hidden(bool): 等待元素在 DOM 中找不到或被隐藏,即具有或CSS 属性。默认为.display: nonevisibility: hiddenFalse
  • timeout(int|float):等待的最长时间,以毫秒为单位。默认为 30000(30 秒)。传递0以禁用超时。

waitForXPathxpath: str , options: dict = None , **kwargs ) → Awaitable[T_co][来源]

等到匹配的元素xpath出现在页面上。

等待xpath出现在页面中。如果调用方法的时刻已经xpath存在,方法将立即返回。timeout如果在等待几毫秒后 xpath 没有出现,该函数将引发异常。

参数: xpath ( str ) – 要等待的元素的 [xpath]。
退货: 返回可等待对象,当 xpath 字符串指定的元素添加到 DOM 时解析。

可用的选项是:

  • visible(bool): 等待元素出现在 DOM 中并且可见,即不具有或 CSS 属性。默认为.display: nonevisibility: hiddenFalse
  • hidden(bool): 等待元素在 DOM 中找不到或被隐藏,即具有或CSS 属性。默认为.display: nonevisibility: hiddenFalse
  • timeout(int|float):等待的最长时间,以毫秒为单位。默认为 30000(30 秒)。传递0以禁用超时。

workers

获取此页面的所有工作人员。

协程xpath表达式:str ) →列表[pyppeteer.element_handle.ElementHandle][来源]

计算 XPath 表达式。

如果此页面中没有此类元素,则返回一个空列表。

参数: expression ( str ) – 要评估的 XPath 字符串。

7.Worker 类

pyppeteer.worker.Worker客户端:CDPSession,url:str,consoleAPICalled:Callable[[str,List[pyppeteer.execution_context.JSHandle]],None],exceptionThrown:Callable[[Dict[KT,VT]],None] )[来源]

基类:pyee.EventEmitter

Worker 类代表一个 WebWorker。

事件workercreatedworkerdestroyed在页面对象上发出以指示工作人员生命周期。

page.on('workercreated', lambda worker: print('Worker created:', worker.url))

协程evaluatepageFunction: str , *args ) → 任意[来源]

  pageFunction用评价args

        的快捷方式。(await worker.executionContext).evaluate(pageFunction, *args)

协程evaluateHandlepageFunction: str , *args ) → pyppeteer.execution_context.JSHandle[来源]

        评估pageFunctionargs返回JSHandle。

        的快捷方式。(await worker.executionContext).evaluateHandle(pageFunction, *args)

协程executionContext( ) → pyppeteer.execution_context.ExecutionContext[来源]

        返回执行上下文。

url

        返回网址。

8.键盘类

pyppeteer.input.Keyboard客户端:pyppeteer.connection.CDPSession )[来源]

基类:object

键盘类提供用于管理虚拟键盘的 API。

高级 api 是type(),它采用原始字符并在您的页面上生成适当的 keydown、keypress/input 和 keyup 事件。

为了更好地控制,您可以使用down()、up()和 sendCharacter()来手动触发事件,就好像它们是从真实键盘生成的一样。

按住Shift以选择和删除某些文本的示例:

await page.keyboard.type('Hello, World!')
await page.keyboard.press('ArrowLeft')

await page.keyboard.down('Shift')
for i in ' World':
    await page.keyboard.press('ArrowLeft')
await page.keyboard.up('Shift')

await page.keyboard.press('Backspace')
# Result text will end up saying 'Hello!'.

按下的例子A

await page.keyboard.down('Shift')
await page.keyboard.press('KeyA')
await page.keyboard.up('Shift')

协程down键:str选项:dict = None**kwargs ) →无[来源]

使用 发送keydown事件key

如果key是单个字符且没有其他修饰键Shift 被按住,也会产生keypress/事件。可以指定input该选项以强制 生成事件。textinput

如果key是修改键,如ShiftMetaAlt,则随后的按键将在激活该修改键的情况下发送。要释放修改键,请使用up()方法。

参数:
  • key ( str ) – 要按下的键的名称,例如ArrowLeft.
  • options ( dict ) – 选项可以有text字段,如果指定了这个选项,用这个文本生成一个输入事件。

笔记

修改键确实影响down()。按住shift 将以大写形式键入文本。

协程press键:str选项:Dict[KTVT] = None**kwargs ) →无[来源]

key

如果key是单个字符并且没​​有其他修饰键 Shift被按住,也会生成keypress/事件。input可以指定该text选项以强制生成输入事件。

参数: key ( str ) – 要按下的键的名称,例如ArrowLeft.

此方法接受以下选项:

  • text(str):如果指定,则使用此文本生成输入事件。
  • delaykeydown(int|float):和 之间等待的时间keyup。默认为 0。

笔记

修改键 DO 效果press()。按住Shift将以大写形式键入文本。

协程sendCharacterchar: str ) → 无[来源]

将字符发送到页面中。

此方法调度一个keypressandinput事件。这不会发送keydownorkeyup事件。

笔记

修改键不影响sendCharacter()。按住 shift不会以大写形式键入文本。

协程type文本:str选项:Dict[KTVT] = None**kwargs ) →无[来源]

在焦点元素中键入字符。

此方法 为 中的每个字符发送keydownkeypress/input和事件。keyuptext

要按特殊键,如ControlArrowDown,请使用 press()方法。

参数:
  • text ( str ) – 要输入到焦点元素中的文本。
  • options ( dict ) – 选项可以有delay(int|float) 字段,指定两次按键之间的等待时间,以毫秒为单位。默认为 0。

笔记

修改键不影响type()。按住shift 不会以大写形式键入文本。

协程up键:str ) →无[来源]

调度keyup的事件key

参数: key ( str ) – 要释放的密钥的名称,例如ArrowLeft.

9.鼠标类

pyppeteer.input.Mouse客户端:pyppeteer.connection.CDPSession键盘:pyppeteer.input.Keyboard )[来源]

基地:object

鼠标类。

协程clickx: float , y: float , options: dict = None , **kwargs ) → None[来源]

x单击 ( , )处的按钮y

move()、down()和 的快捷方式up()。

此方法接受以下选项:

  • button(str): leftright, 或middle, 默认为 left.
  • clickCount(整数):默认为 1。
  • delay(int|float):等待时间,以毫秒为mousedown单位 mouseup。默认为 0。

协程down选项:dict = None**kwargs ) →无[来源]

按下按钮(调度mousedown事件)。

此方法接受以下选项:

  • button(str): leftright, 或middle, 默认为 left.
  • clickCount(整数):默认为 1。

协程movex: float , y: float , options: dict = None , **kwargs ) → None[来源]

移动鼠标光标(调度mousemove事件)。

选项可以接受steps(int) 字段。如果steps指定了此选项,则发送中间mousemove事件。默认为 1。

协程up选项:dict = None**kwargs ) →无[来源]

释放按下的按钮(调度mouseup事件)。

此方法接受以下选项:

  • button(str): leftright, 或middle, 默认为 left.
  • clickCount(整数):默认为 1。

10.Tracing类

pyppeteer.tracing.Tracing客户端:pyppeteer.connection.CDPSession )[来源]

基类:object

Tracing类。

您可以使用start()和创建可以在 Chrome DevTools 或时间线查看器stop()中打开的跟踪文件 。

await page.tracing.start({'path': 'trace.json'})
await page.goto('https://www.google.com')
await page.tracing.stop()

协程start选项:dict = None**kwargs ) →无[来源]

开始追踪。

每个浏览器一次只能激活一个跟踪。

此方法接受以下选项:

  • path(str):写入跟踪文件的路径。
  • screenshots(bool): 在跟踪中捕获屏幕截图。
  • categories(List[str]):指定要使用的自定义类别而不是默认类别。

协程stop( ) → str[来源]

停止追踪。

退货: 跟踪数据作为字符串。

11.对话框类

pyppeteer.dialog.Dialog客户端:pyppeteer.connection.CDPSession类型:str消息:str默认值:str = '' )[来源]

基地:object

对话框类。

对话框对象通过事件按页面分派dialog

使用类的示例Dialog

browser = await launch()
page = await browser.newPage()

async def close_dialog(dialog):
    print(dialog.message)
    await dialog.dismiss()
    await browser.close()

page.on(
    'dialog',
    lambda dialog: asyncio.ensure_future(close_dialog(dialog))
)
await page.evaluate('() => alert("1")')

协程acceptpromptText: str = '' ) →无[来源]

接受对话框。

  • promptText(str): 在提示中输入的文本。如果对话框的类型不是提示,则不会产生任何影响。

defaultValue

如果对话框是提示的,则获取默认提示值。

如果对话框没有提示,则返回空字符串 (‘’)。

协程dismiss( ) → 无[来源]

关闭对话框。

message

获取对话消息。

type

获取对话框类型。

alertbeforeunloadconfirmprompt

12.控制台消息类

pyppeteer.page.ConsoleMessage类型:str文本:strargs:List[pyppeteer.execution_context.JSHandle] = None )[来源]

基类:object

控制台消息类。

ConsoleMessage 对象通过事件按页面分派console

args

        返回此消息的 args (JSHandle) 列表。

text

        返回此消息的文本表示。

type

        此消息的返回类型。

13.Frame 类

pyppeteer.frame_manager.Frame客户端:pyppeteer.connection.CDPSession,parentFrame:可选[Frame],frameId:str )[来源]

基类:object

框架类。

框架对象可以通过pyppeteer.page.Page.mainFrame.

协程J选择器:str ) →可选[pyppeteer.element_handle.ElementHandle] 

别名为querySelector()

协程JJ选择器:str ) →列表[pyppeteer.element_handle.ElementHandle] 

别名为querySelectorAll()

协程JJeval选择器:strpageFunction:str*args ) →可选[Dict[KT,VT]] 

别名为querySelectorAllEval()

协程Jeval选择器:strpageFunction:str*args ) →任何

别名为querySelectorEval()

协程Jx表达式:str ) →列表[pyppeteer.element_handle.ElementHandle] 

别名为xpath()

协程addScriptTag选项:Dict[KT, VT] ) → pyppeteer.element_handle.ElementHandle[来源]

将脚本标签添加到此框架。

详情见pyppeteer.page.Page.addScriptTag()。

协程addStyleTag选项:Dict[KT, VT] ) → pyppeteer.element_handle.ElementHandle[来源]

将样式标签添加到此框架。

详情见pyppeteer.page.Page.addStyleTag()。

childFrames

获取子帧。

协程click选择器:str选项:dict = None**kwargs ) →无[来源]

单击匹配的元素selector

详情见pyppeteer.page.Page.click()。

协程content( ) → str[来源]

获取页面的全部 HTML 内容。

协程evaluatepageFunction: str , *args , force_expr: bool = False ) → 任意[来源]

在此框架上评估 pageFunction。

详情见pyppeteer.page.Page.evaluate()。

协程evaluateHandlepageFunction: str , *args ) → pyppeteer.execution_context.JSHandle[来源]

在此框架上执行功能。

详情见pyppeteer.page.Page.evaluateHandle()。

协程executionContext() →可选[pyppeteer.execution_context.ExecutionContext][来源]

返回此帧的执行上下文。

返回ExecutionContext 关联到此帧。

协程focus选择器:str ) →无[来源]

匹配的焦点元素selector

详情见pyppeteer.page.Page.focus()。

协程hover选择器:str ) →无[来源]

鼠标悬停在匹配的元素上selector

详情见pyppeteer.page.Page.hover()。

协程injectFile文件路径:海峡) →海峡[来源]

[已弃用] 将文件注入框架。

isDetached( ) → 布尔值[来源]

True如果此框架已分离,则返回。

否则返回False

name

获取框架名称。

parentFrame

获取父框架。

如果此框架是主框架或分离框架,则返回None

协程querySelector选择器:str ) →可选[pyppeteer.element_handle.ElementHandle][来源]

获取匹配selector字符串的元素。

详情见pyppeteer.page.Page.querySelector()。

协程querySelectorAll选择器:str ) →列表[pyppeteer.element_handle.ElementHandle][来源]

获取匹配的所有元素selector

详情见pyppeteer.page.Page.querySelectorAll()。

coroutine querySelectorAllEvalselector: str , pageFunction: str , *args ) → Optional[Dict[KT, VT]][来源]

对匹配选择器的所有元素执行函数。

详情见pyppeteer.page.Page.querySelectorAllEval()。

协程querySelectorEval选择器:strpageFunction:str*args ) →任意[来源]

在匹配选择器的元素上执行函数。

详情见pyppeteer.page.Page.querySelectorEval()。

协程select选择器:str*值) → List[str][来源]

选择选项并返回选定的值。

详情见pyppeteer.page.Page.select()。

协程setContenthtml: str ) → 无[来源]

将内容设置到该页面。

协程tap选择器:str ) →无[来源]

点击与 匹配的元素selector

详情见pyppeteer.page.Page.tap()。

协程title( ) → str[来源]

获取框架的标题。

协程type选择器:str文本:str选项:dict = None**kwargs ) →无[来源]

text在匹配的元素上键入selector

详情见pyppeteer.page.Page.type()。

url

获取框架的 url。

waitForselectorOrFunctionOrTimeout: Union[str, int, float], options: dict = None, *args, **kwargs ) → Union[Awaitable[T_co], pyppeteer.frame_manager.WaitTask][来源]

等到selectorOrFunctionOrTimeout

详情见pyppeteer.page.Page.waitFor()。

waitForFunctionpageFunction: str , options: dict = None , *args , **kwargs ) → pyppeteer.frame_manager.WaitTask[来源]

等到函数完成。

详情见pyppeteer.page.Page.waitForFunction()。

waitForSelector选择器:str选项:dict = None**kwargs ) → pyppeteer.frame_manager.WaitTask[来源]

等到匹配的元素selector出现在页面上。

详情见pyppeteer.page.Page.waitForSelector()。

waitForXPathxpath: str , options: dict = None , **kwargs ) → pyppeteer.frame_manager.WaitTask[来源]

等到匹配的元素xpath出现在页面上。

详情见pyppeteer.page.Page.waitForXPath()。

协程xpath表达式:str ) →列表[pyppeteer.element_handle.ElementHandle][来源]

计算 XPath 表达式。

如果此框架中没有此类元素,则返回一个空列表。

参数: expression ( str ) – 要评估的 XPath 字符串。

14.执行上下文类

pyppeteer.execution_context.ExecutionContext客户端:pyppeteer.connection.CDPSession,contextPayload:Dict [KT,VT],objectHandleFactory:Any,frame:Frame = None )[来源]

基地:object

执行上下文类。

协程evaluatepageFunction: str , *args , force_expr: bool = False ) → 任意[来源]

pageFunction在此上下文中执行。

详情见pyppeteer.page.Page.evaluate()。

协程evaluateHandlepageFunction: str , *args , force_expr: bool = False ) → pyppeteer.execution_context.JSHandle[来源]

pageFunction在此上下文中执行。

详情见pyppeteer.page.Page.evaluateHandle()。

frame

返回与此执行上下文关联的帧。

协程queryObjectsprototypeHandle:pyppeteer.execution_context.JSHandle ) →pyppeteer.execution_context.JSHandle[来源]

发送查询。

详情见pyppeteer.page.Page.queryObjects()。

15.JSHandle 类

pyppeteer.execution_context.JSHandle上下文:pyppeteer.execution_context.ExecutionContext,客户端:pyppeteer.connection.CDPSession,remoteObject:Dict [KT,VT] )[来源]

基地:object

JSHandle类。

JSHandle 表示页内 JavaScript 对象。可以使用该evaluateHandle()方法创建 JSHandle。

asElement( ) → 可选[元素句柄][来源]

返回 null 或对象句柄本身。

协程dispose( ) → 无[来源]

停止引用句柄。

executionContext

获取此句柄的执行上下文。

协程getProperties( ) → Dict[str, pyppeteer.execution_context.JSHandle][来源]

获取此句柄的所有属性。

协程getPropertypropertyName:str ) →pyppeteer.execution_context.JSHandle[来源]

获取 的属性值propertyName

协程jsonValue( ) → Dict[KT, VT][来源]

获取此对象的 Jsonized 值。

toString( ) → 海峡[来源]

获取字符串表示。

16.元素句柄类

pyppeteer.element_handle.ElementHandle上下文:pyppeteer.execution_context.ExecutionContext客户端:pyppeteer.connection.CDPSessionremoteObject:dict页面:AnyframeManager:FrameManager )[来源]

基类:pyppeteer.execution_context.JSHandle

元素句柄类。

此类表示页内 DOM 元素。ElementHandle 可以通过该方法创建pyppeteer.page.Page.querySelector()。

ElementHandle 防止 DOM 元素被垃圾回收,除非句柄被释放。ElementHandles 在其原始框架被导航时自动释放。

ElementHandle isinstance 可以用作 和 pyppeteer.page.Page.querySelectorEval()方法 中的参数pyppeteer.page.Page.evaluate()。

协程J选择器:str ) →可选[pyppeteer.element_handle.ElementHandle] 

别名为querySelector()

协程JJ选择器:str ) →列表[pyppeteer.element_handle.ElementHandle] 

别名为querySelectorAll()

协程JJeval选择器:strpageFunction:str*args ) →任何

别名为querySelectorAllEval()

协程Jeval选择器:strpageFunction:str*args ) →任何

别名为querySelectorEval()

协程Jx表达式:str ) →列表[pyppeteer.element_handle.ElementHandle] 

别名为xpath()

asElement( ) → pyppeteer.element_handle.ElementHandle[来源]

返回此 ElementHandle。

协程boundingBox( ) → Optional[Dict[str, float]][来源]

返回此元素的边界框。

如果该元素不可见,则返回None

该方法返回边界框字典,其中包含:

  • x(int):元素的 X 坐标(以像素为单位)。
  • y(int):元素的 Y 坐标(以像素为单位)。
  • width(int): 元素的宽度,以像素为单位。
  • height(int): 元素的高度,以像素为单位。

协程boxModel( ) → 可选[Dict[KT, VT]][来源]

返回元素框。

None如果元素不可见则返回。方框表示为点列表;每个点都是一本字典。框点按顺时针排序。{x, y}

返回值是一个包含以下字段的字典:

  • content(List[Dict]): 内容框。
  • padding(List[Dict]): 填充框。
  • border(List[Dict]): 边框框。
  • margin(List[Dict]): 边距框。
  • width(int): 元素的宽度。
  • height(int): 元素的高度。

协程click选项:dict = None**kwargs ) →无[来源]

单击此元素的中心。

如果需要,此方法将元素滚动到视图中。如果元素与 DOM 分离,则该方法会引发ElementHandleError.

options可以包含以下字段:

  • button(str): leftright, of middle, 默认为 left.
  • clickCount(整数):默认为 1。
  • delay(int|float):等待时间,以毫秒为mousedown单位 mouseup。默认为 0。

协程contentFrame( ) → 可选[pyppeteer.frame_manager.Frame][来源]

返回元素句柄的内容框架。

None如果此句柄未引用 iframe,则返回。

协程focus( ) → 无[来源]

专注于这个元素。

协程hover( ) → 无[来源]

将鼠标移到该元素的中心。

如果需要,此方法将元素滚动到视图中。如果此元素与 DOM 树分离,则该方法会引发一个ElementHandleError.

协程isIntersectingViewport( ) → 布尔[来源]

True如果元素在视口中可见,则返回。

协程press键:str选项:Dict[KTVT] = None**kwargs ) →无[来源]

key在元件上。

此方法聚焦元素,然后使用 pyppeteer.input.keyboard.down()and pyppeteer.input.keyboard.up()

参数: key ( str ) – 要按下的键的名称,例如ArrowLeft.

此方法接受以下选项:

  • text(str):如果指定,则使用此文本生成输入事件。
  • delaykeydown(int|float):和 之间等待的时间keyup。默认为 0。

协程querySelector选择器:str ) →可选[pyppeteer.element_handle.ElementHandle][来源]

selector返回在此元素下匹配的第一个元素。

如果没有元素与 匹配selector,则返回None

协程querySelectorAll选择器:str ) →列表[pyppeteer.element_handle.ElementHandle][来源]

selector返回在此元素下匹配的所有元素。

如果没有元素与 匹配selector,则返回空列表 ( [])。

协程querySelectorAllEval选择器:strpageFunction:str*args ) →任意[来源]

Page.querySelectorAllEval在元素内运行。

Array.from(document.querySelectorAll)此方法在元素内运行,并将其作为第一个参数传递给pageFunction。如果没有元素匹配selector,则该方法引发 ElementHandleError

如果pageFunction返回承诺,则等待承诺解决并返回其值。

例子:

Hello!
Hi!
feedHandle = await page.J('.feed')
assert (await feedHandle.JJeval('.tweet', '(nodes => nodes.map(n => n.innerText))')) == ['Hello!', 'Hi!']

协程querySelectorEval选择器:strpageFunction:str*args ) →任意[来源]

Page.querySelectorEval在元素内运行。

document.querySelector此方法在元素内运行,并将其作为第一个参数传递给pageFunction。如果没有元素匹配selector,则该方法引发 ElementHandleError

如果pageFunction返回承诺,则等待承诺解决并返回其值。

ElementHandle.Jeval是这种方法的捷径。

例子:

tweetHandle = await page.querySelector('.tweet')
assert (await tweetHandle.querySelectorEval('.like', 'node => node.innerText')) == 100
assert (await tweetHandle.Jeval('.retweets', 'node => node.innerText')) == 10

协程screenshot选项:Dict[KTVT] = None**kwargs ) → 字节[来源]

截取此元素的屏幕截图。

如果元素与 DOM 分离,此方法会引发一个 ElementHandleError.

可用选项与pyppeteer.page.Page.screenshot().

协程tap( ) → 无[来源]

点击此元素的中心。

如果需要,此方法将元素滚动到视图中。如果元素与 DOM 分离,则该方法会引发ElementHandleError.

协程type文本:str选项:Dict[KTVT] = None**kwargs ) →无[来源]

聚焦元素,然后键入文本。

详情见pyppeteer.input.Keyboard.type()方法。

协程uploadFile*filePaths ) → 字典[来源]

上传文件。

协程xpath表达式:str ) →列表[pyppeteer.element_handle.ElementHandle][来源]

评估相对于此 elementHandle 的 XPath 表达式。

如果没有这样的元素,则返回一个空列表。

参数: expression ( str ) – 要评估的 XPath 字符串。

17.请求类

pyppeteer.network_manager.Request客户端:pyppeteer.connection.CDPSession,requestId:可选[str],interceptionId:str,isNavigationRequest:bool,allowInterception:bool,url:str,resourceType:str,payload:dict,frame:可选[pyppeteer.frame_manager.Frame ], redirectChain: 列表[请求] )[来源]

基类:object

请求类。

每当页面发送请求(例如网络资源请求)时,pyppeteer 的页面都会发出以下事件:

  • 'request': 当页面发出请求时发出。
  • 'response':当/如果收到请求的响应时发出。
  • 'requestfinished':在下载响应主体并且请求完成时发出。

如果请求在某个时候失败,则发出事件而不是'requestfinished'事件(也可能不是'response'事件) 。'requestfailed'

如果请求得到'redirect'响应,则请求成功完成'requestfinished'事件,并向重定向 url 发出新请求。

协程aborterrorCode: str = 'failed' ) →无[来源]

中止请求。

要使用它,请求拦截应该由 启用 pyppeteer.page.Page.setRequestInterception()。如果未启用请求拦截,则引发NetworkError.

errorCode是一个可选的错误代码字符串。默认为failed, 可以是以下之一:

  • aborted:操作已中止(由于用户操作)。
  • accessdenied: 访问除网络以外的资源的权限被拒绝。
  • addressunreachable: IP 地址无法访问。这通常意味着没有到指定主机或网络的路由。
  • blockedbyclient: 客户端选择阻止请求。
  • blockedbyresponse:请求失败,因为请求与未满足的要求一起交付(例如,“X-Frame-Options”和“Content-Security-Policy”祖先检查)。
  • connectionaborted:由于未收到已发送数据的 ACK,导致连接超时。
  • connectionclosed:连接已关闭(对应于 TCP FIN)。
  • connectionfailed: 连接尝试失败。
  • connectionrefused: 连接尝试被拒绝。
  • connectionreset:连接已重置(对应于 TCP RST)。
  • internetdisconnected: 互联网连接已丢失。
  • namenotresolved: 无法解析主机名。
  • timedout: 操作超时。
  • failed: 发生一般故障。

协程continue_覆盖:Dict[KTVT] = None ) →无[来源]

使用可选的请求覆盖继续请求。

要使用此方法,应启用请求拦截 pyppeteer.page.Page.setRequestInterception()。如果未启用请求拦截,则引发NetworkError.

overrides可以有以下字段:

  • url(str): 如果设置,请求 url 将被更改。
  • method(str):如果设置,则更改请求方法(例如GET)。
  • postData(str):如果设置,则更改发布数据或请求。
  • headers(dict):如果设置,则更改请求 HTTP 标头。

failure( ) → 可选[Dict[KT, VT]][来源]

返回错误文本。

None除非此请求失败,否则 返回,如requestfailed事件所报告的那样。

当请求失败时,此方法返回字典,其中有一个 errorText字段,其中包含人类可读的错误消息,例如 'net::ERR_RAILED'

frame

返回匹配的frame对象。

None如果导航到错误页面则返回。

headers

返回此请求的 HTTP 标头字典。

所有标头名称都是小写的。

isNavigationRequest( ) → 布尔值[来源]

此请求是否驱动框架的导航。

method

返回此请求的方法(GET、POST 等)。

postData

返回此请求的帖子正文。

redirectChain

返回为获取资源而发起的请求链。

  • 如果没有重定向且请求成功,链将为空。
  • 如果服务器至少响应一个重定向,则该链将包含所有被重定向的请求。

redirectChain在同一链的所有请求之间共享。

resourceType

呈现引擎感知的此请求的资源类型。

ResourceType 将是以下之一:documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestother

协程respond响应:Dict[KT, VT] ) →无[来源]

        用给定的响应满足请求。

        要使用它,请求拦截应该由 启用 pyppeteer.page.Page.setRequestInterception()。未启用请求 拦截,提高NetworkError

response是一个字典,它可以有以下字段:

  • status(int): 响应状态码,默认为200。
  • headers(dict): 可选的响应头。
  • contentType(str): 如果设置,等于设置Content-Type 响应头。
  • body(str|bytes):可选的响应主体。

response

        返回匹配Response对象,或None.

        如果未收到响应,则返回None

url

        此请求的 URL。

18.响应类

pyppeteer.network_manager.Response客户端:pyppeteer.connection.CDPSession,请求:pyppeteer.network_manager.Request,状态:int,标头:Dict [str,str],fromDiskCache:bool,fromServiceWorker:bool,securityDetails:Dict [KT,VT] = None )[来源]

基地:object

响应类代表接收到的响应Page

buffer( ) → 可等待[字节][来源]

返回 awaitable,它解析为带有响应正文的字节。

fromCache

True如果响应是从缓存中提供的,则返回。

cache是浏览器的磁盘缓存或内存缓存。

fromServiceWorker

True如果响应是由 service worker 提供的,则返回。

headers

返回此响应的 HTTP 标头字典。

所有标头名称都是小写的。

协程json( ) → 字典[来源]

获取响应主体的 JSON 表示形式。

ok

无论此请求是否成功(200-299),都返回布尔值。

request

获取匹配Request对象。

securityDetails

返回与此响应关联的安全详细信息。

如果响应是通过安全连接或None其他方式接收到的,则为安全详细信息。

status

响应的状态代码。

协程text( ) → str[来源]

获取响应主体的文本表示。

url

响应的 URL。

19.Target 类

pyppeteer.browser.TargettargetInfo: Dict[KT, VT], browserContext: BrowserContext, sessionFactory: Callable[[], Coroutine[Any, Any, pyppeteer.connection.CDPSession]], ignoreHTTPSErrors: bool, setDefaultViewport: bool, screenshotTaskQueue: List[T] , 循环: asyncio.events.AbstractEventLoop )[来源]

基类:object

浏览器的Target 类。

browser

获取目标所属的浏览器。

browserContext

返回目标所属的浏览器上下文。

协程createCDPSession( ) → pyppeteer.connection.CDPSession[来源]

创建附加到目标的 Chrome Devtools 协议会话。

opener

获取打开此目标的目标。

顶级目标返回None.

协程page( ) → 可选[pyppeteer.page.Page][来源]

获取此目标的页面。

如果目标不是“page”或“background_page”类型,则返回 None.

type

获取此目标的类型。

类型可以是'page''background_page''service_worker'、 'browser''other'

url

获取此目标的 url。

20.CDPSession类

pyppeteer.connection.CDPSession连接:Union[pyppeteer.connection.Connection,CDPSession],targetType:str,sessionId:str,循环:asyncio.events.AbstractEventLoop )[来源]

基类:pyee.EventEmitter

Chrome Devtools 协议会话。

这些CDPSession实例用于讨论原始的 Chrome Devtools 协议:

  • 可以使用方法调用协议方法send()。
  • 可以使用方法订阅协议事件on()

可以在此处找到有关 DevTools 协议的文档 。

协程detach( ) → 无[来源]

从目标中分离会话。

一旦分离,会话将不会发出任何事件,也不能用于发送消息。

send方法:str参数:dict = None ) → Awaitable[T_co][来源]

向连接的会话发送消息。

参数:
  • method ( str ) – 协议方法名称。
  • params ( dict ) – 可选的方法参数。

21.Coverage类

pyppeteer.coverage.Coverage客户端:pyppeteer.connection.CDPSession )[来源]

基类:object

Coverage类。

Coverage 收集有关页面使用的 JavaScript 和 CSS 部分的信息。

使用 JavaScript 和 CSS 覆盖率获取初始执行代码百分比的示例:

# Enable both JavaScript and CSS coverage
await page.coverage.startJSCoverage()
await page.coverage.startCSSCoverage()

# Navigate to page
await page.goto('https://example.com')
# Disable JS and CSS coverage and get results
jsCoverage = await page.coverage.stopJSCoverage()
cssCoverage = await page.coverage.stopCSSCoverage()
totalBytes = 0
usedBytes = 0
coverage = jsCoverage + cssCoverage
for entry in coverage:
    totalBytes += len(entry['text'])
    for range in entry['ranges']:
        usedBytes += range['end'] - range['start'] - 1

print('Bytes used: {}%'.format(usedBytes / totalBytes * 100))

协程startCSSCoverage选项:Dict[KTVT] = None**kwargs ) →无[来源]

开始 CSS 覆盖测量。

可用的选项是:

  • resetOnNavigation(bool): 是否重置每次导航的覆盖范围。默认为True.

协程startJSCoverage选项:Dict[KTVT] = None**kwargs ) →无[来源]

开始 JS 覆盖测量。

可用的选项是:

  • resetOnNavigation(bool): 是否重置每次导航的覆盖范围。默认为True.
  • reportAnonymousScript(bool): 页面生成的匿名脚本是否应该被报告。默认为False.

笔记

匿名脚本是那些没有关联 url 的脚本。这些是使用eval . 如果设置为 ,匿名脚本将作为 它们的 url。new FunctionreportAnonymousScriptTrue__pyppeteer_evaluation_script__

协程stopCSSCoverage( ) → 列表[T][来源]

停止 CSS 覆盖测量并获得结果。

返回所有非匿名脚本的覆盖率报告列表。每份报告包括:

  • url(str):样式表 url。
  • text(str):样式表内容。
  • ranges(List[Dict]):已执行的样式表范围。范围已排序且不重叠。
    • start(int): 文本中的起始偏移量,包括在内。
    • end(int): 文本中的结束偏移量,独占。

笔记

CSS 覆盖范围不包括没有 sourceURL 的动态注入样式标签(但目前包括……待修复)。

协程stopJSCoverage( ) → 列表[T][来源]

停止 JS 覆盖测量并获得结果。

返回所有脚本的覆盖率报告列表。每份报告包括:

  • url(str): 脚本 url。
  • text(str):脚本内容。
  • ranges(List[Dict]):已执行的脚本范围。范围已排序且不重叠。
    • start(int): 文本中的起始偏移量,包括在内。
    • end(int): 文本中的结束偏移量,独占。

笔记

默认情况下,JavaScript 覆盖范围不包括匿名脚本。但是,会报告带有 sourceURL 的脚本。

22.调试

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

例子:

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()

23.补充

puppeteer JavaScript(无头)chrome/chromium 浏览器自动化库的非官方 Python 端口 。

  • 免费软件:MIT 许可证(包括在 Apache 2.0 许可证下分发的作品)
  • 文档: https: //miyakogi.github.io/pyppeteer

安装

Pyppeteer 需要 python 3.6+。(实验支持python 3.5)

从 PyPI 通过 pip 安装:

python3 -m pip install pyppeteer

或者从github安装最新版本:

python3 -m pip install -U git+https://github.com/miyakogi/pyppeteer.git@dev

用法

注意:当您第一次运行 pyppeteer 时,它会下载最新版本的 Chromium(~100MB)。如果您不喜欢这种行为,请pyppeteer-install在运行使用 pyppeteer 的脚本之前运行命令。

示例:打开网页并截取屏幕截图。

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto('http://example.com')
    await page.screenshot({'path': 'example.png'})
    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

示例:评估页面上的脚本。

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto('http://example.com')
    await page.screenshot({'path': 'example.png'})

    dimensions = await page.evaluate('''() => {
        return {
            width: document.documentElement.clientWidth,
            height: document.documentElement.clientHeight,
            deviceScaleFactor: window.devicePixelRatio,
        }
    }''')

    print(dimensions)
    # >>> {'width': 800, 'height': 600, 'deviceScaleFactor': 1}
    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

Pyppeteer 具有与 puppeteer 几乎相同的 API。文档中列出了更多 API 。

Puppeteer 的文档 和故障排除对 pyppeteer 用户也很有用。

puppeteer 和 pyppeteer 之间的区别

Pyppeteer 是要和 puppeteer 一样相似,但是 python 和 JavaScript 之间的一些差异使它变得困难。

这些是 puppeteer 和 pyppeteer 之间的区别。

选项的关键字参数

Puppeteer 使用对象(python 中的字典)将选项传递给函数/方法。Pyppeteer 接受选项的字典和关键字参数。

字典样式选项(类似于木偶操纵者):

browser = await launch({'headless': True})

关键字参数样式选项(更像 pythonic,不是吗?):

browser = await launch(headless=True)

元素选择器方法名称 ( $-> querySelector

在 python 中,$不能用于方法名。所以 pyppeteer 使用Page.querySelector()//而不是 // 。Pyppeteer 也有这些方法的简写,, , 和。Page.querySelectorAll()Page.xpath()Page.$()Page.$$()Page.$x()Page.J()Page.JJ()Page.Jx()

Page.evaluate() _Page.querySelectorEval()

Puppeteer 的版本evaluate()采用 JavaScript 原始函数或 JavaScript 表达式字符串,但 pyppeteer 采用 JavaScript 字符串。JavaScript 字符串可以是函数或表达式。Pyppeteer 尝试自动检测字符串是函数还是表达式,但有时会失败。如果将表达式字符串视为函数并引发错误,请添加force_expr=True选项,这会强制 pyppeteer 将字符串视为表达式。

获取页面内容的示例:

content = await page.evaluate('document.body.textContent', force_expr=True)

获取元素内部文本的示例:

element = await page.querySelector('h1')
title = await page.evaluate('(element) => element.textContent', element)

未来计划

  1. 赶上puppeteer的发展
    • 不打算添加 puppeteer 没有的原始 API

学分

这个包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。

内容

  • API参考
    • 命令
    • 环境变量
    • 启动器
    • 浏览器类
    • BrowserContext 类
    • 页面类
    • 工人阶级
    • 键盘类
    • 鼠标类
    • 跟踪类
    • 对话框类
    • ConsoleMessage 类
    • 帧类
    • 执行上下文类
    • JSHandle 类
    • 元素句柄类
    • 请求类
    • 反应等级
    • 目标班级
    • CDPSession类
    • 覆盖等级
    • 调试
  • 历史
    • 版本 0.0.25 (2018-09-27)
    • 版本 0.0.24 (2018-09-12)
    • 版本 0.0.23 (2018-09-10)
    • 版本 0.0.22 (2018-09-06)
    • 版本 0.0.21 (2018-08-21)
    • 版本 0.0.20 (2018-08-11)
    • 版本 0.0.19 (2018-07-05)
    • 版本 0.0.18 (2018-07-04)
    • 版本 0.0.17 (2018-04-02)
    • 版本 0.0.16 (2018-03-23)
    • 版本 0.0.15 (2018-03-22)
    • 版本 0.0.14 (2018-03-14)
    • 版本 0.0.13 (2018-03-10)
    • 版本 0.0.12 (2018-03-01)
    • 版本 0.0.11 (2018-03-01)
    • 版本 0.0.10 (2018-02-27)

你可能感兴趣的:(python,pyppeteer)