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.
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
todayandnowdate variables - Nested
foreach,foreach_date,foreach_select, and declarativeifcontrol 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, anddoctorCLI 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30f5027d7a4e244c932f04cbb6eefd6a59d1dbcfabd11a9e252f2861ea740ed0
|
|
| MD5 |
2e1b93089b138516910cd74703e35129
|
|
| BLAKE2b-256 |
8dde19c919f4463be1a85b293ec8535a57ba6c2be63f971baff30c68b8550bb7
|
Provenance
The following attestation bundles were made for crawlerflow-0.2.0.tar.gz:
Publisher:
publish.yml on mehmetemineker/crawlerflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crawlerflow-0.2.0.tar.gz -
Subject digest:
30f5027d7a4e244c932f04cbb6eefd6a59d1dbcfabd11a9e252f2861ea740ed0 - Sigstore transparency entry: 2507629401
- Sigstore integration time:
-
Permalink:
mehmetemineker/crawlerflow@18b486f2349ab6922aa53b313c3aad2226591277 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/mehmetemineker
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@18b486f2349ab6922aa53b313c3aad2226591277 -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cea110d56118f220dcb55eb24641f9a256aae85cd5daf0ab7656a32ad7187d9
|
|
| MD5 |
908a113959337ce56f959e9a9635ce09
|
|
| BLAKE2b-256 |
fe07557b131ea35079b08d55a74b82db30d307511a35560ab04d64e1987939a8
|
Provenance
The following attestation bundles were made for crawlerflow-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on mehmetemineker/crawlerflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crawlerflow-0.2.0-py3-none-any.whl -
Subject digest:
0cea110d56118f220dcb55eb24641f9a256aae85cd5daf0ab7656a32ad7187d9 - Sigstore transparency entry: 2507629518
- Sigstore integration time:
-
Permalink:
mehmetemineker/crawlerflow@18b486f2349ab6922aa53b313c3aad2226591277 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/mehmetemineker
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@18b486f2349ab6922aa53b313c3aad2226591277 -
Trigger Event:
workflow_dispatch
-
Statement type: