You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python版Playwright中获取指定Cookie?

解决Playwright中cookies()参数填写与指定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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 16:10:08