Browser Mode

Handle JavaScript-rendered pages with browser automation.

When to Use

Use browser mode when:

  • Content is loaded via JavaScript

  • Page requires interaction (clicks, scrolls)

  • Site blocks non-browser requests

  • You need screenshots

Basic Usage

import easyscrape as es

# Enable browser mode
result = es.scrape(
    "https://example.com",
    browser=True
)

# Works just like regular scraping
title = result.css("h1")

Wait for Content

Wait for elements to appear:

result = es.scrape(
    "https://example.com",
    browser=True,
    wait_for="div.content-loaded"
)

JavaScript Execution

Run JavaScript on the page:

result = es.scrape(
    "https://example.com",
    browser=True,
    js_script="window.scrollTo(0, document.body.scrollHeight)"
)

Screenshots

Capture page screenshots:

result = es.scrape(
    "https://example.com",
    browser=True,
    screenshot="page.png"
)

Browser Options

result = es.scrape(
    "https://example.com",
    browser=True,
    headless=True,      # Run without visible window (default)
    timeout=60,         # Page load timeout
    wait_for="h1",      # CSS selector to wait for
    js_script=None,     # JavaScript to execute
    screenshot=None,    # Path to save screenshot
)

Async Browser

import asyncio
import easyscrape as es

async def main():
    result = await es.async_scrape(
        "https://example.com",
        browser=True
    )
    print(result.title())

asyncio.run(main())

Performance Tips

  1. Reuse sessions - Browser startup is slow. Batch requests.

  2. Disable images - Faster loads when you only need text.

  3. Use headless - Always use headless mode in production.

  4. Set timeouts - Prevent hangs on slow pages.

Limitations

  • Slower than HTTP requests (browser overhead)

  • Higher memory usage

  • Requires browser dependencies

For most sites, regular HTTP scraping is sufficient. Use browser mode only when needed.