Skip to content

Latest commit

ย 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ•ท๏ธ Universal Web Scraper โ€” full-site crawler fleet

Crawl entire websites โ€” every page, every link โ€” and extract all text, metadata, links, buttons, forms and tables. Built for speed (parallel crawlers + concurrent fetching), resilience (watchdog + multi-method retry for blocked pages), and privacy (runs 100% on your machine; cloud upload is optional).

โœจ Features

  • ๐ŸŒ Full-site crawling โ€” follows every internal link up to unlimited depth
  • โšก Concurrent engine โ€” each crawler fetches multiple pages in parallel
  • ๐Ÿ”€ Parallel fleet โ€” spawn_workers.py auto-splits your site list across many crawlers
  • ๐Ÿ›ก๏ธ Anti-block retry ladder โ€” Chrome/Firefox/Safari browser impersonation โ†’ plain requests โ†’ text-proxy fallback
  • โฑ๏ธ Request watchdog โ€” hung connections are abandoned after 60s, never freezing a crawl
  • ๐Ÿงพ Everything extracted โ€” title, meta/OG tags, headings, paragraphs, tables, all links, buttons, forms
  • โ˜๏ธ Optional cloud sync โ€” point it at an rclone remote (Google Drive etc.), everything uploads automatically
  • ๐Ÿ” Failure recovery โ€” failed URLs are journaled and re-attempted by an aggressive retry pass
  • โ™ป๏ธ Resumable โ€” stop anytime (Ctrl+C or fleet.sh stop); restart picks up exactly where it stopped

๐Ÿš€ Quick start

pip3 install -r requirements.txt
pip3 install curl_cffi          # recommended: bypasses most bot-blockers

echo "https://example.com" > links.txt   # your target sites, one per line

python3 scraper.py                       # scrape everything

Results land in output/: one .json (full structured data) and one .txt (clean readable text) per site.

๐ŸŽฎ Fleet manager

For big lists, use the built-in manager:

chmod +x fleet.sh
./fleet.sh start    # launch main crawler + status loop + parallel workers
./fleet.sh status   # live snapshot: sites done, pages, pace, ETA
./fleet.sh bug      # scan & AUTO-FIX crashes, hangs, bad indexes
./fleet.sh stop     # stop safely, keep everything resumable

โš™๏ธ Configuration (environment variables)

Variable Default Purpose
SCRAPER_CONCURRENCY 1 Parallel page fetches per crawler (try 6)
SCRAPER_DELAY 0.7 Politeness delay between batches (seconds)
SCRAPER_LINKS links.txt Your URL list
SCRAPER_STAGING output Local staging folder
SCRAPER_REMOTE (unset) rclone remote name โ†’ enables cloud sync
SCRAPER_FOLDER scraped-data Folder path on the remote

๐Ÿ“‚ Output per website

  • <site>.json โ€” structured data: full text, headings, paragraphs, tables, all internal/external links, buttons, forms, metadata (Open Graph etc.)
  • <site>.txt โ€” clean human-readable text of every page
  • _REPORT.txt โ€” accounting: scraped / recovered / permanently unreachable

โ˜๏ธ Optional Google Drive sync (rclone)

rclone config                     # create a remote (e.g. named "mygdrive")
export SCRAPER_REMOTE=mygdrive
export SCRAPER_FOLDER=my-scraper-data

Now every finished site uploads automatically and local copies are cleaned. No rclone? Everything just stays in local output/.

โš ๏ธ Responsible use

  • Check each site's robots.txt and terms of service
  • Keep politeness delays enabled (REQUEST_DELAY)
  • Only scrape publicly available content

๐Ÿ“œ License

MIT โ€” do whatever you like, no warranty.

About

๐Ÿ•ท๏ธ Crawl entire websites โ€” parallel crawler fleet, anti-block retry ladder, watchdog, optional cloud sync. Give it links.txt, get every page's text & data.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages