跳到主要内容

DrissionPage和pw混合编程

本示例演示了如何将 DrissionPagePlaywright 结合使用,实现浏览器的混合自动化控制。

示例代码

  • 混合编程,打开百度和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 搜索框输入内容并回车,操作结果可在浏览器窗口中查看。

参考资料