您现在的位置是:首页 > 编程 > 

[115]Playwright中上下文管理new

2025-07-27 15:41:25
[115]Playwright中上下文管理new 1. 什么是浏览器上下文?相当于打开了一个浏览器,通过browser.new_context() 创建一个新的浏览器上下文。它不会与其他浏览器上下文共享 cookies/缓存。使用browser.new_context() 创建context对象,context之间是相互隔离的,可以理解为轻量级的浏览器实例。 在浏览器中有很多的标签页,这种都是

[115]Playwright中上下文管理new

1. 什么是浏览器上下文?

相当于打开了一个浏览器,通过_context() 创建一个新的浏览器上下文。它不会与其他浏览器上下文共享 cookies/缓存。使用_context() 创建context对象,context之间是相互隔离的,可以理解为轻量级的浏览器实例。 在浏览器中有很多的标签页,这种都是通过浏览器上下文进行管理的,通过context = _context() 创建一个浏览器上下文,然后通过上下问,可以创建出很多个标签页来,如:page1 = _page()page2 = _page()

代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = launch(headless=False)
    context = _context()
    page1 = _page()
    page1.goto('')
    page1.wait_for_timeout(2000)
    page2 = _page()
    page2.goto('')
    page2.wait_for_timeout(2000)
    ()
    ()

2. 浏览器上下文的使用

2.1 新标签页

创建上下文管理器,打开百度网站,点击新闻页面,通过_page()获取新标签页的对象,最后分别打印出百度首页的标题和百度新闻页的标题

代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = launch(headless=False)
    context = _context()
    page = _page()
    page.goto("/")
    print(())
    with _page() as new_page_info:
        ('text=新闻')
    new_page = new_page_info.value
    # 等待页面加载到指定状态
    new_page.wait_for_load_state()
    print(new_())
    new_() # 关闭新打开的标签页 

# 百度一下,你就知道
# 百度新闻——海量中文资讯平台

同样的,使用这种方式获取新的标签页也是可以的

代码语言:javascript代码运行次数:0运行复制
with _popup() as new_page_info:
    ('text=新闻')
new_page = new_page_info.value # 获取新页面的上下文
new_page.wait_for_load_state()  # 等待页面加载完成

url=new_page.url # 获取新打开页面的url
new_() # 关闭新打开的标签页 
2.2 保存cookie到本地

方式一: 通过context上下文获取cookies,然后通过json模块写入文件

代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright
import json

with sync_playwright() as playwright:
    browser = launch(headless=False)
    context = _context()
    page = _page()
    page.goto("/")
    # 获取cookie信息
    cookies = ()
    with open("cookie.json", "w") as f:
        json.dump(cookies, f, indent=4)
    ()

方式二: 直接使用context.storage_state()指定下文件目录写入文件

代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = launch(headless=False)
    context = _context()
    page = _page()
    page.goto("/")
    context.storage_state(path="cookie.json")
    ()
    ()
2. 加载cookies

在创建上下文管理器的时候,可以通过加载本地之前保存的cookie来完成免登录的操作

代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = launch(headless=False)
    # 创建上下文时,加载本地cookie.json
    context = _context(storage_state="cookie.json")
    page = _page()
    page.goto("/")
    ()
    ()

同样的,还可以使用老办法进行获取cookie,然后通过上下文来加载cookie

代码语言:javascript代码运行次数:0运行复制
# 加载本地cookie信息
with open('cookies.json', 'r', encoding='utf-8') as f:
    cookies = json.load(f)
    # 通过上下文进行添加cookie
    context.add_cookies(cookies)
2.4 加载基础路径

对于单页面应用,可以通过创建上下文时候加载基础路径来进行页面跳转

代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = launch(headless=False)
    context = _context(base_url='/')
    page = _page()
    # 打开首页
    page.goto("/")
    print(())
    page.wait_for_timeout(2000)
    # 打开文章详情页
    page.goto('/#/article/7')
    print(())
    page.wait_for_timeout(2000)
    ()
    ()
2.5 获取网页源码

通过()获取网页完整源码

代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = launch(headless=False)
    context = _context()
    page = _page()
    page.goto("/")
    print(())
    ()
    ()

同时还有以下两种方式:

  • inner_html():获取元素的整个html源码内容
  • inner_text():获取元素的文本内容,会格式化进行显示
  • text_content():用来获取某个元素内所有文本内容,包含子元素内容,隐藏元素也能获取
代码语言:javascript代码运行次数:0运行复制
from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = launch(headless=False)
    context = _context()
    page = _page()
    page.goto(";)
    # 获取某个元素的HTML
    info = page.locator('.user-profile-head-info-r-c')
    print(info.inner_html())
    print(info.inner_text())
    print(_content())
    ()
    ()

参考:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-20,如有侵权请联系 cloudcommunity@tencent 删除browserplaywright百度管理浏览器

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1234224.html

相关标签:无
上传时间: 2025-07-26 12:33:51
留言与评论(共有 18 条评论)
本站网友 租售情报网
5分钟前 发表
browser = launch(headless=False) # 创建上下文时
本站网友 半岛城邦
8分钟前 发表
然后通过上下文来加载cookie代码语言:javascript代码运行次数:0运行复制# 加载本地cookie信息 with open('cookies.json'
本站网友 饿鬼道
18分钟前 发表
context之间是相互隔离的
本站网友 重庆小区
1分钟前 发表
browser = launch(headless=False) context = _context() page1 = _page() page1.goto('') page1.wait_for_timeout(2000) page2 = _page() page2.goto('') page2.wait_for_timeout(2000) () ()2. 浏览器上下文的使用2.1 新标签页创建上下文管理器
本站网友 怎样去除脸部皱纹
7分钟前 发表
原始发表:2024-12-20
本站网友 柴胡舒肝丸说明书
20分钟前 发表
原始发表:2024-12-20
本站网友 沈阳房屋出租网
13分钟前 发表
browser = launch(headless=False) # 创建上下文时
本站网友 茫然若失
13分钟前 发表
原始发表:2024-12-20
本站网友 张艾嘉儿子
8分钟前 发表
('text=新闻') new_page = new_page_info.value # 获取新页面的上下文 new_page.wait_for_load_state() # 等待页面加载完成 url=new_page.url # 获取新打开页面的url new_() # 关闭新打开的标签页 2.2 保存cookie到本地方式一: 通过context上下文获取cookies
本站网友 海狗鞭
18分钟前 发表
加载本地cookie.json context = _context(storage_state="cookie.json") page = _page() page.goto("/") () ()同样的
本站网友 福州一对一辅导
11分钟前 发表
原始发表:2024-12-20
本站网友 双环醇
26分钟前 发表
在浏览器中有很多的标签页
本站网友 河南大学民生学院教务网
1分钟前 发表
在浏览器中有很多的标签页
本站网友 containers
17分钟前 发表
最后分别打印出百度首页的标题和百度新闻页的标题代码语言:javascript代码运行次数:0运行复制from playwright.sync_api import sync_playwright with sync_playwright() as playwright
本站网友 仙人掌的功效与作用
4分钟前 发表
分享自作者个人站点/博客
本站网友 泰安租房
15分钟前 发表
还可以使用老办法进行获取cookie
本站网友 binggou
19分钟前 发表
browser = launch(headless=False) context = _context() page = _page() page.goto("/") print(()) () ()同时还有以下两种方式:inner_html():获取元素的整个html源码内容inner_text():获取元素的文本内容