Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Pydoll is a library for automating chromium-based browsers without a WebDriver, offering realistic interactions. It supports Python's asynchronous features, enhancing performance and enabling event capturing and simultaneous web scraping.

License

Notifications You must be signed in to change notification settings

Nabeelshar/pydoll

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ 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!

About

Pydoll is a library for automating chromium-based browsers without a WebDriver, offering realistic interactions. It supports Python's asynchronous features, enhancing performance and enabling event capturing and simultaneous web scraping.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%