Scripts for extracting and transforming credential, course, and competency data from New Jersey community college websites and PDF catalogs, and producing "BU" (bulk-upload) files formatted for Credential Engine's Credential Registry.
Each college has its own top-level folder, generally split into credentials/
(or credential/), courses/ (or course/), and noncredit/ subfolders
(sometimes further split by term/year, e.g. 2024-2025/, 2026/). A few
colleges also have a nested ed2go/ folder for that vendor's course catalog.
<college>/
├── credentials/ # credit credential (degree/certificate) pipeline
├── courses/ # credit course pipeline
└── noncredit/ # noncredit programs and courses, incl. ed2go/ subfolder
aggregate/ holds cross-college scripts that run after the per-college
pipelines to roll everything up (counts, combined credential BU output,
CSV-to-Excel consolidation).
Within each subfolder, scripts are numbered in the order they're meant to run. The exact steps vary a bit by college/source, but the general pattern is:
- Parse / get links — pull program or course URLs out of a saved catalog page (or hit a JSON API, e.g. Coursedog) to build a list of pages to fetch.
- Download — fetch each linked HTML page or PDF to disk.
- Parse — extract structured fields (name, description, credential type, competencies, etc.) from the downloaded HTML/PDF into CSV/JSON.
- Join / combine — merge multiple intermediate CSV/JSON files together.
- Produce BU — reshape the combined data into Credential Engine's bulk
upload column format, generating a
CTID(a public UUID identifier, not a secret) per row where one doesn't already exist.
Where a step has multiple numbered variants (e.g. 3ParseHTML2.py,
3ParseHTML3.py), those are iterations on the same step, kept for
reference — not all variants are meant to be run.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtSome scripts drive a real browser via Selenium for JavaScript-rendered
pages; those need a matching chromedriver, handled automatically by
webdriver_manager.
middlesex/credential/review/upload/OrgCredentialsAll.py calls the
Credential Engine Assistant Search API and expects an API token in the
environment:
export CE_ASSISTANT_API_TOKEN=your-token-hereThese scripts were written for one-off runs against a specific local folder layout and most of them (191 of 221) hardcode absolute Windows paths, e.g.:
file_path = r"C:\text\NJ\Atlantic Cape\credentials\Degrees and Certificates _ Atlantic Cape Community College.html"They are not portable as-is — running one on another machine (or even a different drive letter) requires editing its input/output paths first. This repo intentionally contains only the scripts, not the scraped HTML/PDF/image data they read from or write to, so treat each script as a reference implementation for its pipeline step rather than a run-anywhere tool.
Only .py files were pulled into this repo. The source folder also
contains the scraped HTML pages, downloaded PDFs, images, and generated
CSV/JSON/Excel outputs for every college — left out both for size and
because most of it is copyrighted or scraped third-party content.