Autonomous web crawler for capturing user journeys
Project description
UX Journey Scraper
Autonomous web crawler for capturing user journeys.
A powerful tool for UX designers, developers, and QA teams to autonomously capture complete user flows through websites.
๐ฏ What It Does
Core Features (v0.5.0)
- ๐ค Autonomous Crawling: Intelligently navigates websites without manual intervention
- ๐ฏ Smart Element Detection: Finds ALL clickables (buttons, links, onclick handlers, ARIA roles)
- ๐ธ Journey Capture: Records complete user flows with screenshots at each step
- ๐ฑ Multi-Platform: Crawls desktop, mobile, tablet, and native apps in a single run
- ๐ฒ Native App Testing: Android (UiAutomator2) and iOS (XCUITest) via Appium
- ๐ Auth Support: Handles login flows and session management
- ๐ Form Filling: Automatically fills checkout forms (test data only)
- ๐ต๏ธ Stealth Mode: Anti-bot detection with human-like behavior simulation
- ๐ SPA Support: Works with modern single-page applications
- ๐ก๏ธ Privacy-Aware: Automatically blurs PII in screenshots
Platform Support
| Platform | Type | Status | Notes |
|---|---|---|---|
| Web Desktop | web_desktop |
โ | Playwright / Chromium |
| Web Mobile | web_mobile |
โ | Playwright with mobile UA + viewport |
| Web Tablet | web_tablet |
โ | Playwright with tablet UA + viewport |
| Android Native | native_android |
โ | Appium UiAutomator2; requires [native] extras |
| iOS Native | native_ios |
โ | Appium XCUITest; macOS only; requires [native] extras |
| WebView wrapper | auto-detected | โ | Ionic/Capacitor/Cordova โ switches to DOM context |
| Flutter (semantics on) | auto-detected | โ | Accessibility tree available |
| Flutter (semantics off) | auto-detected | โ | Screenshot-only scroll mode |
๐ Installation
PyPI Installation (Recommended)
# Install latest version
pip install ux-journey-scraper
# With native Android/iOS app testing support
pip install 'ux-journey-scraper[native]'
Installation from Source
# Clone the repository
git clone https://github.com/resabh/ux-journey-scraper.git
cd ux-journey-scraper
# Install in development mode
pip install -e .
# With native app testing extras
pip install -e ".[native]"
Post-Installation
After installation, install Playwright browsers:
playwright install chromium
For native app testing, also install Appium drivers:
# Install Appium (once)
npm install -g appium
# Install platform drivers
appium driver install uiautomator2 # Android
appium driver install xcuitest # iOS (macOS only)
# Start Appium server
appium --port 4723
๐ Quick Start
Autonomous Crawl (v0.3.0)
# Create a configuration file (see scrape-config.example.yaml)
ux-journey crawl --config scrape-config.yaml --output-dir journey_output/
# The tool will:
# 1. Check robots.txt (asks for confirmation if needed)
# 2. Autonomously navigate through the site
# 3. Capture screenshots at each step
# 4. Record complete user journey
# 5. Save journey data as JSON + screenshots
Manual Recording (Deprecated)
# Manually record a journey (interactive mode)
ux-journey record \
--start-url https://example.com \
--output my-journey.json
# Note: Use 'crawl' for autonomous navigation
๐ก Use Cases
1. Competitor Analysis
Capture competitor websites to understand user flows and patterns.
ux-journey crawl --config competitor-config.yaml --output-dir competitor_journey/
2. User Flow Documentation
Document user flows with screenshots for design/QA teams.
ux-journey crawl --config mysite-config.yaml --output-dir user_flows/
3. Pre-Launch Testing
Capture staging sites before launch.
ux-journey crawl --config staging-config.yaml --output-dir staging_test/
4. QA Automation
Automated journey capture for regression testing.
ux-journey crawl --config qa-config.yaml --output-dir qa_snapshots/
๐ ๏ธ Features
Journey Recording
- โ Autonomous crawling with priority queue
- โ Multi-step journey capture
- โ Automatic screenshot on each navigation
- โ HTML structure extraction
- โ Form field detection and auto-fill
- โ CTA and button analysis
- โ Navigation element capture
- โ Session management and auth support
Accessibility
- โ WCAG 2.1 Level A/AA validation
- โ Color contrast analysis
- โ Keyboard navigation checks
- โ Screen reader compatibility
- โ ARIA attributes validation
Privacy & Security
- โ PII blur in screenshots (emails, credit cards, names)
- โ robots.txt respect (with user confirmation)
- โ Rate limiting
- โ No data collection or tracking
Reports
- โ Interactive HTML reports
- โ Annotated screenshots with issue markers
- โ JSON export for automation
- โ Journey flow visualization
- โ Issue summaries and scores
๐ CLI Reference
๐ฅ๏ธ Platform Support
| Platform | Type | Emulation |
|---|---|---|
| Desktop (1920ร1080) | web_desktop |
Chromium, Windows UA |
| Mobile iPhone 14 Pro (390ร844) | web_mobile |
Touch events, iPhone UA, 2ร DPR |
| Tablet iPad Air (820ร1180) | web_tablet |
Touch events, iPad UA, 2ร DPR |
| Native Android app | native_android |
Phase 2 (v0.5.0, requires Appium) |
| Native iOS app | native_ios |
Phase 2 (v0.5.0, requires Appium + Xcode) |
All web platform types are browser-based emulation via Playwright viewport + UA spoofing โ no real devices required.
Multi-Platform Crawling
Specify multiple platforms in your config to crawl all of them in one run:
platforms:
- type: web_desktop
viewport: { width: 1920, height: 1080 }
locale: "en-IN"
timezone_id: "Asia/Kolkata"
- type: web_mobile # iPhone 14 Pro
viewport: { width: 390, height: 844 }
locale: "en-IN"
timezone_id: "Asia/Kolkata"
- type: web_tablet # iPad Air
viewport: { width: 820, height: 1180 }
locale: "en-IN"
timezone_id: "Asia/Kolkata"
Output is organized per platform:
journey_output/
web_desktop/
journey.json
screenshots/
web_mobile/
journey.json
screenshots/
web_tablet/
journey.json
screenshots/
ux-journey record
Record a user journey interactively.
ux-journey record [OPTIONS]
Options:
--start-url TEXT Starting URL (required)
--output TEXT Output file path (default: journey.json)
--viewport TEXT Viewport size (default: 1920x1080)
--blur-pii Blur PII in screenshots (default: true)
--respect-robots Check robots.txt (default: true)
--headless Run in headless mode (default: false)
๐ง Python API
from ux_journey_scraper import JourneyRecorder, Journey
from ux_journey_scraper.config import ScrapeConfig
from ux_journey_scraper.core import AutonomousCrawler
# Option 1: Autonomous crawling with config
config = ScrapeConfig.load("scrape-config.yaml")
crawler = AutonomousCrawler(config=config, output_dir="journey_output/")
journey = await crawler.crawl()
# Option 2: Manual recording (deprecated)
recorder = JourneyRecorder(
start_url="https://example.com",
blur_pii=True,
respect_robots=True
)
journey = await recorder.record()
journey.save("my-journey.json")
# Load existing journey
journey = Journey.load("journey.json")
# Access journey data
for step in journey.steps:
print(f"Step {step.step_number}: {step.title}")
print(f" URL: {step.url}")
print(f" Screenshot: {step.screenshot_path}")
๐ Sample Journey Output
{
"start_url": "https://example.com",
"start_time": "2026-03-19T12:00:00Z",
"end_time": "2026-03-19T12:05:30Z",
"viewport": [1920, 1080],
"steps": [
{
"step_number": 1,
"url": "https://example.com",
"title": "Homepage",
"screenshot_path": "screenshots/step-001.png",
"html_snapshot": "...",
"page_data": {
"forms": [...],
"buttons": [...],
"links": [...]
}
},
...
]
}
๐ How It Works
-
Configuration
- YAML config defines seed URLs, auth, form fill settings
- Priority queue manages navigation strategy
-
Autonomous Crawling
- Launches stealth browser (anti-bot detection)
- Navigates autonomously using priority queue
- Finds ALL clickables (buttons, links, ARIA roles, onclick handlers)
- Handles login flows and session management
- Fills forms with test data (payment safeguards)
-
Capture
- Waits for page readiness (DOM stable, no spinners, lazy-load complete)
- Captures screenshot + HTML at each step
- Blurs PII automatically
- Records all page data (forms, buttons, links)
-
Output
- Saves journey JSON with all steps
- Screenshots folder with PII blurred
- Complete DOM snapshots for analysis
๐ฃ๏ธ Roadmap
v0.4.0 (Current) - Multi-Platform Web Crawling
- โ Autonomous crawling with priority queue
- โ Desktop web journey recording
- โ Mobile viewport emulation (iPhone 14 Pro)
- โ Tablet viewport emulation (iPad Air)
- โ Multi-platform crawl in a single run (per-platform output dirs)
- โ Smart element detection (4 strategies)
- โ Auth support and session management
- โ Form auto-fill with safeguards
- โ PII blur in screenshots
- โ robots.txt handling
- โ Stealth mode (anti-bot detection)
v0.5.0 (Next) - Native App Testing (Appium)
-
โฌ Native Android app crawling (UiAutomator2)
-
โฌ Native iOS app crawling (XCUITest, macOS only)
-
โฌ Appium session setup and element detection via accessibility tree
-
โฌ Integration with
platform_discovery.py(bundle ID / package name lookup)Requirements:
pip install Appium-Python-Client, Android SDK + ADB or Xcode + iOS Simulator
Future Enhancements
- โฌ Multi-page site mapping
- โฌ CAPTCHA handling improvements
- โฌ Visual regression detection
- โฌ Performance metrics capture
- โฌ CI/CD integration
Analysis Features โ Moved to BayMAAR
- UX guidelines analysis is now in the separate BayMAAR Analysis Engine (private)
- This package remains a pure journey capture tool
๐ค Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
๐ License
MIT License - see LICENSE file for details
๐ Related Projects
- ecommerce-ux-guidelines - 324+ research-backed UX guidelines
๐ Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with โค๏ธ for better user experiences
Project details
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 ux_journey_scraper-0.5.0.tar.gz.
File metadata
- Download URL: ux_journey_scraper-0.5.0.tar.gz
- Upload date:
- Size: 98.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3235edf1b92a104d554d30687b2ea270b9e023b069e25ad796a6af53f5d5615f
|
|
| MD5 |
935d524815f557dfa3eec6bff9bce6cd
|
|
| BLAKE2b-256 |
047c9bcfd88f849328bdcb9299362866eb1e7efaf1995c1a2b0e7a5166c50ba7
|
File details
Details for the file ux_journey_scraper-0.5.0-py3-none-any.whl.
File metadata
- Download URL: ux_journey_scraper-0.5.0-py3-none-any.whl
- Upload date:
- Size: 94.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36d9e52445f5a498fe96da6c1e93f491a15971f4bc42e729ac6ac2a35a9384dc
|
|
| MD5 |
2b9ebfccc0e365b8cefc2a8ce7619c8f
|
|
| BLAKE2b-256 |
76e71e19a7ee6cadd95fcc7788f915481467714d6bad5d40cb0e1a4a0658a107
|