Skip to main content

JumpingSpider

PyPI version CI License: MIT Python 3.13+

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: Uses HEAD requests (with automatic streaming GET fallback on 405/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 with textual for live crawl monitoring, filtering (All, Broken, Redirects, External, Assets/Docs), referrer inspection, and one-key report exports.

Installation

Requires Python 3.13+.

# 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 crawl
  • Ctrl+X: Stop crawl
  • 1–5: Filter table (1 All, 2 Broken, 3 Redirects, 4 External, 5 Assets/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)

Source distribution for JumpingSpider 0.2.1
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)

Table of built distributions (wheels) for JumpingSpider 0.2.1
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files Full provenance

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