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'....
要从
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())
在此代码中:
geo_cookies
变量保存由page.context.cookies()
检索到的所有cookie。next()
函数中使用生成器表达式来查找名为 siteCityCode
的 cookie。这种方法可确保您只获得您感兴趣的特定 cookie。