启动器Launcher
启动方式:
- launch :启动链接一个新的浏览器
- content :链接已打开的浏览器,便于崩溃后重链
1 launch()
pyppeteer.launch(options: dict = None, **kwargs: Any) -> Browser
启动一个新的浏览器,返回 Browser 类。接受字典或键值对的关键字配置参数。
常用参数:
- headless(bool): 是否启用"无头模式"(隐藏浏览器界面),默认为 True 。
- executablePath(str): 指定 Chromium.exe 文件的路径(不使用内置的chromium)。
- slowMo(int|float):按指定的毫秒数减慢 pyppeteer 的速度。
- args(List[str]): 启动 Chromium 的参数。
- dumpio(bool):是否将浏览器进程标准输出和标准错误输入到 process.stdout 和 process.stderr中。默认是 False。
- userDataDir(str): 设置用户数据目录。
- devtools(bool): 是否为每个选项卡自动打开 DevTools 面板, 这个选项只有当 headless 设置为 False的时候有效。
args—>启动chrome的参数:
https://peter.sh/experiments/chromium-command-line-switches/
launch常用参数配置:
kwargs = {
# 启用浏览器界面
'headless': False,
# 多开页面,解决卡死
'dumpio': True,
# 设置浏览器全屏
'args': ['--start-maximized',
# 取消沙盒模式,沙盒模式下权限太小
'--no-sandbox',
# 设置浏览器界面大小
'--window-size=1366,768',
# 关闭受控制提示:比如,Chrome正在受到自动测试软件的控制...
'--disable-infobars',
# 允许跨域
'--disable-web-security',
# 使用代理
'--proxy-server=127.0.0.1:80',
# 不走代理的链接
'--proxy-bypass-list=*',
# 忽略证书错误
'--ignore-certificate-errors',
# log 等级设置,如果出现一大堆warning,可以不使用默认的日志等级
'--log-level=3',
# 设置ua
'--user-agent=Mozilla/5.0'
],
'userDataDir': r'D:\Temporary',
# 用户数据保存目录,这个最好指定一个,
# 如果不指定,Chrome会自动创建一个临时目录使用,在退出浏览器时自动删除,
# 在删除的时候可能会删除失败(不知道为什么出现权限问题,我用Windows)导致浏览器退出失败
# 删除失败时出现报错:OSError: Unable to remove Temporary User Data
# 或者Chrome进程没有退出,cpu狂飙到99%
}
2 content()
pyppeteer.connect(options: dict = None, **kwargs: Any) -> Browser
链接已打开的浏览器,返回 Browser 类。接受字典或键值对的关键字配置参数。
参数:
- browserWSEndpoint(str):要连接的浏览器 websocket 端点。(必填)
- ignoreHTTPSErrors(bool):是否忽略 HTTPS 错误。默认为 False。
- slowMo(int | float):按指定的毫秒数减慢pyppeteer的速度。
- logLevel(int | str):用于打印日志的日志级别。默认值与根记录器相同。
- loop(asyncio.AbstractEventLoop):事件循环(实验)。
browserWSEndpoint 的值获取:Browser.wsEndpoint
例子:
import asyncio
import pyppeteer
async def main():
browser = await pyppeteer.launch({'headless': False})
page = await browser.newPage()
await page.setViewport({'width': 1366, 'height': 768})
await page.goto('https://www.baidu.com')
ws = browser.wsEndpoint
print(ws)
await browser.disconnect() # 断开链接
browser2 = await pyppeteer.connect({'browserWSEndpoint': ws})
await browser2.close()
asyncio.get_event_loop().run_until_complete(main())
浏览器Browser
常用属性和方法:
- process:返回浏览器进程,如果浏览器实例是由 connect 方法创建的则返回 null。
- browserContexts:返回一个包含所有打开的浏览器上下文的列表。在新创建的浏览器中,这将返回 [BrowserContext]的单个实例。
- wsEndpoint: 返回 websocket 端点 url,用于connect 方法重链。
- pages():获取所有可见的标签页。
- newPage():新建标签页。
- close():关闭 Chromium 及其所有页面。Browser 对象本身被认为是处理过的并不能再被使用。
- disconnect():断开 Pyppeteer 和浏览器的连接,但 Chromium 进程仍然在运行。在调用 disconnect 之后,Browser 对象本身被认为是处理过的并不能再被使用。
- createIncognitoBrowserContext():创建一个新的隐身浏览器上下文。这不会与其他浏览器上下文共享 cookie / 缓存。
- userAgent():返回浏览器原始的 user-agent。页面可以使用 page.setUserAgent 覆盖浏览器的 user-agent。
注:被 async 关键字修饰的方法是异步方法,调用的时候也必须 await 关键字修饰。
示例:
import asyncio
from pyppeteer import launch
async def main():
browser = await launch({'headless': False})
page = await browser.newPage()
await page.goto('https://www.baidu.com')
print(browser.process) # 属性不被 async 关键字修饰
print(browser.wsEndpoint)
print(browser.browserContexts)
print(await browser.userAgent())
print(await browser.pages())
print(await browser.version())
print(browser.targets()) # 这个方法在源码中不被 async 关键字修饰
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
BrowserContext
启动浏览器时,默认情况下使用单个 BrowserContext。
方法 browser.newPage() 在默认浏览器中创建页面背景。
Pyppeteer允许创建隐身浏览器(无痕模式)上下文。如下方法:
browser.createInnamitoBrowserContext()
隐身浏览器上下文不会将任何浏览器数据写入磁盘。
无痕模式:
import asyncio
from pyppeteer import launch
async def main():
# 创建浏览器实例
browser = await launch({'headless': False})
# 启动无痕模式
context = await browser.createIncognitoBrowserContext()
# 新建标签页
page = await context.newPage()
# 打开目标 url
await page.goto('https://www.baidu.com')
# 打印是否无痕模式
print(context.isIncognito())
# 关闭无痕模式
await context.close()
# 关闭浏览器
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
本文详细介绍了Pyppeteer库中的浏览器对象,包括如何启动浏览器,如launch和content方法,以及各种配置参数如headless、executablePath等。还提到了browser对象的各种方法,如newPage、close、createIncognitoBrowserContext等,并强调了async关键字修饰的异步方法的使用。此外,文章提及了无痕模式(隐身浏览器上下文)的创建和其不保存浏览器数据的特点。
296





