Skip to main content

Extract and process study data from WBH Online Campus HTML exports

Project description

WBH Campus Scraper

Extract and process study program data from WBH Online Campus HTML exports.

Quick Start

# 1. Export HTML from WBH Campus:
#    My Studies → Study Programs → [Your Program] (e.g. Computer Science)
#    → Save complete webpage as curriculum.html

# 2. Extract data (after installation)
wbh-scraper curriculum.html

# Or during development
python3 main.py curriculum.html

# With options
wbh-scraper curriculum.html --debug  # Enable debug mode
wbh-scraper curriculum.html -o my_data.json  # Custom output

What Gets Extracted?

A structured JSON file (data.json) containing:

  • Study program information (ID, number, name)
  • All modules with correct credit points
  • All elements (study booklets, exams, seminars)
  • All documents (PDF, EPUB, HTML, MP3, ZIP)
  • Semester assignments automatically calculated
  • Module hierarchy preserved

Features

  • OOP architecture with clean data models
  • Automatic CP extraction from exams
  • Document information for downloads
  • Debug mode for development
  • Statistics and analysis
  • Unit tests for quality assurance

Project Structure

wbh-campus-scraper/
├── scraper/            # Main package
│   ├── models/         # Data models
│   └── scraper.py      # Main class
├── tests/              # Unit tests
├── main.py            # CLI entry point
└── setup.py           # Package setup

How It Works

  1. Scraping: Extracts JSON data from HTML (WL.DEBUG.iCurriculumJSON)
  2. Parsing: Processes raw data into structured models
  3. Building: Creates complete study program hierarchy
  4. Export: Saves as clean JSON with all relationships

Python API

from scraper import WBHScraper

# Initialize scraper with HTML file
scraper = WBHScraper("curriculum.html")

# Access raw JSON directly (default)
raw_data = scraper.raw_json

# Or get transformed data
study_program = scraper.transform()
print(f"Program: {study_program.study_program.number} {study_program.study_program.name}")
print(f"Total modules: {len(study_program.modules)}")

# Save to file
scraper.save_to_file("output.json")

Installation

# Via PyPI (recommended)
pip install wbh-campus-scraper

# Via Homebrew
brew tap jonaskern-dev/tap
brew install wbh-campus-scraper

# Via pip from GitHub
pip install git+https://github.com/jonaskern-dev/wbh-campus-scraper.git

# For development
git clone https://github.com/jonaskern-dev/wbh-campus-scraper.git
cd wbh-campus-scraper
pip install -e .

# After installation, the command is available:
wbh-scraper --version

# Run tests
python -m unittest discover tests

License

MIT License

Author

Jonas Kern - info@jonaskern.de - https://jonaskern.dev


Version 0.5.2 - Hotfix

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

wbh_campus_scraper-0.5.2.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wbh_campus_scraper-0.5.2-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file wbh_campus_scraper-0.5.2.tar.gz.

File metadata

  • Download URL: wbh_campus_scraper-0.5.2.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for wbh_campus_scraper-0.5.2.tar.gz
Algorithm Hash digest
SHA256 18623280d8fb1b08ccd67fc2a4e24972253a7052dcf17985e04a4c86c5b1a61a
MD5 3a5a6f9ccc43f41b749769a7e2e685eb
BLAKE2b-256 5a73280a30f1d06ef2f04af1f75ff7885ee8f38ee10d4ebca288c186f523787c

See more details on using hashes here.

File details

Details for the file wbh_campus_scraper-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for wbh_campus_scraper-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 20c9ccddab8b4fc8840eef8cb48e81271147833e39ec312367d21f06a3f8f2fd
MD5 4d96dcafe4b739897f51e8de3add8a1e
BLAKE2b-256 bfb6066011ff118555eba5e6344c47d90fe253941baeb0c911e1a5a1a67f0a03

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page