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()
    

探索更多

有关更多信息和更多方法,请查阅以下文件:

立即开始!

随意使用、提出问题并做出贡献吧!

项目数据

  • Stars: 1.2k
  • Watchers: 14
  • Forks: 78

Pydoll项目主要使用Python编写,占比100%。