Tabellen von einer Webseite extrahieren
Diese Funktion ruft eine Internetadresse auf und liefert jede darin enthaltene HTML-Tabelle als strukturierte Daten zurück – Zeilen und Spalten, wie sie auf der Seite dargestellt sind, statt eines unformatierten Textblocks zum mühsamen Zusammensuchen von Hand aus dem Quelltext der Seite.
Online ausführen
Führen Sie dies mit Ihrem Konto auf unseren Servern aus. Kostenlose Tools laufen in Ihrem Browser; dieses wird zum oben genannten Preis von Ihrem KIT-Guthaben abgebucht.
Wie eine Tabelle erkannt wird
Die Funktion lädt die Seite in einem echten Browser und sucht darin nach HTML-Tabellen, auch wenn sie erst durch JavaScript nachträglich eingefügt werden. Jede gefundene Tabelle wird mit ihren Spaltenüberschriften und Zeilenwerten als eigener Datensatz zurückgegeben, bereit zur Weiterverarbeitung, etwa als CSV-Datei oder als Grundlage für eine eigene Auswertung in einer Tabellenkalkulation. Leere Zellen bleiben dabei leer, statt mit einem Platzhalter aufgefüllt zu werden.
Wofür sich das eignet
Eine Preisliste, ein Fahrplan oder eine technische Spezifikation, die auf einer fremden Seite nur als HTML-Tabelle vorliegt, lässt sich so übernehmen, ohne jede Zeile von Hand in eine eigene Tabelle abzutippen. Bei mehreren Tabellen auf einer Seite werden alle gefunden und getrennt zurückgegeben, sodass Sie die passende auswählen können, ohne die übrigen manuell auszusortieren oder aus einem langen Textblock herauszufiltern.
Grenzen
Tabellen, die nicht als echtes HTML-Tabellenelement, sondern rein optisch mit anderen Bausteinen nachgebaut sind, erkennt die Funktion nicht zuverlässig als Tabelle. Sehr breite Tabellen mit vielen Spalten werden vollständig übernommen, auch wenn sie auf dem Bildschirm der Ursprungsseite eigentlich zum seitlichen Scrollen gedacht waren und dort nie ganz sichtbar sind. So entsteht am Ende oft eine vollständigere Übersicht, als ein Besucher auf dem Bildschirm der Ursprungsseite je zu sehen bekäme.
Preis pro Anfrage
$0.040 pro Anfrage zuzüglich $0.001 pro URL, unabhängig davon, wie viele Tabellen auf der Seite gefunden werden oder wie viele Zeilen und Spalten sie jeweils enthalten. Ein Abonnement ist dafür nicht nötig, abgerechnet wird ausschließlich die tatsächlich verarbeitete Anfrage, unabhängig davon, ob eine oder mehrere Tabellen gefunden werden oder wie viele Spalten und Zeilen sie im Einzelnen jeweils tatsächlich enthalten.
Anwendungsfälle
Preisliste eines Lieferanten übernehmen
Weber Metallbau GmbH übernimmt die Preisliste eines Stahllieferanten, die nur als Tabelle auf dessen Website steht, direkt in die eigene Kalkulation.
Technische Spezifikationstabelle für den Katalog
Schneider IT-Systeme GmbH & Co. KG übernimmt die technischen Daten eines Herstellers aus einer Vergleichstabelle für den eigenen Produktkatalog.
Öffnungszeiten-Tabelle einer Partnerbäckerei archivieren
Bäckerei Hoffmann e. K. sichert die Tabelle mit den saisonalen Öffnungszeiten einer Partnerbäckerei für die eigene Planung.
Häufige Fragen
Werden auch Tabellen erkannt, die erst per JavaScript eingefügt werden?
Ja, die Seite wird vor der Suche vollständig in einem Browser geladen, auch nachträglich eingefügte Tabellen werden erfasst.
Was, wenn eine Tabelle nur optisch wie eine Tabelle aussieht, aber keine ist?
Rein optisch nachgebaute Tabellen ohne echtes HTML-Tabellenelement werden nicht zuverlässig erkannt; das betrifft vor allem stark individuell gestaltete Seiten.
Bekomme ich mehrere Tabellen einer Seite getrennt zurück?
Ja, jede gefundene Tabelle wird als eigener Datensatz zurückgegeben, sodass sich die passende auswählen lässt.
In welchem Format liegt das Ergebnis vor?
Als strukturierte Daten mit Spaltenüberschriften und Zeilenwerten, die sich unter anderem als CSV-Datei weiterverwenden lassen.
Was kostet die Extraktion?
$0.040 pro Anfrage plus $0.001 pro URL, unabhängig von der Anzahl der gefundenen Tabellen.
Darf ich eine Preisliste eines Lieferanten so übernehmen?
Für die eigene interne Kalkulation ist das üblich; bei einer Weiterveröffentlichung der übernommenen Daten lohnt sich vorher ein Blick in die Nutzungsbedingungen des Lieferanten.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/web/tables \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/tables", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/tables",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/tables", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/tables", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"url": "https://ejemplo.com"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.tables",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
422 | task_failed | Die Aufgabe ist fehlgeschlagen und wird nicht berechnet. |