Regular Expressions und HTML-Dateien
Einführungsbeispiel
Aus einer HTML-Datei sollen die Links mit verlinktem Text extrahiert werden. Beispiel:
<a href="https://fginfo.ksbg.ch/" class="bla">Fachgruppe Informatik</a>
Der HTML-Tag <a>
definiert einen Link. Im Attribut href
steht die URL (Web-Adresse). Der verlinkte Text steht danach (beendet durch ein </a>).
Das gewünschte CSV-Format ist folgendes:
Fachgruppe Informatik;https://fginfo.ksbg.ch/
Die Idee ist natürlich, die Umwandlung in einem Aufwasch für die ganze Datei zu erledigen.
- Wir verwenden folgende HTML-Datei: page.html, die Sie bitte herunterladen und in NotePad++ öffnen.
- Löschen Sie bitte alle Zeilen, die die Zeichenkette
<a href=
nicht enthalten. Machen Sie eine Internetsuche (am besten auf Englisch), wie Sie vorgehen können. - Man stellt fest, dass es Zeilen gibt, die noch mehr als einen Link enthalten. Wir werden darum
<a href
durch\n<a href
(d.h. wir fügen einen Zeilenumbruch vor jedem link ein). Dazu muss im “Search Mode” “Extended” oder “Regular Expression” aktiviert sein. - Löschen Sie abermals die Zeilen, die
<a href
nicht enthalten. - Führen Sie nun folgende Ersetzung durch, wobei der “Search Mode” auf Regular Expression gesetzt werden muss:
- Ersetzen Sie
<a href="(.*?)".*?>(.*?)</a.*
durch$2;$1
. Das ist eine Regular Expression, mehr dazu später
- Man stellt fest, dass im Text noch Strichpunkte vorkommen. Diese stehen aber beim
"
, was für Anführungszeichen steht. - Ersetzen Sie
"
durch"
- Als letztes vervollständigen sie die Links durch
https://fginfo.ksbg.ch
durch eine geeignete Ersetzung. - Speichern Sie die Datei als
links.csv
und öffnen Sie diese mit Excel. Welches Problem gibt es noch? - Schliessen Sie Excel wieder (sonst kann die Datei
links.csv
mit Notepad++ nicht wieder gespeichert werden). - In Notepad++ kann die Codierung angepasst werden. Im Menu Encoding → Convert to ANSI. Speichern Sie wieder mit Ctrl-S.
- Öffnen Sie die Datei noch einmal mit Excel und überprüfen Sie, ob das Problem jetzt behoben ist.
- Das Encoding gibt an, wie Buchstaben (insbesondere Sonderzeichen wie ä, é etc.) codiert, d.h. binär dargestellt werden.
- Praktisch alle Webseiten und Computersysteme verwenden heute (und schon seit langem) das universelle Encoding UTF-8, ausser natürlich Microsoft Windows
Regular Expressions
Summe von Zahlen
Bestimmen Sie die Summe der Zahlen in folgender Datei: zahlen.txt.
Beachten Sie, dass alle Zahlen Ganzzahlen sind, d.h. das Komma steht als Trennzeichen für Tausender (amerikanisches Format). Beachten Sie ebenfalls, dass die Anzahl Leerschläge zwischen den Zahlen variabel sind.
Die Summe ist 55'061'026.
Oh no, pdf
- Übertragen Sie folgende Tabelle in Excel und überprüfen Sie die Summe: ohnopdf.pdf
HTML-Tabelle nach CSV konvertieren
- Erstellen Sie eine von Excel lesbare CSV-Datei aus folgender HTML-Tabelle: table1.html
- Berechnen Sie die Summe aller Einträge.
Hinweis: Es gibt viele Möglichkeiten, diese Aufgabe zu lösen.