如何保持浏览器运行
你只需要使用
autoClose
旗子,这是
docs
:
autoclose(bool):脚本时自动关闭浏览器进程
完整的。默认为true。
在这种情况下,你
试验01.py
如下所示:
import asyncio
from pyppeteer import launch, connect
async def fetch():
browser = await launch(
headless=False,
args=['--no-sandbox'],
autoClose=False
)
print(f'Endpoint: {browser.wsEndpoint}')
await browser.disconnect()
loop = asyncio.get_event_loop()
loop.run_until_complete(fetch())
CDP会议
这里是:
import asyncio
import time
from pprint import pprint
from pyppeteer import launch, connect
from pyppeteer.browser import BrowserContext
async def fetch():
browser = await launch(
headless=False,
args=['--no-sandbox'],
autoClose=False
)
page = await browser.newPage()
cdp = await page.target.createCDPSession()
raw_context = await cdp.send('Target.createBrowserContext')
pprint(raw_context)
context = BrowserContext(browser, raw_context['browserContextId'])
new_page = await context.newPage()
await cdp.detach()
await browser.disconnect()
loop = asyncio.get_event_loop()
loop.run_until_complete(fetch())
灵感来自
Browser.createIncognitoBrowserContext
从
pyppeteer
本身。
注意,通过CDP创建额外的会话似乎不是一个好主意,因为
browser._contexts
不会被更新,并且会变得不一致。也有可能
Browser.createIncognitoBrowserContext
可能适合你的需要而不诉诸CDP