如何在Python版Playwright中获取指定Cookie?
一、page.context.cookies()的URL参数用法
cookies()方法的URL参数用于过滤仅属于目标URL的Cookie,支持两种传参方式:
- 单个URL:比如要获取
https://google.com域名下的Cookie,写法为await page.context.cookies("https://google.com") - 多个URL:如果需要同时获取多个域名的Cookie,传入URL列表即可,示例:
await page.context.cookies(["https://google.com", "https://www.google.com"]) - 不传参数:默认返回当前浏览器上下文内的所有Cookie,也就是你当前代码的写法。
二、提取指定的Cookie
要筛选出名为siteCityCode且值为lim的Cookie,可通过遍历Cookie列表加条件判断实现。以下是修改后的完整代码:
import asyncio from playwright.async_api import async_playwright, Playwright async def geochange(playwright: Playwright): chromium = playwright.chromium browser = await chromium.launch() context = await browser.new_context() page = await context.new_page() await page.goto("https://google.com") # 注意:若目标页面无.popup__close元素,此行需根据实际页面调整 await page.locator(".popup__close").click() # 1. 传入URL参数,获取指定域名的Cookie(以google.com为例) geo_cookies = await page.context.cookies("https://google.com") # 2. 筛选符合条件的Cookie,未找到则返回None target_cookie = next( (cookie for cookie in geo_cookies if cookie["name"] == "siteCityCode" and cookie["value"] == "lim"), None ) print("目标Cookie:", target_cookie) await browser.close() async def main(): async with async_playwright() as playwright: await geochange(playwright) asyncio.run(main())
说明:
- 使用
next()配合生成器表达式,找到第一个符合条件的Cookie后立即停止遍历,提升效率 - 新增
await browser.close()释放浏览器资源 - 删除了原代码中未用到的
re和expect模块,精简代码
内容的提问来源于stack exchange,提问作者Andrey
相关产品推荐
相关产品推荐

