Generierung einer statischen HTML-Version mit dem Python-Skript exportMediaWiki2Html.py

Aus DadAWeb
Wechseln zu: Navigation, Suche

Ursprünglich, d.h. bevor wir dann letztlich erfolgreich die statische Website des DadAWeb mit dem Programm HTTrack aus der dynamischen Mediawiki-Site generiert haben, haben wir das Python-Skript exportMediaWiki2Html.py zur Generierung der statischen HTML-Seiten des Wikis benutzt. Bei dieser Methode werden durch das Skript allerdings nur die eigentlichen Contentseiten des Wikis unter Ausklammerung der Diskussions- und Hilfsseiten als einzelne statische HTML-Seiten und ohne die übergeordnete Navigation generiert. Deshalb ist für die Generierung der statischen Version die Methode mit dem Programm HTTrack Website Copier besser geeignet.

Befehl zum Generieren der HTML-Version mit dem Skript exportMediaWiki2HTML

  1. XAMPP laden: Dort dann Apache und MySQL aktivieren
  2. In CMD-Eingabeaufforderung gehen und dort nacheinander folgende Befehle eingeben:
    1. in den Export-Skript-Ordner wechseln:
  cd C:\xampp\exporter\exportMediaWiki2HTML
    1. Virtuelle Umgebung aktivieren:
  .venv\Scripts\activate
    1. Das Skript mit dem folgenden Befehl starten:
  python exportMediaWiki2Html.py -l http://localhost/dadaweb/ -o C:\xampp\htdocs\dadaweb-test

Zweck

Mit dem Python-Skript exportMediaWiki2Html.py lässt sich aus einer MediaWiki-Installation eine statische HTML-Version erzeugen. Dabei werden sämtliche Wiki-Seiten als einzelne HTML-Dateien exportiert und alle eingebundenen Bilder lokal gespeichert.

Die erzeugte HTML-Version kann anschließend ohne PHP, MySQL oder MediaWiki auf jedem beliebigen Webserver oder auch direkt von einem Datenträger genutzt werden.

Diese Anleitung beschreibt den Einsatz unter Windows 11 mit einer lokal unter XAMPP betriebenen MediaWiki-Installation.

Voraussetzungen

Folgende Programme müssen installiert sein:

  • Windows 11
  • XAMPP
  • MediaWiki
  • Python 3.x
  • Git

Beispiel einer Verzeichnisstruktur

C:\
│
├── xampp
│   │
│   ├── htdocs
│   │   ├── dadaweb
│   │   │      ← MediaWiki
│   │   │
│   │   └── dadaweb-test
│   │          ← Zielverzeichnis des HTML-Exports
│   │
│   └── exporter
│       └── exportMediaWiki2HTML
│              ← Python-Skript

Schritt 1 – XAMPP starten

Vor jedem Export muss das Wiki über den lokalen Webserver erreichbar sein.

  • Dazu das XAMPP Control Panel starten.
  • Anschließend mindestens Apache starten.
  • Ist das Wiki nicht schreibgeschützt oder sollen Benutzerdaten verwendet werden, sollte zusätzlich MySQL gestartet werden.

Nach dem Start müssen die betreffenden Module grün hinterlegt sein.

Apache     Running
MySQL      Running

Schritt 2 – Funktion des Wikis prüfen

Vor dem Export im Browser prüfen, ob das Wiki erreichbar ist.

Beispielsweise: http://localhost/dadaweb/

Erst wenn das Wiki vollständig angezeigt wird, sollte der Export begonnen werden.

Schritt 3 – Eingabeaufforderung öffnen

  • Die Windows-Eingabeaufforderung (CMD) öffnen.
  • Nicht PowerShell verwenden.
  • In das Exportverzeichnis wechseln:

cd C:\xampp\exporter\exportMediaWiki2HTML

Schritt 4 – Virtuelle Python-Umgebung aktivieren

.venv\Scripts\activate.bat

Danach sollte die Eingabeaufforderung beispielsweise lauten: (.venv) C:\xampp\exporter\exportMediaWiki2HTML>

Schritt 5 – Python-Version prüfen

python --version

Beispiel: Python 3.14.3

Schritt 6 – Installierte Pakete prüfen

pip list

Mindestens das Paket requests muss installiert sein.

Schritt 7 – Funktion des Skripts prüfen

python exportMediaWiki2Html.py --help

Es erscheint die Hilfe des Programms mit sämtlichen verfügbaren Parametern.

Schritt 8 – Altes Exportverzeichnis löschen

Vor jedem neuen Export empfiehlt es sich, den bisherigen Export vollständig zu entfernen.

rmdir /s /q C:\xampp\htdocs\dadaweb-test

Danach das Zielverzeichnis wieder anlegen:

mkdir C:\xampp\htdocs\dadaweb-test

Schritt 9 – HTML-Export starten

Den Export mit folgendem Befehl starten:

python exportMediaWiki2Html.py -l http://localhost/dadaweb/ -o C:\xampp\htdocs\dadaweb-test

Dabei bedeutet:

  • -l = Adresse des Wikis
  • -o = Zielverzeichnis für den Export

Schritt 10 – Ablauf des Exports beobachten

Während des Exports werden sämtliche Seiten nacheinander ausgegeben.

Beispielsweise:

{'pageid': 2659,
 'title': 'Reclus, Élisée'}

Danach folgen die zugehörigen Bilder:

Downloading ...

Nicht vorhandene Bilder werden lediglich als Warnung ausgegeben:

WARNUNG:
Bild nicht gefunden:
...

Der Export läuft trotzdem vollständig weiter.

Schritt 11 – Abschluss des Exports

Nach erfolgreichem Abschluss erscheint wieder die normale Eingabeaufforderung.

Beispielsweise: (.venv) C:\xampp\exporter\exportMediaWiki2HTML>

Es sollte keine Python-Fehlermeldung mehr erscheinen.

Ergebnis

Im Zielverzeichnis befindet sich anschließend beispielsweise:

dadaweb-test
│
├── img
│
├── A.html
├── Alexander_Berkman.html
├── Anarchie.html
├── ...
├── Z.html
│
└── page_not_existing.html

Jede Wiki-Seite wurde als eigenständige HTML-Datei gespeichert.

Änderungen am Originalprogramm

Für den produktiven Einsatz wurden mehrere Verbesserungen vorgenommen.

1. Erhöhung der maximal exportierten Seitenzahl

Im Originalprogramm war die Zahl der exportierten Seiten auf default=500 begrenzt. Dieser Wert wurde auf default=2500 erhöht. Dadurch werden sämtliche Artikel des DadAWeb exportiert.

2. Fehlende Bilder

Das Originalprogramm brach bei jedem fehlenden Bild sofort ab. Durch die Änderung wird stattdessen lediglich eine Warnung ausgegeben.

WARNUNG:
Bild nicht gefunden

Der Export läuft anschließend automatisch weiter.

3. Fehlerhafte srcset-Einträge

Einige ältere MediaWiki-Versionen erzeugen fehlerhafte srcset-Einträge. Diese führten ursprünglich zum Fehler:

ValueError:
substring not found

Durch eine zusätzliche Prüfung werden ungültige Bildpfade jetzt erkannt und übersprungen.

Hinweise

Während des gesamten Exportvorgangs müssen Apache (gegebenenfalls MySQL) weiterlaufen.

Wird Apache während des Exports beendet, erscheint eine Fehlermeldung wie ConnectionRefusedError oder HTTPConnectionPool(host='localhost'). In diesem Fall muss Apache erneut gestartet und der Export wiederholt werden.

Zusammenfassung

Nach Durchführung aller beschriebenen Schritte erhält man eine vollständige statische HTML-Kopie des MediaWiki mit sämtlichen exportierten Inhaltsseiten und lokal gespeicherten Bildern. Durch die vorgenommenen Erweiterungen am Python-Skript werden auch größere Wikis zuverlässig verarbeitet, fehlende Bilddateien führen nicht mehr zum Abbruch des Exports, und fehlerhafte srcset-Einträge werden automatisch übersprungen.

Die erzeugte HTML-Version im Browser testen

Nach erfolgreichem Export kann die statische HTML-Version direkt über den lokalen Apache-Webserver aufgerufen werden.

Dazu im Browser folgende Adresse eingeben: http://localhost/dadaweb-test/

Da das Exportverzeichnis standardmäßig keine index.html enthält, zeigt Apache zunächst eine Verzeichnisübersicht aller erzeugten HTML-Dateien an. Von dort aus kann jede exportierte Wiki-Seite durch Anklicken geöffnet werden.

Soll direkt die ehemalige Wiki-Startseite geöffnet werden, wird deren HTML-Datei aufgerufen. Im DadAWeb lautet sie beispielsweise: http://localhost/dadaweb-test/Willkommen_im_neuen_DadAWeb_.html

(Der Dateiname entspricht dem Seitentitel, wobei Leerzeichen und Sonderzeichen automatisch ersetzt werden.)

Alternativ kann die gewünschte HTML-Datei auch direkt über die Adresszeile des Browsers aufgerufen werden.