Skip to main content

No project description provided

Project description

🚀 Pydoll: Async Web Automation in Python!


Alt text

Tests Ruff CI Release Total lines Files Comments GitHub issues GitHub closed issues GitHub bug issues GitHub enhancement issues

thalissonvs%2Fpydoll | Trendshift

Pydoll is an innovative Python library that's redefining Chromium browser automation! Unlike other solutions, Pydoll completely eliminates the need for webdrivers, providing a much more fluid and reliable automation experience.

⭐ Extraordinary Features

  • Zero Webdrivers! Say goodbye to webdriver compatibility and configuration headaches
  • Native Captcha Bypass! Naturally passes through Cloudflare Turnstile and reCAPTCHA v3 *
  • Performance thanks to native asynchronous programming
  • Realistic Interactions that simulate human behavior
  • Advanced Event System for complex and reactive automations

Note: for cloudflare captcha, you have to perform a click in the checkbox. Just find a div containing the iframe and use the .click() method. Automatic detection and click coming soon!

Table of Contents

🔥 Installation

pip install pydoll-python

⚡ Quick Start

See how simple it is to get started - no webdriver configuration needed!

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By

async def main():
    # Start the browser with no additional webdriver configuration!
    async with Chrome() as browser:
        await browser.start()
        page = await browser.get_page()
        
        # Navigate through captcha-protected sites without worry
        await page.go_to('https://example-with-cloudflare.com')
        button = await page.find_element(By.CSS_SELECTOR, 'button')
        await button.click()

asyncio.run(main())

🎯 Core Components

Browser Interface

Powerful interface for global browser control:

async def browser_examples():
    async with Chrome() as browser:
        await browser.start()
        # Control multiple pages with incredible ease
        pages = [await browser.get_page() for _ in range(3)]
        
        # Advanced settings with a simple command
        await browser.set_window_maximized()

Page Interface

Individual page control with surgical precision:

async def page_examples():
    page = await browser.get_page()
    
    # Smooth navigation, even on protected sites
    await page.go_to('https://site-with-recaptcha.com')
    
    # Capture perfect screenshots
    await page.get_screenshot('/screenshots/evidence.png')

WebElement Interface

Interact with elements like a real user:

async def element_examples():
    # Natural and precise interactions
    input_field = await page.find_element(By.CSS_SELECTOR, 'input')
    await input_field.type_keys('Hello World')  # Realistic typing!
    
    # Intuitive chained operations
    dropdown = await page.find_element(By.CSS_SELECTOR, 'select')
    await dropdown.select_option('value')

    # Realistic clicks with offset
    button = await page.find_element(By.CSS_SELECTOR, 'button')
    await button.click(x_offset=5, y_offset=10)

🚀 Advanced Features

Event System

Powerful event system for intelligent automation:

from pydoll.events.page import PageEvents

async def event_example():
    await page.enable_page_events()
    # React to events in real-time!
    await page.on(PageEvents.PAGE_LOADED, 
                  lambda e: print('Page loaded successfully!'))

Concurrent Scraping

Scrape multiple pages simultaneously with extraordinary performance:

async def concurrent_example():
    pages = [await browser.get_page() for _ in range(10)]
    # Parallel scraping with intelligent resource management
    results = await asyncio.gather(
        *(scrape_page(page) for page in pages)
    )
    # Just declare the scrape_page method and see the magic happens!

Proxy Configuration

Robust proxy support, including authentication:

async def proxy_example():
    options = Options()
    # Private or public proxies, you choose!
    options.add_argument('--proxy-server=username:password@ip:port')
    
    async with Chrome(options=options) as browser:
        await browser.start()

For exploring all available methods and additional features, check out:

🎉 Start Now!

Feel free to use, open issues and contributing!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydoll_python-1.2.4.tar.gz (36.9 kB view details)

Uploaded Source

Built Distribution

pydoll_python-1.2.4-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

File details

Details for the file pydoll_python-1.2.4.tar.gz.

File metadata

  • Download URL: pydoll_python-1.2.4.tar.gz
  • Upload date:
  • Size: 36.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.10.16 Linux/6.8.0-1021-azure

File hashes

Hashes for pydoll_python-1.2.4.tar.gz
Algorithm Hash digest
SHA256 a1d1ae556a4aa0fc6e3180049cd6a28ee789979bd339a91ceedb2c9677f39918
MD5 22dfd83da8c3903a671e9cb5f1339a88
BLAKE2b-256 798773bbb9c041818b0c76fede3e2f497313f8edd7302a12ce43b13a02691cf8

See more details on using hashes here.

File details

Details for the file pydoll_python-1.2.4-py3-none-any.whl.

File metadata

  • Download URL: pydoll_python-1.2.4-py3-none-any.whl
  • Upload date:
  • Size: 45.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.10.16 Linux/6.8.0-1021-azure

File hashes

Hashes for pydoll_python-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 07dfe711378f2373446f0bbe662db52cb515b69d4cbe5f47b2cd6816840ba3e4
MD5 f8d9577598b344b69add3470779fc24b
BLAKE2b-256 2e616b134bb5041e7db207ee5dabf0f4535b1d4a0809b77447b9664a54aea4fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page