JumpingSpider
JumpingSpider (v0.2.1) is a concurrent web crawler and broken link/asset validator with multi-format reporting (.json, .csv, .md, .html) and an interactive Terminal User Interface (TUI).
Features
- Strict Path Boundary Crawling: Recursively crawls HTML pages under the starting URL path while preventing upward or parallel directory escapes.
- Referrer & Anchor Text Tracking: Records every source page (
found_on), HTML tag (<a>,<img>,<script>,<link>,<video>,<iframe>), and link/alt text for every discovered URL so you know exactly which file to update. - External & Sibling Link Validation: Validates links outside the crawl boundary without crawling into external sites.
- Smart
HEAD& Streaming Requests: UsesHEADrequests (with automatic streamingGETfallback on405/403) for documents (.pdf,.pptx,.xlsx,.mp4, etc.), static assets, and external links to avoid downloading large binary files into memory. - Redirect & Error Diagnostics: Captures full redirect chains (
301/302-> final URL) and categorizes failures (Timeout,SSLError,ConnectionError,HTTPError). - Multi-Format Reports: Export results to JSON, CSV, Markdown, or styled HTML.
- Interactive TUI (
--tui): Built withtextualfor live crawl monitoring, filtering (All,Broken,Redirects,External,Assets/Docs), referrer inspection, and one-key report exports.
Installation
Requires Python 3.13+.
From PyPI (Recommended)
# Install globally as an isolated CLI tool with uv
uv tool install JumpingSpider
# Or run directly without installing using uvx
uvx JumpingSpider https://example.com/docs/
# Or install with pip / pipx
pip install JumpingSpider
From Source (Development)
Requires uv:
git clone https://github.com/Hailstone-Labs/JumpingSpider.git
cd JumpingSpider
uv sync --all-groups
Usage
CLI Mode
# Basic crawl (outputs crawl_results.json and prints a terminal summary scorecard)
uv run JumpingSpider https://weather.ndc.nasa.gov/tempo/
# Export multiple report formats at once
uv run JumpingSpider https://weather.ndc.nasa.gov/tempo/ \
-o tempo_results.json \
-o tempo_broken.csv \
-o tempo_report.md \
-o tempo_report.html
# Export only broken links to CSV
uv run JumpingSpider https://weather.ndc.nasa.gov/tempo/ -o broken_links.csv --broken-only
# Customize concurrency, rate limit delay, and depth
uv run JumpingSpider https://example.com/docs/ -w 8 -d 0.1 --max-depth 3
# Only check internal links and skip page assets
uv run JumpingSpider https://example.com/docs/ --no-external --no-assets
CLI Options
| Option | Default | Description |
|---|---|---|
start_url |
— | Starting URL to crawl (strictly locked to paths under this directory). |
-o, --output <path> |
crawl_results.json |
Output file path (.json, .csv, .md, .html). Can be passed multiple times. |
-f, --format <fmt> |
Auto from extension | Explicit report format override (json, csv, md, html). |
--tui |
False |
Launch the interactive Terminal User Interface (TUI). |
--check-external / --no-external |
True |
Validate external and sibling links without crawling them. |
--check-assets / --no-assets |
True |
Validate page assets (<img>, <script>, <link>, <video>, <iframe>). |
-w, --workers <int> |
5 |
Number of concurrent worker threads. |
-d, --delay <float> |
0.2 |
Delay in seconds between HTTP requests. |
--timeout <float> |
10.0 |
HTTP request timeout in seconds. |
--max-depth <int> |
Unlimited | Maximum link depth to crawl for internal pages. |
--broken-only |
False |
Only include broken links in exported reports. |
-q, --quiet |
False |
Suppress live console progress and summary tables. |
Interactive TUI Mode
uv run JumpingSpider --tui https://weather.ndc.nasa.gov/tempo/
TUI Keyboard Shortcuts:
Ctrl+S: Start crawlCtrl+X: Stop crawl1–5: Filter table (1All,2Broken,3Redirects,4External,5Assets/Docs)e: Export all report formats (crawl_results.{json,csv,md,html})q: Quit
Development & Tests
# Run unit tests
uv run pytest -v
# Run Ruff linter
uv run ruff check .
Contributing
Contributions are welcome! Please read our Contributing Guide and Code of Conduct before submitting a pull request. For security issues, please refer to our Security Policy.
License
Distributed under the MIT License. See LICENSE for full details.
Metadata
Release files for JumpingSpider 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jumpingspider-0.2.1.tar.gz | 19.4 kB | With provenance | Details for jumpingspider-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jumpingspider-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for jumpingspider-0.2.1-py3-none-any.whl |
Total release size: 41.6 kB
Release files / jumpingspider-0.2.1.tar.gz
| Download URL | jumpingspider-0.2.1.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6ab0b36c1cc5cf5adece30aa6f8f83a42e9363f6a4c61565e25a1fa2ab372db4
|
|
BLAKE2b-256 checksum How to use checksums |
4adfbdfbf0da141e6af5f397394739471bab9ce150fe151c8e77c3ee7fb5f78d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logRelease files / jumpingspider-0.2.1-py3-none-any.whl
| Download URL | jumpingspider-0.2.1-py3-none-any.whl |
|---|---|
| Size | 22.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
580375b10e7c95f1191f3761a929d5d54e0051a2c1b18e0d71cde28c0a0ee224
|
|
BLAKE2b-256 checksum How to use checksums |
6976855fafba17929a43c420a69dad6512d5b7a543c084155e7312a09d3ec33b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logSecurity for JumpingSpider 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for jumpingspider-0.2.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.