启动器Launcher
启动方式:
1 launch()
pyppeteer.launch(options: dict = None, **kwargs: Any) -> Browser
启动一个新的浏览器,返回 Browser 类。接受字典或键值对的关键字配置参数。
常用参数:
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 的值获取: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
注:被 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())