Beschreibung über Link abrufen?

Hallo,

einer unserer Lieferanten übermittelt keine Beschreibung, sondern jeweils einen Link auf seinen Shop mit der Beschreibung.

Wie kann ich diese Daten je Artikel abrufen und verarbeiten?

Beispiele:

http://shop.ccm-sport.de/artikel,ccm,de/111410,Di2-Batterieladegeraet-ohne-Kabel?pVariante=111410

http://shop.ccm-sport.de/artikel,ccm,de/111391,Dura-Ace-9s-Lenkerendschalthebel?pVariante=111391


Besten Dank vorab!

Mit dem SpreadsheetURLDownload könnte man diese URLs abrufen.

Um bestimmte HTML-Fragmente aus dem Ergebnis zu extrahieren könnte man den HTML2Spreadsheet Step verwenden.

PS. Bei den Veloconnect Steps können sie den Inhalt der Url auch zusätzlich abrufen lassen. Aktivieren sie dazu einfach die Option "General Informations" unter Additional Content.


image

Im Ergebnis Spreadsheet wird dann am Ende eine zusätzliche Spalte (ItemInformationGeneralContents) mit dem Inhalt angefügt.


Hi und danke für die Info,

aber sobald ich "Gerneral Informations" anklicke funktioniert das in den Vorschaufenstern, jedoch nicht wenn ich den Flow durchlaufen lasse - hier bekomme ich die Meldung:

WARNING:Error row #1: Error writing to database in row 1 (identifier: null): Datastore record is too large (identifier: 590020). Maximum payload size of 200.0 kB exceeded.

Nach 11 Zeilen bricht er dann auch ab...

Hallo bikeavenue,


die Datensätze im Datastore sind auf max. 200 kB pro Datensatz begrenzt. Sie müssten die Datensatzgröße vor dem/ oder im DatastoreWriter Step reduzieren.


Die Ursache für die großen Datensätze ist wahrscheinlich der Inhalt der ItemInformationGeneralContents Spalte. Da CCM eine URL liefert, die das Produkt im Shop verlinkt wird der gesamte Quelltext der Artikelseite heruntergeladen.

image


Da sie wahrscheinlich nur an einem kleinen Teil der Seite interessiert sind, können sie versuchen den restlichen Teil durch Suchen / Ersetzen oder Regex zu entfernen. Das ginge technisch mit regulären Ausdrücken und Freemarker direkt im SpreadsheetMapper oder mit dem oben erwähntem HTML2Spreadsheet Step. .


Hi, ich komme hier leider nicht weiter.
Ich weiß es sind die li (also Listenelemente) innerhalb des <div class="artikel_langtext"> und bin zumindest soweit das ich die Seiteninhalte per SpreadsheetURL Download bekomme.
Nur stehe ich leider völlig auf dem Schlauch wie ich im HTML2Spreadsheet das processingTemplate formulieren muss im die li Elemente zu bekommen... hat jemand einen Tip für mich?

Angenommen der HTML Content sieht ungefähr so aus:

<div class="artikel_langtext">
 <li>foo</li>
 <li>foo2</li>
</div>

Dann könnte man folgendes ProcessingTemplate im HTML2Spreadsheet verwenden, um an die <li> Elemente zu kommen, darüber zu iterieren und diese z.B. als eine komma-getrennte Liste auszugeben:


<#assign row = target.addRow()>
<#assign liElements = selectHTML("div.artikel_langtext li")/>
<#assign row = target.addRow()>

<#assign newDescription>
	<#list liElements as li>
		${li.text()}<#sep>,</#sep>
	</#list>
</#assign>

${row.addCol("liElements", newDescription!)} 

Ausgabe sähe dann so aus:

image


Hallo, also erst mal dank - das funktioniert super :)


Ich würde gerne noch eine zweite Info auslesen, verstehe aber ehrlich gesagt nicht wie das funktioniert.

Im Quelltext der Seite taucht das so auf - also ein div mit dem namen artikel_eannummer:

<div class="artikel_eannummer">EAN Nummer:&nbsp;8032758979491</div>


Wie kann ich den Inhalt des div auslesen?

Ein paar praktische und einfache Beispiele in der wiki wären wirklich hilfreich...

Hallo Bikeavenue,


im Prinzip funktioniert das ähnlich:

  • Zuerst selektieren sie das div Element mit: <#assign ean = selectHTML("div.artikel_eannummer")/>
  • Dann können sie eine neue Spalte "EAN" hinzufügen: ${row.addCol("EAN", ean[0].text()!)}


Das gesamte Template sollte dann wie folgt aussehen:

<#assign row = target.addRow()>
<#assign liElements = selectHTML("div.artikel_langtext li")/>
<#assign row = target.addRow()>

<#assign newDescription>
	<#list liElements as li>
		${li.text()}<#sep>,</#sep>
	</#list>
</#assign>

${row.addCol("liElements", newDescription!)}

<#assign ean = selectHTML("div.artikel_eannummer")/>
${row.addCol("EAN", ean[0].text()!)}


Wir versuchen in der Dokumentation des HTML2Spreadsheet Steps noch einige Beispiele einzufügen.