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 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.4.0 - Release

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.4.0.tar.gz (19.1 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.4.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wbh_campus_scraper-0.4.0.tar.gz
  • Upload date:
  • Size: 19.1 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.4.0.tar.gz
Algorithm Hash digest
SHA256 3a3130716d96aa047b7ca786bbf55c43346dd2a61ba2aa7d212fe37297e7c597
MD5 f446032ad8d9b9d639abfc353bdb0c3d
BLAKE2b-256 22672e3e5ae818cf4105a88fddfc78760a511b6e60569be88030ba479785ffea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wbh_campus_scraper-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 849e0c8e97d53380de864525788dca00bd78ea6acdaf07a527cb72269a6108a9
MD5 eb12354cc18449538f6fbe74f2a54012
BLAKE2b-256 b4414c634ad64dfde73b1bca9a696e4db4f7e6cf97c1eef5d86979c5bc0230d9

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