DrissionPage和pw混合编程
本示例演示了如何将 DrissionPage 与 Playwright 结合使用,实现浏览器的混合自动化控制。
示例代码
- 混合编程,打开百度和bing
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 导入库
from DrissionPage import Chromium, ChromiumOptions
from playwright.sync_api import sync_playwright
# 创建配置对象
co = ChromiumOptions()
# 创建浏览器对象
browser = Chromium(co)
tab = browser.latest_tab
# 访问网页
tab.get("https://www.baidu.com/")
print(tab.title)
with sync_playwright() as p:
# 通过CDP连接到DrissionPage已启动的浏览器
pw_browser = p.chromium.connect_over_cdp(f"http://{browser.address}")
default_context = pw_browser.contexts[0]
if len(default_context.pages) > 0:
page = default_context.pages[0]
print("已连接到现有页面,标题:", page.title())
else:
page = default_context.new_page()
print("没有找到现有页面,已新建一个。")
# 后续操作
page.goto("https://www.bing.com")
print("页面已导航到 bing,当前标题:", page.title())
search_box = page.locator('#sb_form_q')
search_box.fill('DrissionPage docs')
search_box.press('Enter')
print("操作完成,请在手动打开的浏览器窗口中查看结果。")
print(browser.latest_tab.title)
input("按回车键继续...")
- 混合编程,上下文多开,实现代理ip动态切换
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 导入库
from DrissionPage import Chromium, ChromiumOptions
from playwright.sync_api import sync_playwright
# 创建配置对象
co = ChromiumOptions()
# 创建浏览器对象
browser = Chromium(co)
tab = browser.latest_tab
# 访问网页
tab.get("https://www.baidu.com")
print(tab.title)
context_config={
"proxy":{
"server": "socks5://222.59.173.105:44096", #"server": "socks5://proxy.example.com:1080"
# "username": "username",
# "password": "password"
},
"geolocation": {'latitude': 37.7749, 'longitude': -122.4194},
"permissions":['geolocation'] ,
"timezone_id":'America/New_York',
"locale":'en-US'
}
# with sync_playwright() as p:
p=sync_playwright().start()
# 通过CDP连接到DrissionPage已启动的浏览器
pw_browser = p.chromium.connect_over_cdp(f"http://{browser.address}")
default_context = pw_browser.new_context(**context_config )
page = default_context.new_page()
page.goto("https://www.webcheck.cc")
print(browser.latest_tab.title)
input("按回车键继续...")
说明
- 先用 DrissionPage 启动 Chromium 浏览器并访问百度。
- 再用 Playwright 通过 CDP 协议连接到同一个浏览器实例,实现对同一页面的进一步自动化操作。
- 示例中在 Bing 搜索框输入内容并回车,操作结果可在浏览器窗口中查看。