Wie Du KNIME direkt mit dem Screaming Frog verbindest (Teil 2)

Effektive Verbindung zwischen KNIME und Screaming Frog: Erfahre, wie du mithilfe des Derby-Treibers eine Datenbankverbindung herstellst, Crawldaten abfragst und deine Analyseverfahren optimierst – Praxisnaher Leitfaden.

In meinem Wingmen-Newsletter-Artikel “Direkter Frosch-Zugriff mit KNIME (Teil 1)” hatte ich Dir schon die Grundlagen für diese Verbindungen beschrieben. Leider kommen berufliche Veränderungen dann doch schneller als gedacht und Newsletter-Artikel werden nicht rechtzeitig fertig. Ich möchte Dir den Inhalt von “Teil 2” jedoch nicht vorenthalten und veröffentliche ihn daher als Blog-Artikel.

In Teil 1 haben wir die Grundlagen für eine erfolgreiche Verbindung zur Datenbank des Screaming Frogs geschaffen und uns in Derby die Datenbankstruktur eines Crawls angeschaut. Für alle, die diesen Schritt noch nicht durchgeführt, habe ich hier eine tolle Nachricht: Die Installation ist noch einfacher geworden. Über das Script sfadmin.php kannst Du nun auch den benötigten Derby-Datenbank-Treiber ganz einfach über ein Kommando herunterladen und in KNIME installieren.

Voraussetzungen

Um den Screaming Frog mit KNIME verbinden zu können bzw. um direkt auf die Daten eines Crawls reifen zu können, sind wenige Voraussetzungen nötig. Diese sind jedoch zwingend erforderlich:

  • Ein lizenzierter Screaming Frog
  • Der Screaming Frog muss im “Database Storage” Modus betrieben werden
  • Du solltest Dich mit KNIME schon etwas auskennen. Die grundlegenden Funktionsweisen wie Du Workflows anlegst, Nodes findest und hinzufügst wird in diesem Artikel nicht erklärt.

Das Tool sfadmin.php prüft die technischen Voraussetzungen und gibt Dir benötigte Hinweise, wenn die Voraussetzungen in Deinem System nicht stimmen sollten.

Screaming Frog & KNIME verbinden

Dazu müssen wir jetzt den Derby-Treiber auch in KNIME installieren und in KNIME bekannt machen. Dies können wir manuell über viele umständliche Schritte tun oder unser Tool sfadmin.php nutzen. Dies rufen wir wieder über ein Terminal- / Command-Fenster auf:

  • Beende KNIME vollständig
  • Aufruf des Tools
    > php sfadmin.php
  • Installation des Treibers
    > install derby
    Folge den Anweisungen, bis Du wieder im Hauptmenü des Tools angekommen bist.
  • Beende sfadmin.php
    > quit
  • Starte KNIME erneut

Mit diesem Prozess haben wir den aktuell Derby-Treiber auch schon heruntergeladen und in KNIME installiert.

Benötigte KNIME-Nodes

Als Erstes benötigen wir ein “DB Connector”. Mit diesem wird die eigentliche Verbindung hergestellt. Wir müssen ihm aber noch sagen, mit welcher Art von Datenbank (derby) wir uns verbinden wollen und wo die Datenbank zu finden ist.
KNIME, unkonfigurierter DB Connector

Dies tun wir, indem wir mit einem Doppelklick auf das Node oder über das Kontextmenü “Configure…”, die Konfiguration des Nodes aufrufen:
Konfigurationsfenster eines DB Connectors in KNIME

Festlegen des Datenbanktypes

Dazu müssen wir unter “Driver Name” “derby [ID: derby]” auswählen. (Dieser Eintrag wurde durch unser Tool sfadmin.php im ersten Schritt neu angelegt).

Ermittlung und Festlegung der Database URL

Die Database URL ist so zusagen die Pfadangabe zur Screaming Frog- Datenbank und wird im Arbeitsverzeichnis des Screaming Frogs in Deinem persönlichen Ordner abgelegt. Um die korrekte Pfadangabe zu Deinem Crawl zu finden, öffnen wir wieder unser Tool sfadmin.php in einem Terminal- / Command- Fenster:

  • Aufruf des Tools
    > php sfadmin.php
  • Aufruf der Liste aller Crawls
    > getdata
  • Wähle nun den Crawl aus, auf dessen Daten Du reifen willst. Gebe die Nummer ein, die vor dem Crawl angezeigt wird. (z.B.)
    > 68
  • Die Meta-Daten des Crawls werden Dir jetzt im Detail angezeigt. Unter anderem auch der “Derby-Verbindungsstring”. Kopiere nun die komplette Zeichenkette beginnend mit “jdbc:derby” bis einschließlich “/sql” in die Zwischenablage
  • Wechsel zu KNIME und füge die Zeichenkette in das Feld “Database URL” des Nodes ein.
  • Schließe und bestätige die Konfiguration mit OK

Du solltest jetzt sehen, dass das Ausrufezeichen an unserem Node verschwunden ist. Die Konfiguration ist also vollständig.
DB Connector, fertig konfiguriert jedoch noch nicht ausgeführt

Mit einem Klick auf “Execute” im Kontextmenü können wir prüfen, ob unsere Configuration erfolgreich war.

Daten aus dem Crawl abfragen

Nachdem wir nun eine Datenbankverbindung aufgebaut haben, können wir uns auch schon daran machen, die ersten Daten zu ermitteln. Dazu nutzen wir, bedingt durch den begrenzen SQL-Sprachschatz der Derby-Datenbank ein Node vom Type “DB Query Reader”:
KNIME DB Query Reader ohne Konfiguration

Dieses Node verbinden wir mit unserem “DB Connector” wie folgt:
Verbindung zwischen DB Connector und DB Query Reader in KNIME

Wir müssen nun noch im DB Query Reader definieren, welche Daten wir aus dem Crawl auslesen möchten. Dazu öffnen wir die Konfiguration des DB Query Readers:
Abruf der Tabelleninformationen einer datenbank im DB Query Reader von KNIME

In dem linken Treeview (aktuell noch leer) werden Dir gleich alle verfügbaren Tabellen aus dem Screaming Frog Crawl angezeigt. Klicke dazu einfach auf das “Refresh”-Icon, welches ich in dem Screen markiert habe. Der Treeview wird sich aktualisieren (bei größeren Crawls, kann dies auch schon einmal etwas Zeit in Anspruch nehmen):
Gefüllte Liste der Tabellen in einem DB Query Reader von KNIME

Wir sehen nun, welche Tabellen uns der Frog zur Verfügunvg stellt. Mit leichter (eingeschränkter) SQL-Magie können wir nun unserer Daten in KNIME überführen. Dazu möchten wir einmal alle URLs aus der Tabelle “UNIQUE_URLS” auslesen. In dem rechten Code-Feld geben wir also unser SQL-Kommando:
select * from "APP"."UNIQUE_URLS"
ein und bestätigen unsere Konfiguration mit OK. Die Konfiguration des DB Query Readers ist nun vollständig und wir können dieses jetzt ausführen:
Verbindung zwischen einem DB Connector und einem DB Query Reader in KNIME mit vollständiger Konfiguration, jedoch noch nicht ausgeführt

Klicke dazu einfach im Kontextmenü des Nodes auf “Execute”. Im Node Monitor solltest Du nun die Daten aus Deinem Crawl sehen:
Erbenisvorschau im Node Monitor von KNIME mit dem Ergebnis des DB Query Readers

Wie gewohnt kannst Du nun in KNIME mit diesen Daten weiterarbeiten, sie manipulieren, zählen und die Ergebnisse in CSV-Dateien, direkt in Google Sheets oder anderen Datenbanken schreiben.

Mögliche Fehlerquellen

KNIME DB Connector mit fehlerhafter Ausführung Sollte das “DB Connector”-Node nach dem Ausführen mit einem Fehler hängenbleiben, so lohnt sich der Blick in die Console von KNIME. Der häufigste Fehler zeigt sich mit dieser Fehlermeldung:
“ERROR DB Connector 3:1 Execute failed: Datenbank '.../.ScreamingFrogSEOSpider/ProjectInstanceData/e595cdb9-5c6f-4445-aa96-2a0bcc20c706/results_bbcf4fbc-9d8f-45e8-9dc7-afceda9128f2/sql' konnte nicht mit dem Class Loader org.knime.database.driver.DBDriverRegistry$DriverClassLoader@382d4604 gestartet werden. Details können Sie der nächsten Ausnahme entnehmen.”
Fehlermeldung in der KNIME Console zeigt den Fehler in der datenbankverbindung mit dem Screaming Frog Dieser Fehler entsteht immer dann, wenn auf die Crawl-Datenbank noch aktiv, mit einem anderen Programm geöffnet ist. Meist ist es der Screaming Frog selber, den man nicht geschlossen hat, bevor das Node ausgeführt wurde. Mit Derby sind daher nur exklusive Datenbankverbindungen erlaubt.

Das gilt jedoch auch in die andere Richtung: Hast Du den Crawl aktiv in KNIME in Verwendung, darf der Screaming Frog nicht auf seinen Crawl zugreifen.
Fehlermeldung im Screaming Frog bei dem Versuch eine geöffnete Datenbank/Crawl zu öffnen

In so einem Fall schließt Du KNIME oder nutzt im Kontextmenü des “DB Connector”-Nodes einfach den Punkt “Reset”, um die Datenbankverbindung wieder freizugeben.

Fazit

Gerade wenn es darum geht, Analyseverfahren zu standardisieren, bieten die Kombinationen aus Screaming Frog, KNIME und die Möglichkeit direkt mit den Daten arbeiten zu können klare Vorteile. Zwei Nachteile, mit dem wir leben müssen, sind die Performance und der begrenzte SQL-Sprachschatz (SQL-92) der Derby-Datenbank. Hier wären andere Datenbanksysteme klar im Vorteil und würden unsere Arbeit erheblich erleichtern. Jedoch bin ich froh, dass ich hier einen Weg gefunden habe möglichst effektiv bestehende Softwarelösungen kombinieren zu können.

In meinem dritten und vorerst letzten Screaming Frog zu KNIME Artikel werden wir uns die ersten sinnvollen Auswertungen anschauen und näher auf die Datenstruktur der Screaming Frog Datenbank, den begrenzen Sprachschatz von SQL-92 und die Auswirkungen auf unsere Workflows eingehen.

Fehlt Dir in diesem Artikel etwas oder möchtest Du Deine Erkenntnisse teilen? Dann verbinde Dich doch über LinkedIn mit mir.