Skip to main content

CrawlerFlow

CrawlerFlow is a declarative, YAML-based workflow engine for browser automation and web scraping. Workflows describe what should happen; adapters and steps decide how it happens.

Current foundation

  • Versioned YAML workflow loading and validation
  • Browser-independent adapter contract and a lazy-starting Pydoll implementation
  • Extensible step registry
  • Isolated plugin API with typed YAML settings, lifecycle hooks, steps, filters, and subscribers
  • Async workflow executor and event bus
  • Variable interpolation and a built-in expression engine
  • Per-run today and now date variables
  • Nested foreach, foreach_date, foreach_select, and declarative if control flow
  • Reusable parameterized workflow macros
  • Per-step retry and continue/fail error policies
  • JSON Lines workflow, step, retry, and request event logging
  • Built-in navigation, interaction, cookies, downloads, screenshots, and selective HTML output
  • run, validate, list-steps, list-plugins, and doctor CLI commands

Development

python -m pip install -e ".[dev]"
pytest
crawlerflow validate examples/basic.yaml
crawlerflow run examples/basic.yaml

Run multiple workflows sequentially by supplying more paths. Execution stops at the first failed workflow:

crawlerflow run examples/first-site.yaml examples/second-site.yaml

A directory argument discovers its directly contained .yaml and .yml files and runs them in alphabetical order:

crawlerflow run examples

Use asynchronous mode to run every supplied workflow in parallel. All workflows are allowed to finish; the command exits with code 1 if any workflow fails:

crawlerflow run --mode async examples/first-site.yaml examples/second-site.yaml

Directory discovery can also be combined with parallel execution:

crawlerflow run --mode async examples

Add --progress to display a live progress bar based on the total workflow count. The bar advances as each workflow succeeds or fails in both sequential and asynchronous modes:

crawlerflow run --mode async --progress examples

Use --concurrency (or -c) to limit how many workflows run at the same time in asynchronous mode. This avoids starting every HTTP client or browser session simultaneously:

crawlerflow run --mode async --concurrency 8 --progress examples

Omitting the option preserves unlimited parallel execution. --concurrency accepts positive integers and can only be used with --mode async.

Install browser support and select Pydoll in a workflow:

python -m pip install -e ".[browser,dev]"
browser:
  engine: pydoll
  headless: true

Browser-free workflows omit the browser section. Applications can also inject another BrowserAdapter into WorkflowRunner. See docs/http-requests.md for direct HTTP requests and shortened map URL coordinate resolution.

External extensions can register entry points under crawlerflow.plugins; workflows activate only the plugins they list. See docs/plugins.md and the installable examples/plugins/example package for the plugin contract, discovery command, and packaging example.

Download files

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

Source Distribution

crawlerflow-0.1.0.tar.gz (68.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crawlerflow-0.1.0-py3-none-any.whl (54.3 kB view details)

Uploaded Python 3

File details

Details for the file crawlerflow-0.1.0.tar.gz.

File metadata

  • Download URL: crawlerflow-0.1.0.tar.gz
  • Upload date:
  • Size: 68.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for crawlerflow-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2dbb3576d39a4fbfbddc78ce303d8f3e52b3e39e2cc8e1b76ed754b20c07063d
MD5 8bc99d7ce0c0d83a5bfad86af72edb4a
BLAKE2b-256 112bf02da01ab1699263b0e9f8d875c4fb0cd62d2d97bcfe5ed6e7dc5c04cd3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for crawlerflow-0.1.0.tar.gz:

Publisher: publish.yml on mehmetemineker/crawlerflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file crawlerflow-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: crawlerflow-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 54.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for crawlerflow-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eff650ffe2724bdf89c1e7446db2bf0ca87fa324e3bf3ad4210f5e97c9a4e702
MD5 374b7c57c0b1b18af64374f3a041080a
BLAKE2b-256 6ba9506d38b6c95833904fb2c4964e271558877d4bb16bbee6dc76fb9ce86167

See more details on using hashes here.

Provenance

The following attestation bundles were made for crawlerflow-0.1.0-py3-none-any.whl:

Publisher: publish.yml on mehmetemineker/crawlerflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page