lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:challenge4

This is an old revision of the document!


Regular Expressions und HTML-Dateien

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 &quot;, was für Anführungszeichen steht.
  • Ersetzen Sie &quot; 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.

Lösungsvorschläge

Lösungsvorschläge

  • 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 :-/

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.

  • Übertragen Sie folgende Tabelle in Excel und überprüfen Sie die Summe: ohnopdf.pdf
  • Für diejenigen, die es so richtig mühsam wollen, gleiche Aufgabe aber mit einem “Scan” der PDF-Seite:
  • 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.

Lösungshilfen

Lösungshilfen

  • Oft ist ein Copy-Paste aus dem Browser einfacher, als die Analyse des HTML-Codes.
  • Es gibt online-Tools, die diese Konversionen machen, googeln Sie danach (auch auf English!)
  • Das “Problem” sind hier die Tausendertrennzeichen (Apostroph), die müssen wohl oder übel in einem Text-Editor (für Sie Notepad++) ersetzt werden.
  • lehrkraefte/blc/informatik/glf4-20/umgang-mit-dateien/challenge4.1614861075.txt.gz
  • Last modified: 2021/03/04 13:31
  • by Ivo Blöchliger