A modern crawling library built completely from Python
Project description
Crawlier — Alpha v0.0.0.1
A compact, friendly README for the Crawlier project (PansiluBot / MethmiBot).
What is Crawlier?
Crawlier is a Python web crawler that supports both a desktop mode (PansiluBot) and a mobile mode (MethmiBot). It focuses on practical, configurable crawling with useful data extraction features such as metadata, links, forms, images, files, technology detection, and optional CAPTCHA integration.
Features
- Multi-threaded crawling
- Configurable crawl depth and per-request delay
- Optional respect for
robots.txt(toggleable) - Keyword, metadata, images, videos, forms, files and social link extraction
- Technology detection and basic SEO analysis
- Outputs to JSON, CSV and an SQLite database
- Optional CAPTCHA solver integration (requires external service)
- Live logging support (suitable for UIs like Gradio)
Quick Install
Clone the repo and install dependencies:
git clone https://github.com/yourusername/crawlier.git
cd crawlier
pip install -r requirements.txt
Run tests (optional):
python -m unittest discover tests
Note: Python 3.10+ recommended.
CLI Usage
Run a basic crawl:
python -m crawlier -d example.com -m pc
Deep crawl (mobile UA, many threads):
python -m crawlier -d example.com -m mobile -t 20 --delay 0.5 --depth 5
Ignore robots.txt (only if you have permission):
python -m crawlier -d example.com -m pc --no-robots
CLI options summary:
-d, --domain: Target domain to crawl (required)-m, --mode: Crawler mode (mobile/pc), default:pc-t, --threads: Max concurrent threads (default: 10)--delay: Delay between requests in seconds (default: 1.0)--depth: Maximum crawl depth (default: 3)--no-robots: Ignorerobots.txtrules--captcha-key: API key for CAPTCHA solving service-o, --output: Output file (default:crawl_results.json)--db: SQLite database file (default:crawl_data.db)
Python API (programmatic)
Use run_crawl() for live logs (generator style):
from crawlier import run_crawl
for log in run_crawl("https://example.com", mode="pc", max_threads=5, delay=1, max_depth=2):
print(log)
Use the Crawlier class directly for fine-grained control:
from crawlier import Crawlier
crawler = Crawlier(
target_domain="example.com",
mode="pc",
max_threads=5,
delay=1,
max_depth=2,
respect_robots=True,
captcha_solver=None,
db_file="crawl_data.db"
)
crawler.start_crawl()
crawler.save_results("crawl_results.json")
crawler.close()
Output
Crawlier writes:
- JSON output (default
crawl_results.json) - CSV export of URL details
- An SQLite DB (default
crawl_data.db) - A human-friendly text report alongside JSON (if enabled)
Make sure the output/ directory exists before running, or provide a path that does.
Example: run_crawl() with mobile UA
for log in run_crawl(
url="https://example.com",
mode="mobile",
max_threads=10,
delay=0.5,
max_depth=3,
ignore_robots=False
):
print(log)
Changelog — Alpha v0.0.0.1
- Initial release
- Supports PC (PansiluBot) and Mobile (MethmiBot) modes
- Multi-threaded crawling with configurable depth/delay
- Robots.txt respect toggle
- Optional CAPTCHA solving (requires external service)
- Live logging for UI integration (Gradio)
Notes & Tips
- Use conservative
max_threads/delayvalues on large sites to avoid rate-limiting. - Respect site terms of service and robots.txt unless you have permission to ignore it.
- For CAPTCHA handling or browser-level JS challenges, integrate a headless browser or external solver.
If you'd like, I can also:
- add badges (build / python version)
- create a minimal
setup.py/pyproject.toml - extract
requirements.txtand validate imports
Enjoy!
Project details
Release history Release notifications | RSS feed
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 crawlier-0.0.2.tar.gz.
File metadata
- Download URL: crawlier-0.0.2.tar.gz
- Upload date:
- Size: 39.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
292271035c8ab92e148d0eacbe02a5358d2559d2fa7996c21d8e13c4342287c1
|
|
| MD5 |
f7c64ff57d073afd62e94633e3648fe1
|
|
| BLAKE2b-256 |
993be0a3602c7718b6e0b8cd16b585aee8f2206454b6bdbf51b5943278e3d73b
|
File details
Details for the file crawlier-0.0.2-py3-none-any.whl.
File metadata
- Download URL: crawlier-0.0.2-py3-none-any.whl
- Upload date:
- Size: 19.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca756e4dc3c209177dc3e49adc5667fcfae7ceacf36b298c42b2516dbea2d169
|
|
| MD5 |
8910c4d02a7ee2096575dab78fbcc6a9
|
|
| BLAKE2b-256 |
61f7289c424b122e82243305a291a678bf05cb2a93c4e44986a4a5b837798dcc
|