GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Crawlee for Python
  • Docs
  • API
  • Changelog
  • Blog
  • Next
  • 0.6

This view

  • Original page
  • New address

GeezerVison is showing crawlee.dev — Crawlee for Python · Fast, reliable Python web crawlers.

Skip to main content

Build reliable web scrapers. Fast.

Crawlee is a web scraping library for JavaScript and Python. It handles blocking, crawling, proxies, and browsers for you.

Crawlee PythonCrawlee Python
Get startedStar
Run on
import asyncio

from crawlee.crawlers import PlaywrightCrawler, PlaywrightCrawlingContext


async def main() -> None:
crawler = PlaywrightCrawler(
max_requests_per_crawl=10, # Limit the max requests per crawl.
headless=True, # Run in headless mode (set to False to see the browser).
browser_type='firefox', # Use Firefox browser.
)

# Define the default request handler, which will be called for every request.
@crawler.router.default_handler
async def request_handler(context: PlaywrightCrawlingContext) -> None:
context.log.info(f'Processing {context.request.url} ...')

# Extract data from the page using Playwright API.
data = {
'url': context.request.url,
'title': await context.page.title(),
}

# Push the extracted data to the default dataset.
await context.push_data(data)

# Extract all links on the page and enqueue them.
await context.enqueue_links()

# Run the crawler with the initial list of URLs.
await crawler.run(['https://crawlee.dev'])

# Export the entire dataset to a CSV file.
await crawler.export_data('results.csv')

# Or access the data directly.
data = await crawler.get_data()
crawler.log.info(f'Extracted data: {data.items}')


if __name__ == '__main__':
asyncio.run(main())
Or start with a template from our CLI
$uvx 'crawlee[cli]' create my-crawler
Built with 🤍 by Apify. Forever free and open-source.

What are the benefits?

Unblock websites by default

Crawlee crawls stealthily with zero configuration, but you can customize its behavior to overcome any protection. Real-world fingerprints included.

Learn more
fingerprint_generator = DefaultFingerprintGenerator(
header_options=HeaderGeneratorOptions(
browsers=['chromium', 'firefox'],
devices=['mobile'],
locales=['en-US']
),
)

Work with your favorite tools

Crawlee integrates BeautifulSoup, Cheerio, Puppeteer, Playwright, and other popular open-source tools. No need to learn new syntax.

Learn more
Work with your favorite toolsWork with your favorite tools

One API for headless and HTTP

Switch between HTTP and headless without big rewrites thanks to a shared API. Or even let Adaptive crawler decide if JS rendering is needed.

Learn more
crawler = AdaptivePlaywrightCrawler.with_parsel_static_parser()

@crawler.router.default_handler
async def request_handler(context: AdaptivePlaywrightCrawlingContext) -> None:
prices = await context.query_selector_all('span.price')
await context.enqueue_links()

What else is in Crawlee?

Auto scaling

Crawlers automatically adjust concurrency based on available system resources. Avoid memory errors in small containers and run faster in large ones.

Smart proxy rotation

Crawlee uses a pool of sessions represented by different proxies to maintain the proxy performance and keep IPs healthy. Blocked proxies are removed from the pool automatically.

Queue and storage

Pause and resume crawlers thanks to a persistent queue of URLs and storage for structured data.

Handy scraping utils

Sitemaps, infinite scroll, contact extraction, large asset blocking and many more utils included.

Routing & middleware

Keep your code clean and organized while managing complex crawls with a built-in router that streamlines the process.

Deploy to cloud

Crawlee, by Apify, works anywhere, but Apify offers the best experience. Easily turn your project into an Actor—a serverless micro-app with built-in infra, proxies, and storage.
Deploy to Apify
1
Install Apify SDK and Apify CLI.
2
Add
Actor.init()
to the beginning and
Actor.exit()
to the end of your code.
3
Use the Apify CLI to push the code to the Apify platform.

Crawlee helps you build scrapers faster

Zero setup required

Copy code example, install Crawlee and go. No CLI required, no complex file structure, no boilerplate.

Get started

Reasonable defaults

Unblocking, proxy rotation and other core features are already turned on. But also very configurable.

Learn more

Helpful community

Join our Discord community of over 10k developers and get fast answers to your web scraping questions.

Join Discord

Get started now!

Crawlee won’t fix broken selectors for you (yet), but it makes building and maintaining reliable crawlers faster and easier—so you can focus on what matters most.
Get started
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.