[115]Playwright中上下文管理new
[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()
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()
获取新标签页的对象,最后分别打印出百度首页的标题和百度新闻页的标题
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():用来获取某个元素内所有文本内容,包含子元素内容,隐藏元素也能获取
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组装电脑配置单推荐报价格
上传时间: 2025-07-26 12:33:51
下一篇:【day06】方法
推荐阅读
留言与评论(共有 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():获取元素的文本内容 |