Artikelpreise aus Onlinekatalog in Rechnungsprogramm oder .xlsx

  • Moin zusammen,

    Ich arbeite in einem kleinen Familienbetrieb der sich auf Heizung und Sanitär (Gas, Wasser, Scheisse) spezialisiert hat.

    Beim Laminat/PVC Thema letztens konnte ich leider nicht viel beitragen, vielleicht ja ein anderes Mal.

    Bei mir geht es heute um unser Rechnungsprogramm und die (leidigen)Tagespreise unserer Lieferanten.

    Zur Zeit öffne ich den Onlinekatalog (nicht Shop), suche den aktuellen Preis, übertrage ihn in unser Rechnungsprogramm und speichere den aktualisierten Artikel. Bis zum nächsten Mal, auf Wiedersehen.

    Jetzt überlege ich mir etwas mit Autoit zu realisieren bzw. zu automatisieren. Es handelt sich um etwa 200 Artikel die oft gebraucht werden. Der Rest wäre leicht per Hand machbar.

    Glaskugelalarm: Ich schuster mir jetzt in tagelanger Arbeit etwas zusammen, mit Send () und Sleep () poste es hier und dann kommt in paar Minuten ein sowas von besseres script.

    Es ist erleuchtend aber zugleich auch frustrierend. Deshalb frage ich diesmal lieber zuerst.

    Ihr braucht mehr Angaben? Klar! Aber bevor ich jetzt zu tief ins Detail gehe. Wie seht Ihr das? Wäre es mit relativ geringem Aufwand machbar oder vermutlich doch eher zu aufwändig.

    Natürlich vorausgesetzt es verstösst nicht gegen: Automatisierung von Webseiten

    Das Rechnungsprogramm verfügt über .xlsx .csv .txt Importmöglichkeiten falls dies etwas nützen sollte.

    Der Import könnte ja theoretisch gut von Hand gehen wenn die .xlsx Liste der Artikel aktuell wäre.

    Besten Dank und einen schönen Nachmittag.

    Grüsse Swiffer

    Sauber bleiben.

  • High Swiffer,

    hast Du die Artikel in deiner WaWi auch schon angelegt? Wenn ja - der Import in Deine WaWi ist weniger das Problem, das lässt sich über csv meist simpel realisieren.

    Bleibt das Auslesen aus dem Netz.

    Kannst Du bei deinem Grosshändler keine Liste anfordern?

    Anyway ich habe wir die Seite mal als HTML Text angesehn, da stehen Preis und Artikelnummer ja drin. Nun könnte man auf die Idee kommen, diesen als TXT datei speichern, dann nach den Artikelnummern suchen und den Presi suchen. Dazu muss man aber erstmal einen Zusammenhang zwischen Art Nummer und Preis herstellen können.

    product-itemnumber-desc">Artikel-Nr.: 234057<br>Farbe

    hier ist klar wie man die Artikelnummer herausfischt 9 Zeilen weiter steht der Preis. Nur ob das immer 9 Zeilen sind? Das obliegt Deinem Fleis diesen Zusammenhang zu finden.

    Die Artikel, deren Preis Du haben willst --> schreibst Du in eine ini (dann must Du nicht immer im Source ändern) usw

    LG

    Peter

    PS.: Bist Du aus der Schweiz?

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Klingt eigentlich zu offensichtlich :/ .

    Hast Du mal angefragt, ob es den Katalog in einer maschinenlesbaren Datei (z.B. XML/CSV) gibt.

    Normalerweise haben Lieferanten ja ein Interesse, dass möglichst viele Kunden bestellen.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Meine Erfahrung:

    Beim Lieferanten wird in die Runde gefragt, wie man denn eine Preisliste verwalten kann.

    Irgendein Spezi sagt dann, er kann da was mit Excel machen. Und dann passiert das Schlimme: Er will es "schön" machen. Mit Pivot Tabellen und Makros ohne Ende.

    Einziges Ziel: Einfaches Einpflegen von Änderungen. Aber kein Gedanke daran eine schnittstellenbasierte Ausgabe zu schaffen.

    Ich kotze da auch immer ab. Wir bekommen von einem Lieferanten immer solche rotzigen Makroverseuchten Excel Tabellen. Da darf ich dann immer erst mal alle Abhängigkeiten von Kreuz und quer auf linear umschlüsseln.

    Für sowas ist wirklich CSV wesentlich besser geeignet oder JSON - aber Excel? <X:thumbdown:

  • Die Infos aus der HTML-Seite auszulesen ist meiner Meinung nach gar nicht mal so das Problem.
    Es ist halt HTML und muss entsprechend behandelt werden.
    Hab das mal versucht:

    Für mich ist eher das Problem an den vollständigen Quelltext (automatisiert?) zu kommen.
    Das ist über Cloudflare gehostet, und man kommt ohne weiteres nicht per InetGet/InetRead/curl/wget an den Quelltext ran.

    Eventuell könnte man per Browsersteuerung ala Webdriver da was basteln.

  • Hi Swiffer ,

    lass dich bitte nicht verunsichern oder frustrieren von den "besseren" Skripten die dir hier angeboten werden. Ist doch okay wenn du noch am Anfang stehst und es ist auch gut, dass du als Hilfesuchender entsprechende fundierte Vorschläge bekommst - alles andere wäre doch Quatsch aus meiner Sicht - also alles gut 😇 .

    Im Falle das ich dich richtig verstehe, kann man dies mit dem WebDriver (au3WebDriver, mein Tutorial dazu kommt leider erst in ein paar wenigen Wochen), leicht erledigen.
    Also ich rekapituliere mal was ich verstanden habe:

    Du befindest dich auf dieser Seite und kopierst dir die Preise händisch (oder eben mit Send(), Sleep() etc.) raus?!


    Welche Angaben brauchst du außerdem noch, um die Preise in dein Rechnungsprogramm eindeutig zuzuordnen?
    Preise, Artikelbezeichnung, Artikel-Nr. oder was man sonst so auf der Webseite sieht?

    Du trägst diese derzeit in dein Rechnungsprogramm ein und möchtest dies in Zukunft gern über einen CSV Import machen.
    Das heißt wenn du die Daten in einer Tabelle (in einem Array hast) und sie als CSV speicherst, kannst du sie importieren, richtig?

    Im Moment sehe ich 122 Produkte auf 3 Seiten verteilt. Also alle Infos auf Seite 1 ziehen, dann über die Pagination auf Seite 2 weiter gehen und dort die Daten ziehen, dann auf Seite 3 etc. => auch easy, wenn es "nur" das ist. Die Daten sammeln, zusammen führen und bspw. über Array als CSV ablegen. Okay.

    Also auf dem ersten Blick, kann man über den folgenden XPath //div[@class="product-price "] die Preise bspw. heraus filtern (über den WebDriver => automatisch als Array abgelegt).

    "

    Egal, ich verliere mich gerade 😅 .

    Also Fazit:
    Ja es wäre mit wenig Aufwand machbar. Wenn du mir sagst welche Daten du konkret brauchst, am besten mit Screenshots, dann kann ich dir das wahrscheinlich sogar fertig machen 🤝 . Wichtig ist auch welchen Browser du benutzt? Ich empfehle Chrome oder Firefox. Andere gehen auch, doch das ist für mich aufwändiger.

    Viele Grüße
    Sven

  • Vielen Dank für Eure Antworten und Bemühungen!

    Peter S. Taler

    Die Artikel sind im Rechnungsprogramm schon hinterlegt. Ich kann vom Lieferanten eine Liste anfordern. Bekomme dann meist ein Excel File mit 200k Artikeln und muss die benötigten irgendwie raus filtern. Das wäre ja an sich kein Problem aber ich möchte die nicht jede Woche belästigen ich sollte dann mal wieder die aktuelle Liste mit den gerade aktuellen Preisen haben. Ich werde mal eine Liste der benötigten Artikel erstellen. Ja, ich bin aus der Schweiz.

    Musashi

    Ich habe angefragt und bekomme auch eine .xlsx Liste. Aber die ist in paar Tagen wieder nicht mehr aktuell, zumindest der Preis.

    BugFix

    Es sieht echt danach aus. Ändern bei Euren Lieferanten die Preise nicht so oft? Sonst steht Ihr ja vor einem ähnlichen Problem.

    AspirinJunkie

    Wieder mal gezaubert. Werde ich morgen gerne testen.

    Edit: SOLVE-SMART

    Auf ein paar Wochen komm es nicht an. Das könnte ich gut warten.

    Ich brauche die Artikelnummer um die Preise eindeutig zuordnen zu können. Am besten die "Artikel-Nr des Herstellers". Die Normale geht aber auch.

    Bis jetzt habe ich es erst mit Excel versucht aber ja, CSV kann das Programm auch importieren. Ich benutze Firefox.

    Vielleicht sollte ich dem Lieferanten erst mal noch eine Nachricht schreiben ob er etwas wie eine Schnittstelle anbietet?

    Oder ein File das online abrufbar ist? (CSV)

    Sauber bleiben.

    2 Mal editiert, zuletzt von Swiffer (13. Januar 2023 um 22:46) aus folgendem Grund: Edit:

  • [...] Eventuell könnte man per Browsersteuerung ala Webdriver da was basteln. [...]

    Ja, ganz genau 😀 . Aber cooles Skript AspirinJunkie , schaue ich mir mal genauer an, die Variante habe ich so noch nicht probiert. Wahrscheinlich weil i.d.R. mit cURL oftmals alles machbar ist und ansonsten nutze ich WebDriver.

    @Alle
    Ich finde es toll, dass es hier so viele unterschiedliche Ansätze und Vorschläge gibt, die von euch kommen und alle ihren Wert haben und zielführend sind 👍 .
    Chapeau!

    Viele Grüße
    Sven

  • [...] Ich brauche die Artikelnummer um die Preise eindeutig zuordnen zu können. Am besten die "Artikel-Nr des Herstellers". Die Normale geht aber auch. [...]

    Du meinst diese Artikel-Nr des Herstellers, richtig?


    Dazu müsste jedes Mal ein Seitenwechsel erfolgen, um den Wert zu bekommen. Geht auch, aber macht die ganze Sache doch recht langsam.
    Allerdings stört dich das ggf. nicht? Kann ja headless (versteckt) im Hintergrund laufen und dir irgendwann deine Tabelle (Array) ausgeben, richtig?

    Also konkret: "Die Normale geht auch"!? Brauchst du die des Herstellers wirklich oder nicht?

    Viele Grüße
    Sven

  • Sorry Swiffer, ich muss nochmal fragen:
    Die normale ist doch aber nicht eindeutig, richtig? Dafür brauchst du doch die Ausführung zusätzlich noch, oder?


    Viele Grüße
    Sven

  • Gut, dass Du nochmal fragst.

    Ja die Ausführung bräuchte ich dann auch. Und bei der Farbe gibt es auch noch Unterschiede.

    Also in etwa so: 234057(Artikel) xxx(Farbe) 242(Ausführung)

    Deshalb bevorzuge ich die Herstellernummer. Aber bei den meisten der Artikel die ich viel brauche reicht die Artikelnummer und ggf. noch die Farbe.

    Sauber bleiben.

  • Gut, dass Du nochmal fragst. [...]

    Habe ich mir doch gedacht 🤣 .

    Wie genau trägst du das in dein Rechnungsprogramm ein?
    Also mir geht es konkret um die Syntax, den String der im Array (in der Tabelle) stehen soll?

    In irgendeiner Art wie hier gezeigt oder am Ende nur der Preis? Naja, ist jetzt erstmal noch egal, kann man dann auch noch anpassen.
    Ich mache erstmal Schluss für heute. Angenehme Nacht euch allen 😴 .

    Viele Grüße
    Sven

  • Bezüglich WebDriver.

    Werft mal einen Blick in das Wiki des engl. Forums zum Thema WebDriver. Dort wird der WebDriver Examples Thread verlinkt.

    In meinem DSGVO/GDPR Beispiel ziehe ich von einer Website die über mehrere Seiten verteilten Strafen.

    Das Beispiel ist umfangreich dokumentiert :)

    Bei Bedarf kann ich morgen den genauen Link posten

    Link: https://www.autoitscript.com/forum/topic/20…comment=1446234

  • Sehr gut water, Danke 🤝 . Dein Beispiel schaue ich mir mal genauer an 👍 .

    Swiffer:
    Hier mal das Array (die Liste) der ersten Seite:

    Jetzt geh' ich aber wirklich ins Bett.

    Viele Grüße
    Sven

  • SOLVE-SMART Moin und Danke für Deinen Einsatz. Es eilt also wirklich nicht. Schlaf ist wichtig :D

    Ich habe jetzt schon ein schlechtes Gewissen Deine / Eure Zeit so beansprucht zu haben.

    Ich kann im beim Import in meinem Programm zuweisen welches Feld vom .csv in welches Feld im Programm kommt.

    Das müsste also nicht mal übereinstimmen. Trotzdem wärs natürlich besser von Anfang an richtig.

    Leider muss ich jetzt offline und kann erst Nachmittags / Abends wieder schreiben.

    Gerne kann ich Dir dann Screenshots der Situation hochladen oder alternativ das Programm senden, dass Du Dir selber kurz ein Bild machen kannst.

    Grüsse Swiffer

    Sauber bleiben.

  • Nochmal so grundsätzlich und angelehnt an BugFix ...

    Immer wieder ist von Excel Tabellen und Macros die Rede. Dazu denke ich mir????????????????

    Im Zeitalter von Virus und CO? In vielen Unternehmen kommen Word und Excel Dokumente (im Mail Programm) genau bis zum Mülleimer. Wo sie auch hingehören!! Egal ob ein Absender seriöser Kunde oder Lieferant ist, Virus und Co kann sich auch ohne sein (wissentliches) Zutun in den Dokumenten einmisten.

    Wir sind doch die WISSENDEN. Wer braucht eine Excel Tabelle zum Einlesen von Daten? Niemand!! Denn 99,99 % der Software können CSV. Das ist universell, vom prinzip simpler Text.

    Warum also MS Formate und ähnlicher Mist (sorry) wenn es einfach auch geht (csv)??? Zumal keiner am Montag kommt und feststellt, das Format habe ich seit gestern geändert?

    Also belästigen wir unsere Lieferanten doch mit CSV "Listen" und lehnen Word Dokumente zugunsten von plain Text oder PDF ab?

    Mut zum Widerspruch

    LG

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Habt Ihr in Eurer Firma schon alle Lieferanten überzeugen können auf CSV, JSON oder whatever umzustellen?

  • water Wenn Du mich damit meinst.... Ja. Wir nehemn keine Word, Excel usw. Dateien an. Grundsätzlich und überhaupt nicht. Das klappt schon. Nervig ist nur dass man in vielen Fällen immer wieder aufs neue daran erinnern muss...

    Aber ja - wir bekommen das hin. Schade nur dass wir uns häufig dabei alleine fühlen, anderen scheint das egal zu sein...

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Peter S. Taler Wir werden in Zukunft versuchen auf CSV zu bestehen. Als Kleinbetrieb haben wir einfach nicht so viel Hebel.

    SOLVE-SMART Wie hast Du denn die Screenshot-Gif erstellt?

    Edit:

    Ich habe jetzt mal ein .txt erstellt, die Endung in csv. geändert und ein wenig mit dem Import getestet.

    Wichtig wäre noch zu erwähnen das möglichst der Preis exkl. MwSt. verwendet wird.

    Mit folgender Gliederung habe ich die besten Ergebnisse erhalten:

    Artikelnummer, Verkaufspreis (das wäre Artikelnummer, Farbe, Typ in einem, ohne Abstand)

    Code
    Artikelnummer; Verkaufspreis
    234057100242; 893.00
    234057100242; 893.00
    234057100242; 893.00

    AspirinJunkie

    Das Fenster öffnet sich zwar aber es werden keine Werte eingetragen.

    Sauber bleiben.

    5 Mal editiert, zuletzt von SOLVE-SMART (26. Januar 2023 um 12:13) aus folgendem Grund: Edit: