This workflow extracts all species profiles and all available criteria from the public Citree website via its internal AJAX endpoints.
The extraction currently uses:
AJAX/ArtSearch.php with an empty search term to enumerate all available species profiles and Citree IDsAJAX/getSteckbrief.php to fetch the detailed criteria tables for each profileThe resulting files are written to data/derived/species:
citree_species_criteria.csvcitree_species_criteria.jsonScript entry point:
scripts/extract_citree_species_catalog.pyReusable parser and HTTP logic:
bluegreencity_ki/io/citree_species_catalog.pyThe CSV contains one row per Citree profile and one column per extracted criterion.
Metadata columns:
art_idcitree_namedeutscher_namebotanischer_namesortesource_urlCriteria columns include, among others:
The extractor also keeps all additional criteria that appear in the Citree detail tables.
Citree uses inconsistent label spellings in some places, for example around umlauts or separators.
The extractor normalizes known variants to stable output columns, for example:
Krankheiten/Schädlinge → Krankheiten / SchädlingeKronendurchlaessigkeit → KronendurchlässigkeitGruendigkeit → GründigkeitUnknown labels are preserved as they appear after whitespace normalization.
Run from the project root:
python scripts/extract_citree_species_catalog.py
Optional test run:
python scripts/extract_citree_species_catalog.py --limit 10 --delay-seconds 0
Flat table for downstream joins, manual inspection, and import into other tools.
The JSON file stores: