🚀 Pydoll: Async Web Automation in Python!
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:
- Browser interface: pydoll/browser/base.py
- Page interface: pydoll/browser/page.py
- WebElement interface: pydoll/element.py
- Chrome options: Chromium Command Line Switches
🎉 Start Now!
Feel free to use, open issues and contributing!
Metadata
Release files for pydoll-python 1.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pydoll_python-1.2.3.tar.gz | 36.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pydoll_python-1.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 82.8 kB
Release files / pydoll_python-1.2.3.tar.gz
| Download URL | pydoll_python-1.2.3.tar.gz |
|---|---|
| Size | 36.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66e258d6ce39cbbfcf76097d8f1fc90602adfc3acbff2a612ede75c7d3351db7
|
|
BLAKE2b-256 checksum How to use checksums |
decf84768f04a0e314aa76dce7caf9019bd90845e31ee1dcd3c54cd703df30ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.10.16 Linux/6.8.0-1021-azure
|
Release files / pydoll_python-1.2.3-py3-none-any.whl
| Download URL | pydoll_python-1.2.3-py3-none-any.whl |
|---|---|
| Size | 45.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
adebcfa76c582faff7dd1b4e88811a88e8d011cc0763525771e9e1e6df44623f
|
|
BLAKE2b-256 checksum How to use checksums |
612c390a0b3b68142e2532fe0058483d888d577072f1d2dd02385a6ace4e5cb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.10.16 Linux/6.8.0-1021-azure
|