This is an old revision of the document!
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/">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 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
. 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
- Man stellt fest, dass im Text noch Strichpunkte vorkommen. Diese stehen aber beim
"e;
, was für Anführungszeichen steht. Man hat jetzt zwei Möglichkeiten:- Entweder Sie ersetzen
"e;
durch“
oder - Sie machen obige Ersetzung rückgängig und ersetzen statt dessen mit
“$2”;”$1“
.
- Als letztes vervollständigen sie die Links durch
https://fginfo.ksbg.ch' durch eine geeignete Ersetzung. * Speichern Sie die Datei als
links.csvund öffnen Sie diese mit Excel. Welches Problem gibt es noch? * Schliessen Sie Excel wieder (sonst kann die Datei
links.csvmit Notepad++ nicht wieder gespeichert werden). * In Notepad++ und Encoding → Convert to ANSI und speichern Sie wieder. * Öffnen Sie die Datei noch einmal mit Excel und überprüfen Sie, ob das Problem weiter besteht. </WRAP> <hidden Lösungsvorschläge> * Eine Suche nach
notepad++ delete all lines not containing a pattern'' hat als ersten Treffer fogende Seite ergeben: https://superuser.com/questions/290247/delete-all-lines-in-notepad-except-lines-containing-a-word-i-need/292677 wobei wieder der erste Lösungsvorschlag zum Erfolg führt.
</hidden>
- 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 UTF-8, ausser natürlich Microsoft Windows
- lehrkraefte/blc/informatik/glf4-20/umgang-mit-dateien/challenge4.1614160593.txt.gz
- Last modified: 2021/02/24 10:56
- by Ivo Blöchliger