LSF-Workflow

Diese Seite beschreibt den typischen Scraping-Prozess für LSF- Vorlesungsverzeichnisse.

Grundidee

Das LSF-Scraping ist in zwei klar getrennte Phasen aufgeteilt:

  1. In einem ersten Schritt werden die Basedaten eines Semesters geladen.
  2. Anschließend werden die URLs der Kurse aufgerufen und die Kursdaten gescrapet.

Wichtigste Einstiegsfunktionen

  • lsf_scrape_base_data(): erstellt die Veranstaltungsliste eines oder mehrerer Semester
  • lsf_scrape_veranstaltungsdetails(): lädt die Detailseiten zu vorhandenen Veranstaltungs-URLs und ergänzt die inhaltlichen Felder
  • lsf_scrape_all_semesters(): kombiniert beide Schritte zu einem kompletten Semesterlauf

Zwei Wege zu den Basisdaten

lsf_scrape_base_data() unterstützt zwei Modi:

  • method="path": rekursive Navigation durch die Baumstruktur des Vorlesungsverzeichnisses
  • method="search": Erhebung über die Suchmaske mit automatischer Pagination

Der Unterschied ist praktisch wichtig:

  • path folgt der fachlichen Struktur des Verzeichnisses und kann den Navigationspfad einer Veranstaltung mitschreiben
  • search ist direkter, liefert aber nicht dieselben Strukturinformationen

Ablauf im Detail

1. Semester auswählen

lsf_select_semester() navigiert innerhalb des LSF zum gewünschten Semester und öffnet das Vorlesungsverzeichnis.

2. Basisdaten einsammeln

Je nach Modus verwendet lsf_scrape_base_data() intern:

  • _scrape_via_path()
  • _scrape_via_search()

Beide Wege greifen auf gemeinsame Hilfsfunktionen zurück, damit erkannte Veranstaltungstabellen einheitlich verarbeitet werden:

  • _find_event_tables()
  • _parse_event_table()
  • lsf_normalize_url()

3. Detailseiten laden

lsf_scrape_veranstaltungsdetails() ruft jede Veranstaltungsseite einzeln ab. Im Normalfall passiert das zunächst über lsf_fetch_course_html().

Wenn eine LSF-Instanz Inhalte erst nach dem Aufklappen von Bereichen sichtbar macht, wird intern bei Bedarf auf lsf_fetch_course_html_expanded() umgeschaltet.

4. Inhalte aus Detailseiten parsen

Für die einzelnen Inhaltsblöcke gibt es getrennte Parser. Dazu gehören zum Beispiel:

  • lsf_extract_veranstaltungstitel()
  • lsf_extract_grunddaten()
  • lsf_extract_termine()
  • lsf_extract_dozenten()
  • lsf_extract_zugeordnete_personen()
  • lsf_extract_studiengaenge()
  • lsf_extract_module()
  • lsf_extract_einrichtung()
  • lsf_extract_weitere_angaben()

Wann nutze ich welche Funktion?

  • Nutze lsf_scrape_all_semesters(), wenn du den vollständigen Workflow pro Semester in einem Schritt ausführen willst.
  • Nutze lsf_scrape_base_data(), wenn du nur die Veranstaltungsliste oder die Basis-CSV erzeugen möchtest.
  • Nutze lsf_scrape_veranstaltungsdetails(), wenn du bereits eine Tabelle mit URL_Event hast und nur die Detaildaten ergänzen willst.
  • Nutze die extract_*-Funktionen, wenn du HTML-Strukturen gezielt testen, Parser weiterentwickeln oder nur einzelne Inhaltsbereiche auslesen möchtest.

Wichtige technische Eigenschaften

  • LSF wird überwiegend über HTML-Parsing verarbeitet und eignet sich daher gut für parserorientierte Tests.
  • Die Detailparser sind bewusst modular gehalten, damit einzelne Bereiche separat verbessert oder ausgetauscht werden können.
  • Resume-Logik und Zwischenspeicherung sind im Detail-Scraping bereits berücksichtigt.