如何在 Python 上的 Playwright 中获取特定 cookie?

问题描述 投票:0回答:1
import asyncio
import re

from playwright.async_api import async_playwright, Playwright, expect


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")
    await page.locator(".popup__close").click()
    geo_cookies = await page.context.cookies()
    print(geo_cookies)

我有代码块,我需要获取特定的cookie,但不知道我需要在await page.context.cookies()处的url中放入什么。

当我运行这个块时,我得到完整的cookie,但我只需要这部分的“lim”:

{'name': 'siteCityCode', 'value': 'lim'....
python cookies playwright-python
1个回答
0
投票

要从

page.context.cookies()
返回的 cookie 列表中获取特定 cookie,您可以根据名称过滤 cookie。由于您只需要名称为
siteCityCode
的 cookie,因此您可以使用简单的列表理解或循环来提取它。

这是您修改后的代码来实现此目的:

import asyncio
import re
from playwright.async_api import async_playwright, Playwright, expect

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")
    await page.locator(".popup__close").click()
    geo_cookies = await page.context.cookies()

    # Extract the specific cookie 'siteCityCode'
    site_city_code_cookie = next((cookie for cookie in geo_cookies if cookie['name'] == 'siteCityCode'), None)
    
    if site_city_code_cookie:
        print(site_city_code_cookie['value'])
    else:
        print("Cookie 'siteCityCode' not found")

    await browser.close()

async def main():
    async with async_playwright() as playwright:
        await geochange(playwright)

asyncio.run(main())

在此代码中:

  1. geo_cookies
    变量保存由
    page.context.cookies()
    检索到的所有cookie。
  2. 我们在
    next()
    函数中使用生成器表达式来查找名为
    siteCityCode
    的 cookie。
  3. 如果找到cookie,则打印其值;否则,打印一条消息,指示未找到 cookie。

这种方法可确保您只获得您感兴趣的特定 cookie。

© www.soinside.com 2019 - 2024. All rights reserved.