HTML2Spreadsheet
Der HTML2Spreadsheet Step kann (wie der HTMLParser) einzelne HTML-Elemente aus einem Input heraus extrahieren und daraus ein neues Spreadsheet erzeugen. Als Input kann ein FILE, FILELIST oder SPREADSHEET dienen. Ist der Input ein SPREADSHEET, kann man eine Spalte auswählen, die den zu parsenden HTML-Text enthält.
Beispiel
Input: SPREADSHEET mit HTML-Code in der Spalte "description" z.B.
<a href="http://synesty.com/1">my link</a>
Einlesen / Parsen:
Das *processingTemplate *wird für jede Zeile des Input-Spreadsheets angewendet, um daraus HTML-Elemente zu extrahieren. Dazu dient die Funktion selectHTML()
selectHTML("a").attr("href")
- selectHTML() ist eine Synesty-eigene Funktion, die als Parameter einen CSS-Ausdruck erhält (ähnlich wie be jQuery), und alle passenden Elemente als sog. Elements-Objekt zurückgibt (sozusagen eine Liste aller gefundenen HTML-Elemente). Im Beispiel werden alle Links (<a> Tags selektiert und davon das href-Attribut ausgelesen)
- Das Ergebnis ist ein sog. Elements-Objekt des verwendeten JSOUP-Frameworks, womit auf die Element zugegriffen werden kann.
- Weitere Informationen zum Selektieren der Elemente unter http://jsoup.org/cookbook/extracting-data/selector-syntax
Ausgabe:
Im processingTemplate werden in diesem Beispiel alle URLs aus allen Links (href-Attribut bei a-Tags> extrahiert und in eine Spalte "selectedHtml" geschrieben.
Zugriff auf die Spreadsheet-Spalten
Man kann im processingTemplate auch auf die anderen Spalten des Input-Spreadsheets zuzugreifen. Meistens wird das genutzt in Verbindung mit dem SpreadsheetURLDownload und der dortigen Möglichkeit Spalten über die Option outputSourceColumns durchzuschleifen (z.B. Artikelnummer / SKU).
Dafür existiert eine Variable inputRow.
Damit haben Sie immer die aktuelle Zeile des Input-Spreadsheets verfügbar und können auf die Spaltenwerte zugreifen.
Beispiel:
${inputRow.get("meinSKUSpalte")!}
Angenommen im Input-Spreadsheet gibt es eine Spalte meineSKUSpalte, die eine Artikelnummer enthält, und die auch wieder in der Ausgabe des HTML2Spreadsheet Steps auftauchen soll.
Sie können im processingTemplate dann grob folgendes machen, um eine Spalte "SKU" mit dieser Artikelnummer hinzuzufügen:
${row.addCol("SKU", inputRow.get("meinSKUSpalte") )}
Inputs
Das sind die Optionen, mit denen man den Step konfigurieren kann.
Name | Datentyp | Beschreibung | Pflichtfeld | Werte |
---|---|---|---|---|
input | OBJECT | Die DATEI oder der SPREADSHEET, der den zu parsenden HTML-Code enthält. (Für SPREADSHEET müssen Sie eine Spalte auswählen, die den HTML-Code enthält). | Ja | |
spreadsheetHTMLColumn | STRING | Wählen Sie die Spalte mit dem HTML Inhalt aus. | Nein | |
processingTemplate | STRING | Parsing-Skript in der Freemarker-Syntax zur Verarbeitung der extrahierten Elemente, um das Ausgabe-Spreadsheet zu erstellen. Das Skript wird auf jedes Eingabeelement angewendet (z. B. auf jede Zeile eines SPREADSHEET). Verwenden Sie die Freemarker-Funktion selectHTML(), um Elemente auszuwählen (z. B. selectHTML('a'), um alle Links auszuwählen). | Ja | |
baseUri | STRING | Eine Url, die allen relativen Links auf der HTML-Seite vorangestellt wird, um den richtigen absoluten Link zu erhalten. | Nein | |
sourcefileCharset | STRING | Der Zeichensatz der HTML-Quelldatei. Standard: ISO-8859-1 | Nein |
|
Outputs
Das sind die Ergebnisse des Steps, die von nachfolgenden Steps, nach der Ausführung verwendet werden können.
Name | Datentyp | Beschreibung | Pflichtfeld | Werte |
---|---|---|---|---|
output | SPREADSHEET | Das resultierende SPREADSHEET für die weitere Verarbeitung. | Ja |