Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Und zwar geht es mir um folgendes:
Ich habe in einer Variable eine komplette Website(html) gespeichert.
Bei dieser Website handelt es sich um eine Detailseite für ein Produkt.
Nun ist meine Frage,
wie komme ich an den Preis für das Produkt?
Normalerweise:
Mit pattern-matching nach '€' suchen und fertig, aber:
Wie sollte ich den vorgehen, wenn mehrere Preise gelistet werden?
z.B. Aktionspreis / Preis per kg/Liter usw...
Oder:
Wenn auf der Detailseite des Produktes noch Produktempfehlungen gelistet werden?
Dann kommen ja noch mehr 'Strings mit einem €' vor.
Gibt es dazu ne Klasse? Oder kennt jmd eine Richtung in die denken müsste?
Ist es denn so dringend notwendig das ganze in Java zu lösen? In html könntest du mit "getElementById" oder "getElementByName" auf die entsprechende Node zugreifen.
Ähnlich könntest du das schon auch mit deiner variable machen, du suchst in ihr nach dem entsprechenden html Tag, das nur einmal vorkommen darf. (z.B. id="preis")
Aber verlassen würde ich mich darauf nicht, da sich ein html file ja ändern kann oder selbiges in einem kommentar stehen würde.
Ps. Für gewöhnlich stehen die Inhalte von html seiten in einer Datenbank, denke mal du gehst da sehr seltsame wege das zu lösen. Was versuchst du denn überhaupt damit zu erreichen? Es gibt auch automationsprogramme (z.B. Sikuli) die nach bildern oder id´s in webseiten suchen können. (wäre auch eine Richtung in die du denken könntest)
Das war jetzt mal viel brainstorming von mir, also bitte nicht gleich verurteilen
Die Produktseiten werden ja wahrscheinlich alle die gleiche Standart html Seite haben nur mit unterschiedlichen Daten oder?
Vielleicht gibt es etwas einmaliges was den "Hauptpreis" in deinem HTML code auszeichnet.
Erstmal danke für die Top-Antwort!
Ich greife ja mit meinem Crawler auf fremde Online Shops zu.
Auf den Teil mit "getElementBy" würde ich mich nicht verlassen,
angenommen das Verfahren soll auf 10 verschiedene Produkt bei 10 verschiendenen Shops angewendet werden=>Hat jeder sowieso anderen Quellcode.
Auf die DB habe ich keinen Zugriff.(Ich greife ja auf andere Websiten zu.)
Vielleicht:
Könnte ich einfach mehrere verschiedene Fälle erstellen und dann schauen welcher Fall zutrifft?
z.B.
Wenn 'Liter' im String, dann nicht.
Wenn 'kg' im String, dann nicht.
usw..
Das hilft schon mal weiter. Du müsstest deinen Code natürlich für jede Seite individuell anpassen, genau so wie jede dieser Seiten individuellen Code beinhaltet. Wenn du auf Werte abprüfst die nicht enthalten sein dürfen wirst du in Jahren nicht fertig, von daher wohl kein guter Ansatz.
Mehr Infos
Was möchtest du mit deinem Programm erreichen? So etwas wie einen Preisvergleich auf verschiedenen Seiten?
Wie sieht der html code in deiner Variable aus? Bist du auf Java angewiesen? Was hast du bereits versucht?
Ja stimmt. eigentlich ist die Logik dahinter die eines "Preisvergleichs".
Wie wäre folgende Vorgehensweise:
1. Ich gehe jeden html-tag durch.
2. Sobald der gesamte Inhalt des html-tag´s eines dieser Muster entspricht: "x.yz€" , "x,yz€" , "x.yz €" oder "x,yz €" => match
Sollte man an diesen Ansatz arbeiten oder doch was ganz anderes überlegen?
Ich sehe kaum eine Lösung auf diese Art und Weise ein zuverlässiges Programm zu schreiben.
Ich würde mich auf bestimmte Anbieter beschränken und auf die dementsprechenden html Tags gehen.
Natürlich kannst du versuchen die verschiedenen Fälle abzuprüfen, aber ich bin mir sicher da wirst du immer wieder auf Sonderfälle stoßen.
Dieses Projekt ist zum scheitern verurteilt. Bei nur einer Seite könnte man ja noch sagen "Ok, wenn die sich mal ändert, dann ändere ich meine App". Aber bei zig verschiedenen Seiten und die auch noch von Shops, welche Ihren COntent ja dynamisch erzeugen und somit eh bei jedem Produkt andere Formate haben, da kommst du ja gar nicht mehr hinterher deine App an deren Änderungen anzupassen.
Vor allem ist es so, da die Idee ja schon längst nicht mehr neu ist, dass diverse online shops mittlerweile ihre Preise als Bild in die Seite integrieren !