html-docs-crawler
A Scrapy-based universal documentation crawler that converts HTML documentation sites to Markdown format, with automatic internal link rewriting to local .md relative paths. Supports multiple converter engines (markitdown / html2text), path whitelist filtering, and automatic media file download.
Parameters
start_urls: Starting URLs (comma-separated)allowed_domains: Allowed domains (comma-separated)deny_patterns: Regex deny patterns (comma-separated)allow_paths: Allowed path prefixes (comma-separated); only URLs starting with these prefixes will be processedbody_selector: CSS selector for main HTML content (default:"main, article, .content, .document, .body, body")output_dir: Output directory (default:"~/.config/doc_crawler/_docs/{domain_name}", where{domain_name}is extracted fromstart_urls)converter_engine: Converter engine (default:"markitdown", optional:"html2text")single_page: Single-page mode (default:"false", set to"true"to crawl a single page without following links)
Install via UV
uv tool install html-docs-crawler
After installation, you can use the doc_crawler command from any directory.
Usage Examples
# Crawl AKShare documentation
doc_crawler --start-urls "https://akshare.akfamily.xyz" \
--allowed-domains "akshare.akfamily.xyz" \
--deny-patterns "/_sources/" \
--body-selector "main, article, .content, .document, .body" \
--output-dir "_docs/akshare_markdown"
Single-page mode
doc_crawler --start-urls "https://build123d.readthedocs.io/en/stable/examples_1.html" \
--single-page true \
--body-selector ".wy-nav-content" \
--output-dir "single_page_output"
Path whitelist filtering
doc_crawler --start-urls "https://opencode.ai/docs/zh-cn/" \
--allow-paths "/docs/zh-cn/" \
--body-selector "main, article, .content" \
--output-dir "_docs/opencode_docs_zh_cn"
Crawl with html2text engine
doc_crawler --start-urls "https://akshare.akfamily.xyz/" \
--allowed-domains "akshare.akfamily.xyz" \
--deny-patterns "/_sources/" \
--body-selector "main, article, .content, .document, .body" \
--converter-engine "html2text" \
--output-dir "_docs/akshare_markdown_html2text"
More examples
# Crawl build123d docs
doc_crawler --start-urls "https://build123d.readthedocs.io/en/stable/" \
--deny-patterns "/_sources/,/latest/" \
--body-selector ".wy-nav-content" \
--output-dir "_docs/build123d"
# Crawl Docusaurus docs
doc_crawler --start-urls "https://docusaurus.io/docs" \
--allow-paths "/docs" \
--body-selector ".col.docItemCol_n6xZ" \
--output-dir "_docs/docusaurus"
# Crawl uv documentation
doc_crawler --start-urls "https://docs.astral.sh/uv/" \
--body-selector ".md-content" \
--output-dir "_docs/uv"
Metadata
Release files for html_docs_crawler 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| html_docs_crawler-0.2.0.tar.gz | 20.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| html_docs_crawler-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.6 kB
Release files / html_docs_crawler-0.2.0.tar.gz
| Download URL | html_docs_crawler-0.2.0.tar.gz |
|---|---|
| Size | 20.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
173491a586bad46b346a1a58d77ca94d4d062af989e224fe2c277aede20f9044
|
|
BLAKE2b-256 checksum How to use checksums |
69843d044d5d9a4402b953a9161de0a2c4ef9274806b4a24cc522b9c6d3c9479
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / html_docs_crawler-0.2.0-py3-none-any.whl
| Download URL | html_docs_crawler-0.2.0-py3-none-any.whl |
|---|---|
| Size | 23.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d0fdfec7eb304a37b665ca72fb55f9ee534792b97112b5369b8fb6f43efec5c
|
|
BLAKE2b-256 checksum How to use checksums |
5265fddf6ac35a49ce41dc07579799c188a18d5b141b8aa87cd535bd52fbd490
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|