Skip to main content

Crawlerflow

PyPI version Python versions License Downloads Wheel Documentation

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.

📖 Read the documentation

Installation

pip install crawlerflow

Include browser support to run Pydoll-backed workflows:

pip install "crawlerflow[browser]"

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.2.0.tar.gz (71.5 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.2.0-py3-none-any.whl (54.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for crawlerflow-0.2.0.tar.gz
Algorithm Hash digest
SHA256 30f5027d7a4e244c932f04cbb6eefd6a59d1dbcfabd11a9e252f2861ea740ed0
MD5 2e1b93089b138516910cd74703e35129
BLAKE2b-256 8dde19c919f4463be1a85b293ec8535a57ba6c2be63f971baff30c68b8550bb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for crawlerflow-0.2.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.2.0-py3-none-any.whl.

File metadata

  • Download URL: crawlerflow-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 54.5 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0cea110d56118f220dcb55eb24641f9a256aae85cd5daf0ab7656a32ad7187d9
MD5 908a113959337ce56f959e9a9635ce09
BLAKE2b-256 fe07557b131ea35079b08d55a74b82db30d307511a35560ab04d64e1987939a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for crawlerflow-0.2.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

This release

0.2.0 This release

2 files

0.1.0

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