Eine Tabelle auslesen, deren Zeilen ständig die Plätze tauschen
· 5 Min. Lesezeit
Das ist der Fehler, in den fast jeder tappt, der Tabellen ausliest. Sie greifen den Preis in Zeile 3, alles funktioniert, und eine Woche später gibt Ihre API stillschweigend die falsche Währung, das falsche Produkt oder die falsche Mannschaft zurück — weil Zeile 3 nicht mehr die gemeinte Zeile ist.
Warum positionsbasierte Selektoren verrotten
Ein CSS-Selektor wie tbody tr:nth-child(3) td:nth-child(4) sagt „die vierte Zelle der dritten Zeile“. Über den Inhalt dieser Zeile sagt er nichts. In einer sortierten Tabelle — Marktkapitalisierung, Verkaufscharts, Ligatabellen — ist die Sortierung der eigentliche Zweck, und sie ändert sich absichtlich.
Das Tückische daran: Nichts bricht laut. Der Selektor trifft weiterhin, die Antwort enthält weiterhin eine Zahl, und die Zahl wirkt weiterhin plausibel. Sie gehört nur zur falschen Zeile — und das fällt womöglich wochenlang nicht auf.
Am Bezeichner verankern, nicht am Index
Die Lösung besteht darin, nicht mehr zu beschreiben, wo die Zelle steht, sondern zu welcher Zeile sie gehört. Jede Tabelle, die das Auslesen wert ist, hat eine Spalte, die die Zeile bezeichnet: ein Name, ein Kürzel, eine Artikelnummer, ein Titel. Suchen Sie die Zeile mit dem passenden Bezeichner und lesen Sie dann quer zur gewünschten Spalte.
So gelesen übersteht derselbe Selektor jede Umsortierung: Rutscht die Zeile von Platz drei auf Platz elf, folgt ihr die Suche.
Wie WebToAPI danach fragt
Wenn Sie auf einer Seite mit einer Tabelle mit dem Auswählen beginnen, lässt die Erweiterung Sie nicht sofort einen Wert anklicken. Zuerst stellt sie eine Frage: Welche Spalte bezeichnet eine Zeile?
- Schritt eins — klicken Sie eine Zelle in der bezeichnenden Spalte an. Meist die Namensspalte.
- Schritt zwei — klicken Sie die gewünschten Werte an. Jeder wird als „die Zelle dieser Spalte in der Zeile mit dem Bezeichner X“ gespeichert.
Das ist ein zusätzlicher Klick — und der Unterschied zwischen einer API, die weiterhin meint, was Sie gemeint haben, und einer, die unbemerkt abdriftet.
Wenn auch der sichtbare Name nicht stabil ist
Manchmal ändert sich die Beschriftung selbst: Aus „Bitcoin“ wird „Bitcoin (BTC)“, oder sie wird übersetzt. Enthält die bezeichnende Zelle einen Link, bevorzugen wir dessen Pfad gegenüber dem Text — denn eine URL wie /currencies/bitcoin/ überlebt die darüber angezeigte Beschriftung meist.
Das geschieht automatisch. Gibt es in der Bezeichnerzelle einen brauchbaren Link, wird er zum Anker; andernfalls greifen wir auf den Textvergleich zurück.
Eine Checkliste für Tabellen-APIs
- Wählen Sie eine wirklich eindeutige Bezeichnerspalte — zwei Zeilen namens „Sonstige“ machen die Suche mehrdeutig.
- Bevorzugen Sie eine Spalte mit Links gegenüber einer mit reinem Text.
- Verankern Sie nicht an einer Rang- oder Indexspalte; genau die bewegt sich.
- Sortieren oder filtern Sie die Tabelle nach dem Speichern im Browser um und rufen Sie den Endpunkt erneut auf. Stimmt der Wert weiterhin, tut der Anker seine Arbeit.
WebToAPI verwandelt jede Seite in einen JSON-Endpunkt — Werte auswählen, URL bekommen.
Zu Chrome hinzufügen
WebToAPI