Pydoll:无需WebDriver的Python异步Chromium自动化库
Pydoll:无需WebDriver的Python异步Chromium自动化库
Pydoll是一个创新的Python库,它正在重新定义Chromium浏览器自动化。与其他解决方案不同,Pydoll完全消除了对WebDriver的需求,提供了更流畅和可靠的自动化体验。
核心特性
- 无需WebDriver:告别WebDriver兼容性和配置难题。
- 原生验证码绕过:自然通过Cloudflare Turnstile和reCAPTCHA v3验证。 注意:要处理cloudflare验证码,您必须点击复选框。 只需找到包含iframe的div并使用.click()方法即可。 自动检测和点击即将推出!
- 异步性能:得益于原生异步编程,性能卓越。
- 真实交互:模拟人类行为进行交互。
- 高级事件系统:用于复杂和反应式自动化。
- 并发爬取:高效地同时抓取多个页面。
- 代理配置:支持包含身份验证的强大代理。
安装
pip install pydoll-python
快速上手
看看启动它有多简单——无需WebDriver配置!
import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
async def main():
# 无需任何额外的webdriver配置即可启动浏览器!
async with Chrome() as browser:
await browser.start()
page = await browser.get_page()
# 无需担心地浏览受验证码保护的站点
await page.go_to('https://example-with-cloudflare.com')
button = await page.find_element(By.CSS_SELECTOR, 'button')
await button.click()
asyncio.run(main())
核心组件
-
Browser Interface (浏览器接口)
用于全局浏览器控制的强大接口:
async def browser_examples(): async with Chrome() as browser: await browser.start() # 轻松控制多个页面 pages = [await browser.get_page() for _ in range(3)] # 使用简单的命令进行高级设置 await browser.set_window_maximized()
-
Page Interface (页面接口)
使用精确的操作控制单个页面:
async def page_examples(): page = await browser.get_page() # 即使在受保护的站点上也能平稳导航 await page.go_to('https://site-with-recaptcha.com') # 捕获完美的屏幕截图 await page.get_screenshot('/screenshots/evidence.png')
-
WebElement Interface (元素接口)
像真实用户一样与元素交互:
async def element_examples(): # 自然而精确的互动 input_field = await page.find_element(By.CSS_SELECTOR, 'input') await input_field.type_keys('Hello World') # 真实的打字体验! # 直观的链式操作 dropdown = await page.find_element(By.CSS_SELECTOR, 'select') await dropdown.select_option('value') # 真实的点击(带偏移) button = await page.find_element(By.CSS_SELECTOR, 'button') await button.click(x_offset=5, y_offset=10)
高级特性
-
Event System (事件系统)
用于智能自动化的强大事件系统:
from pydoll.events.page import PageEvents async def event_example(): await page.enable_page_events() # 实时响应事件! await page.on(PageEvents.PAGE_LOADED, lambda e: print('Page loaded successfully!'))
-
Concurrent Scraping (并发爬取)
以非凡的性能同时抓取多个页面:
async def concurrent_example(): pages = [await browser.get_page() for _ in range(10)] # 通过智能资源管理进行并行抓取 results = await asyncio.gather( *(scrape_page(page) for page in pages) ) # 只需声明scrape_page方法,即可看到神奇的效果!
-
Proxy Configuration (代理配置)
强大的代理支持,包括身份验证:
async def proxy_example(): options = Options() # 私有或公共代理,您选择! options.add_argument('--proxy-server=username:password@ip:port') async with Chrome(options=options) as browser: await browser.start()
探索更多
有关更多信息和更多方法,请查阅以下文件:
- Browser interface: pydoll/browser/base.py
- Page interface: pydoll/browser/page.py
- WebElement interface: pydoll/element.py
- Chrome options: Chromium Command Line Switches
立即开始!
随意使用、提出问题并做出贡献吧!
项目数据
- Stars: 1.2k
- Watchers: 14
- Forks: 78
Pydoll项目主要使用Python编写,占比100%。
- 原文作者:iamdev
- 原文链接:https://blog.iamdev.cn/post/2025/Pydoll%E6%97%A0%E9%9C%80WebDriver%E7%9A%84Python%E5%BC%82%E6%AD%A5Chromium%E8%87%AA%E5%8A%A8%E5%8C%96%E5%BA%93/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止转载 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。