Ordelio

Tabelle von Webseite als CSV speichern

Eine CSV-Datei ist reiner Text, den jede Tabellenkalkulation und Datenbank lesen kann. Eine Web-Tabelle hineinzubekommen ist leicht; sie ohne Zeichensalat bei Akzenten, falsche Trennzeichen oder verlorene Nullen hineinzubekommen, ist der schwierige Teil. Vier Wege und wo jeder von ihnen stolpert.

1. Kopieren, in Excel einfügen und dann speichern

Markieren Sie die Tabelle, kopieren Sie sie, fügen Sie sie in ein leeres Excel-Blatt ein, verwenden Sie dann den Befehl „Speichern unter“ im Dateimenü und wählen Sie das Dateiformat CSV UTF-8.

Gut für: Eine kleine Tabelle, die Sie einmalig brauchen, wenn Sie Excel ohnehin schon geöffnet haben.

Wo es hakt: Wählen Sie das einfache Format CSV statt CSV UTF-8, verwandelt sich jedes Zeichen außerhalb Ihrer Windows-Codepage (Umlaute, Kyrillisch, Chinesisch) in ein Fragezeichen. Excel schreibt außerdem das Trennzeichen, das in Ihren Windows-Ländereinstellungen festgelegt ist – auf vielen europäischen Systemen ist Ihre „kommagetrennte“ Datei daher in Wirklichkeit durch Semikolons getrennt, während das lesende Programm möglicherweise Kommas erwartet. Beim Einfügen können zudem führende Nullen verschwinden (ein Code wie 01234 wird zu 1234) und Werte wie 1-2 in Datumsangaben umgewandelt werden, außerdem greift die Auswahl oft Text rund um die Tabelle ab.

2. Google Tabellen: einfügen und herunterladen

Fügen Sie die Tabelle in ein Google Tabellen-Dokument ein, öffnen Sie dann das Dateimenü, gehen Sie auf Download und wählen Sie das Format Komma-getrennte Werte (.csv).

Gut für: Jeden Computer mit einem Browser, kein Excel nötig, und die Datei ist immer UTF-8.

Wo es hakt: Die Datei verwendet immer Kommas, was Excel in einer Region mit Dezimalkomma beim Doppelklick eventuell nicht in Spalten aufteilt. Es wird nur das Tabellenblatt heruntergeladen, das Sie gerade ansehen, nicht die ganze Datei. Ähnlich wie Excel wandelt Google Tabellen beim Einfügen bestimmte Werte möglicherweise in Datumsangaben oder Zahlen um.

3. Python: pandas.read_html

Wenn Sie ohnehin in Python arbeiten, liest pandas jede Tabelle auf einer Seite aus und schreibt eine als CSV:

pandas.read_html("https://example.com/page")[0].to_csv("table.csv", index=False)

Die Zahl in den Klammern ist die Position der Tabelle auf der Seite (0 für die erste). Sie müssen pandas und lxml installiert haben.

Gut für: Dieselbe Seite jede Woche oder Hunderte von Seiten in einem Skript.

Wo es hakt: Einige Websites verweigern die Anfrage mit einem Fehler 403, weil es nicht wie ein Browser aussieht – Sie müssen die Seite also selbst herunterladen und das HTML an pandas übergeben. Es kann keine Seiten hinter einem Login sehen oder Tabellen, die JavaScript erst nach dem Laden der Seite zeichnet. Fußnotenmarkierungen wie [1] bleiben in den Überschriften und Werten erhalten, und ganze Zahlen können als 8021407192.0 ausgegeben werden, sobald eine Spalte eine fehlende Zelle enthält.

4. Eine Browser-Erweiterung: Ein Klick auf der Seite, die Sie lesen

Eine Erweiterung funktioniert auf der Seite genau so, wie Sie sie in Ihrem Browser sehen – sie funktioniert also auch nach der Anmeldung und bei Tabellen, die mit JavaScript erstellt wurden. Wir machen eine, Ordelio Tabellen kopieren (kostenlos, keine Zeilenlimits):

  1. Öffnen Sie die Seite und klicken Sie auf das Symbol der Erweiterung (oder drücken Sie Alt+Umschalt+Y). Sie listet jede Tabelle auf der Seite auf, die größte zuerst; wenn Sie mit der Maus darüberfahren, leuchtet sie auf.
  2. Drücken Sie CSV: Der Browser speichert eine Datei mit dieser Tabelle. Umlaute überstehen das, weil die Datei im UTF-8-Format mit einer Markierung versehen ist, die Excel dies mitteilt, und das Trennzeichen ein Semikolon ist, wenn Ihre Sprache Dezimalzahlen mit einem Komma schreibt (in den Optionen können Sie ein Komma, ein Semikolon oder einen Tabulator erzwingen).

Sie entfernt außerdem Fußnotenmarkierungen wie [1], wiederholt verbundene Zellen, damit die Spalten ausgerichtet bleiben, und schreibt Codes wie 01234 exakt so in die Datei, wie sie auf der Seite stehen (eine Tabellenkalkulation, die die Datei öffnet, wandelt sie danach eventuell trotzdem in Zahlen um).

Wo es hakt: Sie speichert das, was jetzt gerade auf der Seite zu sehen ist. Eine Tabelle, die sich über mehrere Seiten erstreckt, benötigt also eine Datei pro Seite, und sie kann die Datei nicht von sich aus aktualisieren wie ein Skript.

Ordelio Tabellen kopieren für Microsoft Edge holen Chrome- und Firefox-Versionen: in Prüfung.

Welche Methode Sie verwenden sollten

Excel Speichern unterGoogle TabellenpandasErweiterung
Seiten hinter einem LoginJa (durch Kopieren)Ja (durch Kopieren)NeinJa
Umlaute kommen richtig anNur mit CSV UTF-8JaJaJa
Wählbares TrennzeichenNein (von Windows festgelegt)Nein (immer Kommas)Ja (ein Parameter)Ja (eine Option)
Hunderte Seiten auf einmalNeinNeinJaNein
Zeitaufwand für eine neue SeiteEtwa eine MinuteEtwa eine MinuteBeim ersten Mal MinutenEin paar Sekunden

Kurz gesagt: Für ein Skript, das wöchentlich auf öffentlichen Seiten läuft, verwenden Sie pandas. Für einen einmaligen Abruf von einer Seite, die Sie gerade lesen (vor allem hinter einem Login), speichern Sie sie direkt von der Seite.

Haben Sie eine Tabelle gefunden, die keine dieser Methoden verarbeitet? Sagen Sie es uns, wir lesen jede Nachricht.