Amazon-Produkt von Amazon.de auslesen [OpenSource]

    • VB.NET
    • .NET (FX) 1.0–2.0

    Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von nikexo.

      Amazon-Produkt von Amazon.de auslesen [OpenSource]

      Hi liebe Community,

      ich habe ein Programm geschrieben, welches einen Amazon-Produktlink benötigt, um anschließend den Produktnamen und dessen Preis anzuzeigen.
      Das funktioniert bei "normalen" Produkten (ohne Auswahl wie z.B. bei SD-Karten die Speichergröße) auch ganz gut.

      Wenn es jedoch ein Produkt mit Auswahl ist, wird der Preis leider nicht immer ermittelt.
      Das liegt daran, dass der HTML-Code dort etwas anders aufgebaut ist und die Such-Strings immer anders aussehen.

      Falls jemand Interesse an diesem Projekt hat, siehe Anhang.
      Der Quellcode ist komplett kommentiert.

      Also wer darin einen Nutzen sieht, kann sich das Projekt aus dem Anhang besorgen.

      Das GUI wurde mit viel Liebe erstellt :love:

      Die, die es mal getestet haben, können mir auch gern mal eine Rückmeldung geben, bei welchen Produkten es z.B. nicht funktioniert :)


      Der Gedanke dahinter war eine Einkaufsliste.
      Ich habe eigentlich immer die selben Produkte, die ich für bestimmte Programmiervorhaben kaufe.
      Bei Amazon/ Ebay usw. ändert sich der Preis durchaus täglich.
      Mit solch einer Software kann man direkt sehen, was der Artikel kostet, da sich der Produktlink (bei Amazon zumindest) nicht verändert.

      Screenshot


      Changelog
      Spoiler anzeigen

      Update [v1.0.0.4]
      • neues Suchmuster für Preis hinzugefügt
      • Anführungszeichen werden übersetzt
      • übersichtlicher strukturiert

      Update [v1.0.0.3]
      • neues Suchmuster für Preis hinzugefügt
      • neue Icons hinzugefügt

      Update [v1.0.0.2]
      • Drag'n'Drop von Links für die Link-Textbox
      • übersichtlicher strukturiert

      Update [v1.0.0.1]
      • 3Fach-Klick in Textboxen markiert den gesamten Text
      • Anzeige der Kundenrezensionen
      • Anzeige der Bewertung (x von 5 Sternen)
      • Leerzeichen und Umlaute werden nun übersetzt
      • übersichtlicher strukturiertUpdate [v1.0.0.2]
      • Drag'n'Drop von Links für die Link-Textbox
      • übersichtlicher strukturiert


      Grüße
      TRiViUM
      Dateien

      Dieser Beitrag wurde bereits 19 mal editiert, zuletzt von „TRiViUM“ ()

      Den Quelltext der Seite zu parsen ist eigentlich ganz okay, aber hat auch ein paar Nachteile
      • ändert sich etwas auf der Seite funktioniert das Auslesen nicht mehr
      • dauert lange, da die ganze Seite geladen werden muss
      ...

      Größere Seiten bieten deshalb API's an.
      Die sind recht komfortabel und bieten auch mehr als nur den Preis.
      Kannst du dir ja mal anschauen github.com/aws/aws-sdk-net

      Bzgl. der Auswahl könntest du ja abfangen:
      Wenn Auswahl,
      dann benutze nicht den normalen Preis, sondern suche an einer anderen Stelle im Quellcode :)

      TRiViUM schrieb:

      Das GUI wurde mit viel Liebe erstellt
      Frisch verliebt verzeiht man alle Fehler und Unzulänglichkeiten ;)

      Ich habe nur 2 Minuten getestet und da bin ich für meinen Geschmack zu häufig angeeckt.

      Trotz Eingabe eines neuen Links bleibt der alte Artikel erhalten.
      Drag&Drop für den Link fehlt.
        ausfiltern!
      Triple-Click zur Voll-Selektierung der Textboxen fehlt.

      Mit der Verwendung des Amazon-Logos wäre ich aus rechtlichen Gründen vorsichtig (falls du das Programm verteilst).
      --
      If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
      --
      an so etwas habe ich gar nicht dran gedacht...

      auf dem ersten Blick sieht mir das auch ziemlich Umfangreich aus, was die Funktionen betrifft.

      Also wäre das Fazit folgendes:
      • Bei einem Großen Online-Shop wie Amazon gibt es in vielen Fällen API's für solche Funktionen
      • Bei eher kleineren Online-Shops ohne API's kann man den Quellcode parsen (Nachteil: Ändert sich der Quellcode, können Probleme beim parsen auftreten und das Parsen selbst dauert lange)

      Zu den Auswahl-Preisen:
      genau, so hatte ich mir das auch gedacht.
      Ist nur Aufwändig allein :D

      Evtl. schaue ich mal, ob ich es auch hinbekomme, jede verfügbare Auswahl und dessen Preis zu parsen.

      Danke für die Rückmeldung/ Infos :)

      petaod schrieb:

      Frisch verliebt verzeiht man alle Fehler und Unzulänglichkeiten

      ^^

      petaod schrieb:

      Trotz Eingabe eines neuen Links bleibt der alte Artikel erhalten.

      Das konnte ich bei mir noch nicht feststellen, wüsste jetzt spontan auch nicht, wieso es passiert.

      petaod schrieb:

      Drag&Drop für den Link fehlt.

      Daran kann man arbeiten :)

      petaod schrieb:

        ausfiltern!

      was meinst du genau mit "ausfiltern"? Ich ersetze die Umlaute doch schon :whistling:

      petaod schrieb:

      Triple-Click zur Voll-Selektierung der Textboxen fehlt.

      habs gerade mal getestet, liegt wohl daran, dass die Textboxen "ReadOnly" sind...

      petaod schrieb:

      Mit der Verwendung des Amazon-Logos wäre ich aus rechtlichen Gründen vorsichtig (falls du das Programm verteilst).

      Das Logo ist hierher, und da heißt es, für für den privaten Gebrauch benutzbar.
      Jetzt ist der Verweis zum Author erfolgt, und Geld damit verdienen will ich ja nicht :)

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „TRiViUM“ ()

      TRiViUM schrieb:

      Das konnte ich bei mir noch nicht feststellen, wüsste jetzt spontan auch nicht, wieso es passiert.
      Ich hatte von einem Titel aus auf einen anderen geklickt und dann dessen Link eingetragen (und den Button geklickt).
      Der alte Artikel blieb erhalten mit Beschreibung und Preis.

      TRiViUM schrieb:

      Ich ersetze die Umlaute doch schon
      Umlaute hat er bei mir auch richtig angezeigt, aber die NBSPs als Code und nicht als Space.
      Machst du das Ersetzen von Hand? Verwende URL-Decode!

      TRiViUM schrieb:

      liegt wohl daran, dass die Textboxen "ReadOnly" sind
      Ich hab's auch in der Link-Textbox nicht geschafft.
      Ausserdem würde ich das auch in ReadOnly-Boxen wollen, wenn ich den Komplettext rauskopieren will.
      --
      If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
      --

      petaod schrieb:

      Ich hatte von einem Titel aus auf einen anderen geklickt und dann dessen Link eingetragen (und den Button geklickt).
      Der alte Artikel blieb erhalten mit Beschreibung und Preis.
      Das hängt dann wohl mit Amazon zusammen, wie die ihre Links aufbauen, wüsste nicht, was ich da ändern kann.

      petaod schrieb:

      Umlaute hat er bei mir auch richtig angezeigt, aber die NBSPs als Code und nicht als Space.
      Aah, das hab ich vergessen :rolleyes:

      petaod schrieb:

      Ich hab's auch in der Link-Textbox nicht geschafft.
      Hab ich jetzt gerade auch fesgestellt. Geht nur, wenn der Text keine Leerzeichen enthält.Wie kann man das mit dem Triple-Click realisieren?

      petaod schrieb:

      Ausserdem würde ich das auch in ReadOnly-Boxen wollen, wenn ich den Komplettext rauskopieren will.
      So war auch mein Gedanke :)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TRiViUM“ ()

      TRiViUM schrieb:


      petaod schrieb:

      Ich hab's auch in der Link-Textbox nicht geschafft.
      Hab ich jetzt gerade auch fesgestellt. Geht nur, wenn der Text keine Leerzeichen enthält.Wie kann man das mit dem Triple-Click realisieren?


      Mit einem Timer und dem Textbox Klick event.
      Wenn du einmal drauf tippst läuft der timer circa 1-2 sekunden (nur beim 1. klick wenn x=0 ist wird gestartet) nach dem ablauf wird X auf 0 gesetzt.
      bei jedem Klick wird dann x um 1 erhöht. falls x 2 ist (3x geklickt) textboxname.selectAll
      Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
      Hi,
      ich habe mit deinem Projekt mal ein bisschen rumgebastelt und den dritten Fall, also bei zum beispiel den SDKarten, implementiert:

      VB.NET-Quellcode

      1. Dim Muster_Preis3 As String = "<span class=""a-color-price price3P a-text-bold"">"
      2. [...]
      3. Private Sub GetAmazonPrice()
      4. Try 'Versuchen, den normalen Preis auszulesen
      5. Dim str As String = AmazonPageCode 'str den HTML-Code zuweisen
      6. str = str.Remove(0, str.IndexOf(Muster_Preis1)) 'alles vor dem Muster löschen
      7. str = str.Remove(0, Muster_Preis1.Length) 'das Muster selbst löschen
      8. str = str.Remove(str.IndexOf("<")) 'alles nach dem Wert löschen
      9. Invoke(Sub() tbx_Preis.Text = str & " €") 'Preis anzeigen
      10. Catch ex As Exception
      11. Try 'Versuchen, den Angebots-Preis auszulesen
      12. Dim str As String = AmazonPageCode 'str den HTML-Code zuweisen
      13. str = str.Remove(0, str.IndexOf(Muster_Preis2)) 'alles vor dem Muster löschen
      14. str = str.Remove(0, Muster_Preis2.Length) 'das Muster selbst löschen
      15. str = str.Remove(str.IndexOf("<")) 'alles nach dem Wert löschen
      16. Invoke(Sub() tbx_Preis.Text = str & " € (Angebot)") 'Preis anzeigen
      17. Catch ex2 As Exception 'Mit Auswahl
      18. Dim str As String = AmazonPageCode 'str den HTML-Code zuweisen
      19. str = str.Remove(0, str.IndexOf(Muster_Preis3)) 'alles vor dem Muster löschen
      20. str = str.Remove(0, Muster_Preis3.Length) 'das Muster selbst löschen
      21. str = str.Remove(str.IndexOf("<")) 'alles nach dem Wert löschen
      22. str = str.Trim.Substring(3).Trim 'Gescheit Formatieren
      23. Invoke(Sub() tbx_Preis.Text = str & " €") 'Preis anzeigen
      24. End Try
      25. End Try
      26. End Sub


      LG
      Twometer
      An Error 404 occurred while loading signature...
      @Twometer
      Danke für Deine Hilfe!
      Habe es dem Projekt hinzugefügt :)

      @petaod

      Update [v1.0.0.1]
      Folgende Funktionen sind hinzugekommen:
      • 3Fach-Klick in Textboxen markiert den gesamten Text
      • Anzeige der Kundenrezensionen
      • Anzeige der Bewertung (x von 5 Sternen)
      • Leerzeichen und Umlaute werden nun übersetzt
      • übersichtlicher strukturiert :)

      Update [v1.0.0.2]
      • Drag'n'Drop von Links für die Link-Textbox
      • übersichtlicher strukturiert :)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „TRiViUM“ ()

      Pro:
      - das Design ist schön

      Kontra:
      - es lädt keine Daten von DVD-Titeln herunter, mit der Frage,ob dies ein Amazon-Link ist
      - nichts gegen das gute Programm, aber ich sehe keinen richtigen Sinn darin. Wenn ich den Link von Amazon kopiere habe ich ja bereits diese Informationen. Oder war dies anders gedacht? :?:
      :thumbup:
      @Hilfe0987
      Danke erstmal für Deine Rückmeldungen.
      Bei den DVD-Titeln schaue ich mal nach, ob ich da einen neues Suchmuster finde, damit auch dies funktioniert.
      Kannst Du mir mal den besagten Link mitteilen, wo das Programm meckert, es sei kein Amazon-Link?

      Ich habe ein Link von einer Avatar-DVD.
      Hier wird der Preis beim ersten laden nicht angezeigt, jedoch beim 2ten, warum auch immer...

      Hilfe0987 schrieb:

      Oder war dies anders gedacht?
      Das Projekt dient als Grundlage für eine Art Preisliste.
      Ich habe das Programm für mich bereits so umgeschrieben, dass es eine Textdatei einliest (pro Zeile ein Amazon-Link) und dann den Produktnamen und dessen Preis einer ListView hinzufügt.
      Preise von Amazon ändern sich durchaus täglich, und da ich meist immer die selben Sachen für Elektro-Projekte bestelle, ist es schon kompfortabel, sich alle Preise auf einen Knopfdruck anzeigen zu lassen :)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „TRiViUM“ ()

      Tool funktioniert ohne Probleme.
      Das GUI finde ich ausserdem sehr schön.

      Ob ich finde, dass das Programm wirklich nützlich ist?
      Naja. Ich denke man ist schneller wenn man direkt über den
      Link auf die Seite zugreift. Trotzdem ist es ein nettes Tool.

      Danke fürs bereitstellen! :)
      @nikexo
      Danke dass du es getestet hast.

      Zum Thema nützlich:
      So, wie das Programm im Projekt zu Verfügung steht, ist es wohl eher nicht nützlich.
      Aber, es ist ja nur ein Denkanstoß, um es z.b. so zu modifizieren, dass eine Liste von Amazonprodukten (Produktlinks) eingelesen, und dessen Preise aufgelistet werden.
      Somit kann man mit nur einem Klick sehen, was 100 verschiedene Artikel kosten.
      Denn bei Amazon ändern sich die Preise durchaus täglich.

      Gern ^^