Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Preis von Propellets.at mittels Parser auslesen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Preis von Propellets.at mittels Parser auslesen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
44 Beiträge 9 Kommentatoren 4.8k Aufrufe 9 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Andreas HaselwanterA Andreas Haselwanter

    Hallo @OliverIO mittlerweile hat sich das aussehen der Homepage geändert und es kommen keine Daten mehr. Vielleicht hat wer Zeit einen neuen REGEX zu schreiben. Wäre mir sehr geholfen.

    MFG

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von
    #32

    @andreas-haselwanter

    ja die seite ist so nicht mehr verfügbar.
    poste bitte nochmal den link auf dem du die preise für deine postleitzahl im browser findest

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    Andreas HaselwanterA 1 Antwort Letzte Antwort
    0
    • OliverIOO OliverIO

      @andreas-haselwanter

      ja die seite ist so nicht mehr verfügbar.
      poste bitte nochmal den link auf dem du die preise für deine postleitzahl im browser findest

      Andreas HaselwanterA Offline
      Andreas HaselwanterA Offline
      Andreas Haselwanter
      schrieb am zuletzt editiert von
      #33

      @oliverio Auf der Seite https://www.propellets.at/aktuelle-pelletpreise?gclid=Cj0KCQjwmtGjBhDhARIsAEqfDEdSui5upGPtPTGp9EGU38qbdT60PFdnv3FVE-iDd6jj8_GiANIVmOsaAksyEALw_wcB
      Für die Region West.
      Wenns gehen würde wär ich total dankbar.

      OliverIOO 1 Antwort Letzte Antwort
      0
      • Andreas HaselwanterA Andreas Haselwanter

        @oliverio Auf der Seite https://www.propellets.at/aktuelle-pelletpreise?gclid=Cj0KCQjwmtGjBhDhARIsAEqfDEdSui5upGPtPTGp9EGU38qbdT60PFdnv3FVE-iDd6jj8_GiANIVmOsaAksyEALw_wcB
        Für die Region West.
        Wenns gehen würde wär ich total dankbar.

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #34

        @andreas-haselwanter

        oh mann.
        Exaktes arbeiten und exakte Angaben sind heute wohl aus der Mode gekommen.
        Du wirfst mir einen Duden hin und sagst, da steht das Wort drin das ich meine.

        Auf der verlinkten Seite sind mehr als 12 Diagramme und Tabelln mit diversen Auswahlmöglichkeiten.
        Du darfst gern auch einen Screenshot machen und einen Kringel um den Wert den du meinst.

        Evtl zu meinem Hintergrund: Ich habe keine Pelletheizung. Eigentlich interessieren mich die Preise für Pellets gar nicht. Erst recht nicht die von Österreich. Ich weiß auch nicht wo ich da genau hinschauen muss. Ich kenne auch keine Fachbegriffe zu diesem Thema. Ich will auch nicht so eine große Seite von oben bis unten durchlesen, damit ich den Inhalt verstehe.
        Das musst du mir schon exakt sagen.
        Aber ich helfe gerne bei Punkten, die andere nicht so können.
        Wenn ich allerdings merke, das man Aufgaben komplett delegiert, dann verliere ich schnell die Lust dran.

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        1 Antwort Letzte Antwort
        0
        • L looxer01

          @oliverio
          super und vielen Dank.
          Ich habe mir erlaubt das Programm etwas zu gestalten, so dass Einstellungen leichter vorgenommen werden können.
          auch die States werden angelegt.
          lG Looxer

          //Author Olivero aus Forumsbeitrag
          //https://forum.iobroker.net/topic/56432/preis-von-propellets-at-mittels-parser-auslesen/22?_=1670064893887&lang=de
          // Angepasst: 03.12.22 Looxer01
          
          //..........................................
          // Einstellungen
          //..........................................
          const dpPrice1 = "javascript.0.Heizung.Pelletspreise.dpPrice1";
          const dpDealer1 = "javascript.0.Heizung.Pelletspreise.dpDealer1";
          const dpPrice2 = "javascript.0.Heizung.Pelletspreise.dpPrice2";
          const dpDealer2 = "javascript.0.Heizung.Pelletspreise.dpDealer2";
          const dpPrice3 = "javascript.0.Heizung.Pelletspreise.dpPrice3";
          const dpDealer3 = "javascript.0.Heizung.Pelletspreise.dpDealer3";
          
          const Abfragemenge = "6000";
          const AbfragePLZ = "65760";
          const Abfrageplan = '0 */2 * * *' ;            // Cron - alle 2 Stunden
          
          
          //..........................................
          // Programm Vorbereitung
          //..........................................
          const fetch = require("node-fetch");
          const cheerio = require("cheerio");
          CreateStates();
          
          //--------------------------------------------------------------------------------------------------------------------
          // Schedule 
          //--------------------------------------------------------------------------------------------------------------------
          schedule (Abfrageplan,function () {
          log("Pelletspeise schedule gestarted","info")
          analyze();
          
          }) // End Schedule
          //..........................................
          // Programmablauf Ende
          //..........................................
          
          
          
          //--------------------------------------------------------------------------------------------------------------------
          // Function Analyze
          //--------------------------------------------------------------------------------------------------------------------
          async function analyze() {
            let text = await getData();
            let $ = cheerio.load(text);
            let price1 = $($(".price-middle:not(.total)")[0]).text().trim();
            //var  price1Total = $($(".price-middle total <span> ")[0]).text().trim();
            //log ("price total " + price1Total
            let dealer1 = $($(".dealer-name")[0]).text().trim()
            let price2 = $($(".price-middle:not(.total)")[1]).text().trim();
            let dealer2 = $($(".dealer-name")[1]).text().trim()
            let price3 = $($(".price-middle:not(.total)")[2]).text().trim();
            let dealer3 = $($(".dealer-name")[2]).text().trim()
          
            setState(dpPrice1,price1);
            setState(dpDealer1,dealer1);
            setState(dpPrice2,price2);
            setState(dpDealer2,dealer2);
            setState(dpPrice3,price3);
            setState(dpDealer3,dealer3);
          } // End Function
          
          
          //--------------------------------------------------------------------------------------------------------------------
          // Function getData
          //--------------------------------------------------------------------------------------------------------------------
          async function getData() {
          var fetchstring = "https://www.heizpellets24.de/pelletpreis-direkt/"+AbfragePLZ+"/"+Abfragemenge+"/1/dt5"
          var bodystring =  "ctl00%24ScriptManager1=ctl00%24MainContent%24OrderProcess_Step_1%24PriceOrderUpdatePanel%7Cctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTTARGET=ctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTARGUMENT=LoadPrices&__LASTFOCUS=&__VIEWSTATE=ZOqYdG%2BFwZ%2BPrH15aLaMOhCzmA140AC7FRQT3yJlHciVxQ48WlVoIAneqpP531uNShrNE4s8pYwrxCbi2Al%2FD78egos7NN8N26Wwp3FQY0QU2BUEUQiUvMfvrw6k4579ZlpA%2BjWBFS2L9gdEqrq%2BNy%2F2FfulD2BLGcSw3dxN2BoDBJ6ZlKMEYhpcwsnrciH0JzSBmCppft1AUYcTCh4bnwEkEqrmCNNc6JWx0jm9kdJIHMlHNVXJg3HujRyj8g75ZwMJVzQQGVljGNVsx6EeMrHhu%2BVgrjM3dMPwV5p485kdwKlPvkhPliUDI3ES2l%2FLcTGvyQIdMULrFFG5TanRnKkRKf40BvCE8Wu233%2Bb5b7dl8vhb8PCOilHtpSvMESCcyrxMvctN2ALlFrLPfV15ydI6aghBWm1dULmXOMINUXu%2BTdc0irIq4qxw3BDYvjCVADCXio9a5syz5qcdori2HzaaTpFD1X5V2h8L3jG%2FRSnU9fGxl38FEHQ5CejNn%2FBqIpurm6uDvsfLznni1EwbO52WsrlqWVyIrKaT2594wPUVV9IKfg%2FJ9CjjlYASS2zQmXp2UNpZIJCWgFXqsL1Y0IJeONZmNdqt%2Fs5VL%2FXh0aZpWpr8Z0V4FzhsxX1Fz%2BSLVQ4s%2F7lQJ0r1ZKffmwNXdxHyqoag%2BTYBpqqv8wIs88%2BjO8ZIONKPaeRhoHmFFZAVCrP3bpaRYxwRPdRK1ZG0omNc%2FCmNhnoPr1flBfnqfMkhofm3ihkL3cEu6A%2BB%2Bdp4cVkuzCA6Pgva7JQ23bhOhXhN%2BHlwd1cwH6UBx83tTEEC5vMToqSMEQIM3Kzhf38FMlPf0E%2B77h1v2kaIP8l%2FxBDCwRpfqGoAtUIxrlJSdAEfaE2m4p4thTkkCj4XgUc2wWlxDHEbuNexg3oGS4TbgyO%2BPVMgUdq15QTir9YDQ6sPX16EMKjUmwes%2FERLwmctj8z3jCBrTBO%2FZl1HnHYApgpSmCIRq5UZTNAIIwouoMK%2FFlAkZJGMDpS6azY%2BHoXc42r%2BeB1r%2FOGMkcCs2Yg0i6sXXMM1MEes5V2ETT4RwzPVN1XN7oqCVlX9%2Fa2R%2FMpdyL%2BbriLCqVWgtBEp%2FaI3KhYlsb%2BvouM3MPeCXPvLQMlYtjUcF6AajPK8Kuilc1yS%2FluMNQrLSGnngyyU3%2BaBkDeU1SSdpPqRw7BJwgafDEiXwWXL9TTHuTrdDAGTteBFHvRI1%2BOS9qOzt9qZiJ3wBUA0NhtEWeOmrkpMUHj8NiP6IA3KLeDsu8InVNRKIX93ALsnNQKr2l57bPOmCgMAz2LKbPfUEPZGcuhIPW6857%2BDLyUpZPBimleNRXhzfZ5UKr0UV8oi9BIWeO9aEctJfRba1DxGHNL0CPXAAXJHDo9dQCxhSHB1O3NxPb8mFX8NhmFCsLSb78%2FMqPL%2BHjzAijQumviqAjRG8lmCDSTCt%2Bcam1a%2FkPZFH7KXlDhF7QWX45XOFc4mO6BDhCRmZcoD2%2FYHFkMEVPi7K%2FOlNL6jTAXqm0UTLnsGuhaeUwDRZlJKlJKjUfgGCFZYV78%2BjE%2FDDmocBaaBTqcWoJ4QyCUU70XxEN%2BZMPbZtnFtVXTeS0VPZykzMah%2BugET7zPlvS8xUO1YqbcpmoGeaXTDrchJdMnkOea02C4xa5aMwEnnAQi2udDLeMXfjYD8PhUThKP3anE93ta7u37jYvXm8vLXPVMNFCqUv%2BvJTUxEVlpYpczcgqqcUPGi9sNrmgVxgIFvnu%2BR%2FD%2Bot8eQ8zXpLJMljPe9mt1KYIoYQH13DoJO%2BSnxEahfMlcfJio6Vt2CLK7yCCiwzLvIzsXDw3CBv2i%2Bkkga1uvw3OjlMjfnEcRjPJ4VjfrEfrjGTy6TjnSuMiENlt4MMTSgz4CfdAOhL2avTkh7AAVlHzLUQCPxI1q69fdRI%2B3wUvEnMvK%2BjTpAiuxFmveQ9ws5%2BnUULRH54L37qejMOVeI5ryRzSSQPJZIRUJMV5nX%2FM71YC0uJ1TcVJMqlV2S10zl4%2B8jS5cfZka%2FFsESP6MkrB%2BDuI9JwTB7mI5bJzlVbtlfflblcw4aiY9nvd%2BdkUbifX%2FRLTXkOSmvEwz%2FfhbtLZ9oMwj%2BOwZGIXaupyZ2n0ZLk%2FCHNp1CObl3O8NVk4XQO%2BPUIvjqW93aiaZaQnt1fevy%2FWP58wMv6j6vKRmWK2dFxb2c8nojmLja9CYIJE4pVokwdDN0dW4uvNhp1ji9183kL%2BPZDi0kZ1HS5poNFpq1kPmlvimPGBMbBA991LdH0ZE0%2FhSE1wjE5VrfBTxkz8jDNxvlhr74qbPF6rB5esZYNGV1PJJdiwO0IxbL727ZFJ3dRpv1MYQIA7zDkKhmRvNH2%2FKCA7RLFw1nBACOoctXUTY0oTE89R7zTUFMYbfcRUDatJLTW7hCP3NbYLRE8YHaQESuA0yU4tbfY1IS%2BaurfI7iAcviEZxSk2y9akqRXo%2BsnfqV%2Bu6zV3RjuPS8X9%2FLnj4bj2xS1MP5s3ll2fx8FFwZ4%2BhnKy73eaj8kLCwP6ydLpA34APrj8%2B7PmXOjwO6%2FttZlAwZPf8pt%2Fnyx3VA02oun41c22TFSw5G06YIouLb1FK1doRBJKpuanQnf0TPywfg2fikSXEgdd%2FpOzqJ0Z4KDmiQMVp81vKFxfNJMBJJERy%2FC4Pbe2%2F%2BMj1xiYA72xupCTtzSlpO0h3HJM%2FUjIU70iK%2FeVo8W%2F5oG4hc5RR5qtZZ8wuyJekAjQmp3kSIqYxrMsLXoKFlRYwa7uhY3OUAJj87JdReMB2mdtLmGCu8vAVGyXreVO9EGMCWe6wqObm6DeYqLUzMqH6BSvsQSq%2FT28r9YQnmSoR8UH7rj4ENHnA96aRWd45rB1N1TpQKchlsMx71s1t34vGnFgdmbPR54SouwIU9I0vgqLwLNxJccJ8SFZYgQyNZx63oLfc%2FND%2FPnGiNcFuGvFcR4z3PZxxUxiGWIECWLcgj5MZqHyF4IFZQo%2B7rsPIWwjreOE50zEzCbkN1BRncsYjjHV5du4MyaEgww1jqWTL6O5f%2FQeBbKlfxDMi8ucHZby94P4itRSewQQdWjZpRunxIhyOZk24SsWPlUHEIYoj3le7qydXsDbt%2Fd2gHz9nO3f%2B%2BX3a4DdoAfipctxjYigMm6fzq8GqMG9FVDbpyUvhut7TrsmiBqzsr8qyRSuW%2B2cuqUjsDKVqG1sygPiXv5LvLjFQFQEixxNf7ed9aRRr0J3%2FE8gQ50EIASX%2FtzIMPXCmTULaAhdCohppG71oVG3K9Nz3mmCgUZ7S%2BZg9udbC1Shq44hp%2FDE1FslIiMhbLca2UYDKDKkk8YMit7AWDuq1L9RhsusHGrrTO9WoXSKvx20%2BN2D2SsqC0InP7IGwor%2BF4XQoRpbP4%2B0mtiOoIUI21K3SnDe2Za5nBn7JMg3LRSAJRTyFaYLk8jc1dbimsRLxEUoe%2F%2BwRHP7yeJrVoN1Thjdr4xdPYFyq2lkM%2FNLajfyXVJnz6CdDHD5cYXVO5Q7XTSCV%2FTIqOWDh2SyIoiWrGAWpRdaZB4%2BpiiaKFXG0Sy7%2Bpi0GOXv3HnewyyfQjWHlwu%2BYvQAy2mDjpkiGkG3tp7YF8%2FlLnVxUKNGV0AnSarRyOUmwTmhaKEAjYSVCUyqtlUjrZf1KCgsvi5VPlinB86Ot4jbWpT%2BNp6ZLO1HRzYKEIl%2FVEW8nCzxBi7PrF3ji1KbIwdMiuRWJYzyzpWeUzDHi1ml2mqEBsxTqRqsqwhM4KYDaaKGsqgTNpDpyb71AYBdLyz3yJXxa%2FonL14sQ7WrgRjRVhgpe3vBUSI2hN%2BsZtsts82jf2tx7zxAvlG8M7JPSUj7YerELqv3XKM4S9lI021ZdVbqpnKK6oPAEHGeIst%2FaUjVGhE19v0yu0mP4VuLu7kBvosA%2BHXZLOv3CRiz7UW1Zs4hj0LIJCqHW8TbAgxuUpZ7zJk8%2FW004uNoo13WEH4Iwim0ZIPH76NqnJ6%2B1%2BMrNwo171SEuRS%2FaQQp9oPWDdcytcdF3tzWwu4FnYi51N9ZASnYJkBpO%2FGmbrVzaouSLhWwuagb5WcSrzEQzRdPj8Xg0QXgxVtFXKyLKFRt7l7sg8uu50KC2v7vfygsnx%2FtOCy9B5a5uGUcrXNAmBhpiKGToijnqUm4hn7zG7K%2Bbw7kcWjMgGmdev0ZsRvjRaCTBJxxkW2CUhw%2BXKtPhM37%2FPSEgHHhYryUMQfr9QPNIjq4x%2BCJhee%2FGhu9Fc2rTwT78cE341hw%2BlhjfkLEQvvbVKa4JYVUWaJztpLJaSFF%2Bl9sAxBqlVVSdHUHp%2FRFObkMqAnYXi7tjOc8DCaMTc4EwEWDzn2kzOupW0OmbfHsuwWINLxfFxafHYTm3y8udjcRJ3f%2BzDwPE7LKL%2BsZkWR3Oi9VvFlBgCXlsItViVXBSbXqF3EP5iLu9WtCKG8j%2BqugfXGQZH5inYjS6nrYQ7E3RE5r9WlM0T8W2UZP8x01N8r427loZHsfuRz56AreKG%2FMyZ1z2LgVD9dQpRCqrpx7kJWpdm4DhrNXpqF5vsaToM%2BQDbrcyv8H2xwNMEG72%2FU3C2tLrULKbVyF1ON2YOh7qZ6k9KIcszZZkmvbc6jV2n2BU3VzWrNKlBoMJdbxd2pashEqJBQYsaJGdqrCyAwW6E8LhGBEiJSWHT2Y6UHIC6Su3uIyUqMJeO7p8KKmcmOswhQFa5bmuwJUAIrhc9%2FUCF6r%2FgyvzueZg1rEr24KAVH%2FPv0Ajtm7TdlAiGdDWYXUgiLOLybLp%2FfVRRjaVTQ%2B2i%2BPwTaVNknmau00RMXi9Dt46udf3%2Bc%2F6M%2Bd28qg4SUkikvmphBFcVYC5VK1NvhTw7I7kx875qXzMGXc4fnDAtsUmMNZxGMV20CVAvux7i7CHt4JR2YYRj0uOGeHhR3mfzNgwtB0PtVHWUcZreUAb3SAYJMVnIfeED5clC1Yro7%2FFLynBDhrJyiAOnG06Z7yhcP0hhw%2FQARFx5q8jamuJc9z8DRNRkZe2aVfa9aPHXK6%2BvJSdNHxRKNTgVgSgsLidvevrU27W%2BY0ufK4HZRDlRQK21q6AM8lx8MUHtV7AU4mFJ8o9TIAL8%2FIcjtJtg7hV7u5yDx8ZQsiSzMWma0uldW%2BN4SbuNk9G3OI6isUtfhutyo8QGQk%2FwHhY%2FOpDhb%2Fu6KHByGfUf6khRi3A8dkZJvg7cJ70fmMODahIhWOq2S6qRhHqVbq3DD5zs13FM1ja%2BxmbW4MRDAoGNFM1rrKuuqrFCTxQa5SBepSCoOaUpL3LnuIowXlxNwQ0NxVqrBdYze8XcgBgbPeaobyXxvVkZ9a3uhTg47glgoNKEJLgIgQkxa%2Boj%2F5NO0qehPXEnOYhSa1hnemDUs%2F6jqL9GIHx9JXMmyWqztdrUL3Q%2F%2BnXGHZVqVcqEk4thw65a32QqfF3po%2BE5ORYHaIJOZZ%2Fdz8e6RBGGEqGIzR1PXOSnSS4OtH%2FzEPdqEdxQ2yxE%2FJTRGeSFs%2Fs%2BP3iCLMI9lXZipfCe7pGhveSH1PmP%2BITp%2BIxBbDpBdzW84aVtS5muRJ%2BS%2FOUTXF5Y2CNGyvK6IaUFCpcT%2B%2BqKmWWFWq5CbWIDmtBEzg9%2FzRInzq9zp%2FedkOP7%2FsFH7DFClrkEPVNeXjCeZtTN9M7Ez%2FxdTXiqh0%2BhkYTSp5C7PqdTc%2Bo%2FlN1TCBi%2FzkHFrGk%2FXnTXe2G8Fxsko15utYt%2FSFV7rm3btB3BSCOoV5HesXb1PLtxjM4XWGSXVILpnqIHj6h6jRalSeaebJyRUe7LmSiO9aZMc870gs4xgvWCmE5Uiej%2F3TWzFYQhHiYqNVJFexIbVoCyZvPOAnmoDO9ttVYaMSFCE76YxQdb%2BzyI2bBQ9Pzf4jCIo1okIsdtWVYnmJLIdJ%2BcJfonim8hFsiQqx4Vch8kubvPjZfWVUSwEUd%2FimFH7bLrDIV0aapcfk57uR%2BlPp%2BBlN60gGckho3Y9dpjxdqEWrLwzl8%2B711Nhai3JmkUle6i8fZtKTQT73CtEgPfET4IisojCnv6GR%2B1SxeBkXMSykq%2F1mI0rxTp4vMUoYFHkTRn7cx4cYj9ghjsaYyMXwAWu3%2FCwlHeD4xCVmU8HnpxKogz7YmW6IiYRRupt8xvLYtY6RB1o63N0Dgxns0psqy%2BcBhyXuqpxUyAoFKMwLBzxaRvw%3D%3D&__VIEWSTATEGENERATOR=5DCC3F26&ctl00%24LoginView%24UserName=&ctl00%24LoginView%24Password=&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24ZIP=" + AbfragePLZ + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Quantity=" + Abfragemenge + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeId=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeCheckBox=on&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl02%24TypeId=2&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24PaymentGroup%24OptionGroupDropDown=6&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Stations=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryGroup%24OptionGroupDropDown=5&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryTimeGroup%24OptionGroupDropDown=24&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TruckSizeGroup%24OptionGroupDropDown=19&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TubeLengthGroup%24OptionGroupDropDown=9&ctl00%24MainContent%24OrderProcess_Step_1%24IsLoggedIn=0&ctl00%24MainContent%24OrderProcess_Step_1%24SortingType=-1&ctl00%24MainContent%24OrderProcess_Step_1%24ProductTypeSelector=1&ctl00%24MainContent%24OrderProcess_Step_1%24SortDropDown=-1&__ASYNCPOST=true&"
          log("Pelletspeise werden ermittelt "+ fetchstring,"info")
            let response = await fetch(fetchstring, {
              "headers": {
                "accept": "*/*",
                "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                "cache-control": "no-cache",
                "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                "pragma": "no-cache",
                "sec-ch-ua": "\"Google Chrome\";v=\"107\", \"Chromium\";v=\"107\", \"Not=A?Brand\";v=\"24\"",
                "sec-ch-ua-mobile": "?0",
                "sec-ch-ua-platform": "\"Windows\"",
                "sec-fetch-dest": "empty",
                "sec-fetch-mode": "cors",
                "sec-fetch-site": "same-origin",
                "x-microsoftajax": "Delta=true",
                "x-requested-with": "XMLHttpRequest",
                "Referer": fetchstring,
                "Referrer-Policy": "strict-origin-when-cross-origin"
              },
              "body": bodystring,
              "method": "POST"
            });
              let text = await response.text();
              return text;
          } // EndFunction
          
          
          
          //--------------------------------------------------------------------------------------------------------------------
          // Function CreateStates
          //--------------------------------------------------------------------------------------------------------------------
          function CreateStates() {
              if ( !existsState(dpPrice1 )) { createState(dpPrice1,0,{name: "guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpPrice2 )) { createState(dpPrice2,0,{name: "Zweit guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpPrice3 )) { createState(dpPrice3,0,{name: "Dritt guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpDealer1)) { createState(dpDealer1,0,{name: "guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpDealer2)) { createState(dpDealer2,0,{name: "Zweit guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpDealer3)) { createState(dpDealer3,0,{name: "Dritt guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
          } // End Function
          
          
          P Offline
          P Offline
          pepe12ooo
          schrieb am zuletzt editiert von
          #35

          Leider wurde das Seitendesign von heizpellets24.de geändert und das Programm funktioniert nicht mehr. Gibt es jemand der sich die mühe machen würde das anzupassen, ich kenne mich leider nicht gut genug aus und steig da nicht durch. Ich versuche mal unten alles zusammen zu fassen. Liebe Grüße

          Die Seite die ich meine:

          https://www.heizpellets24.de/holzpellets-lose/angebotsliste?zipCode=12305&amount=4000&stations=1&product=20&options=108,131,-18,127,159&ap=0&pcert=4,2,6,1&lbp=0

          Hier ein Bild der Gewünschten werte:

          Unbenannt.png

          Und hier das Programm das seit ein par Tagen nicht mehr funktioniert:

          //Author Olivero aus Forumsbeitrag
          //https://forum.iobroker.net/topic/56432/preis-von-propellets-at-mittels-parser-auslesen/22?_=1670064893887&lang=de
          // Angepasst: 03.12.22 Looxer01
           
          //..........................................
          // Einstellungen
          //..........................................
          const dpPrice1 = "javascript.0.Heizung.Pelletspreise.dpPrice1";
          const dpDealer1 = "javascript.0.Heizung.Pelletspreise.dpDealer1";
          const dpPrice2 = "javascript.0.Heizung.Pelletspreise.dpPrice2";
          const dpDealer2 = "javascript.0.Heizung.Pelletspreise.dpDealer2";
          const dpPrice3 = "javascript.0.Heizung.Pelletspreise.dpPrice3";
          const dpDealer3 = "javascript.0.Heizung.Pelletspreise.dpDealer3";
           
          const Abfragemenge = "6000";
          const AbfragePLZ = "65760";
          const Abfrageplan = '0 */2 * * *' ;            // Cron - alle 2 Stunden
           
           
          //..........................................
          // Programm Vorbereitung
          //..........................................
          const fetch = require("node-fetch");
          const cheerio = require("cheerio");
          CreateStates();
           
          //--------------------------------------------------------------------------------------------------------------------
          // Schedule 
          //--------------------------------------------------------------------------------------------------------------------
          schedule (Abfrageplan,function () {
          log("Pelletspeise schedule gestarted","info")
          analyze();
           
          }) // End Schedule
          //..........................................
          // Programmablauf Ende
          //..........................................
           
           
           
          //--------------------------------------------------------------------------------------------------------------------
          // Function Analyze
          //--------------------------------------------------------------------------------------------------------------------
          async function analyze() {
            let text = await getData();
            let $ = cheerio.load(text);
            let price1 = $($(".price-middle:not(.total)")[0]).text().trim();
            //var  price1Total = $($(".price-middle total <span> ")[0]).text().trim();
            //log ("price total " + price1Total
            let dealer1 = $($(".dealer-name")[0]).text().trim()
            let price2 = $($(".price-middle:not(.total)")[1]).text().trim();
            let dealer2 = $($(".dealer-name")[1]).text().trim()
            let price3 = $($(".price-middle:not(.total)")[2]).text().trim();
            let dealer3 = $($(".dealer-name")[2]).text().trim()
           
            setState(dpPrice1,price1);
            setState(dpDealer1,dealer1);
            setState(dpPrice2,price2);
            setState(dpDealer2,dealer2);
            setState(dpPrice3,price3);
            setState(dpDealer3,dealer3);
          } // End Function
           
           
          //--------------------------------------------------------------------------------------------------------------------
          // Function getData
          //--------------------------------------------------------------------------------------------------------------------
          async function getData() {
          var fetchstring = "https://www.heizpellets24.de/pelletpreis-direkt/"+AbfragePLZ+"/"+Abfragemenge+"/1/dt5"
          var bodystring =  "ctl00%24ScriptManager1=ctl00%24MainContent%24OrderProcess_Step_1%24PriceOrderUpdatePanel%7Cctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTTARGET=ctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTARGUMENT=LoadPrices&__LASTFOCUS=&__VIEWSTATE=ZOqYdG%2BFwZ%2BPrH15aLaMOhCzmA140AC7FRQT3yJlHciVxQ48WlVoIAneqpP531uNShrNE4s8pYwrxCbi2Al%2FD78egos7NN8N26Wwp3FQY0QU2BUEUQiUvMfvrw6k4579ZlpA%2BjWBFS2L9gdEqrq%2BNy%2F2FfulD2BLGcSw3dxN2BoDBJ6ZlKMEYhpcwsnrciH0JzSBmCppft1AUYcTCh4bnwEkEqrmCNNc6JWx0jm9kdJIHMlHNVXJg3HujRyj8g75ZwMJVzQQGVljGNVsx6EeMrHhu%2BVgrjM3dMPwV5p485kdwKlPvkhPliUDI3ES2l%2FLcTGvyQIdMULrFFG5TanRnKkRKf40BvCE8Wu233%2Bb5b7dl8vhb8PCOilHtpSvMESCcyrxMvctN2ALlFrLPfV15ydI6aghBWm1dULmXOMINUXu%2BTdc0irIq4qxw3BDYvjCVADCXio9a5syz5qcdori2HzaaTpFD1X5V2h8L3jG%2FRSnU9fGxl38FEHQ5CejNn%2FBqIpurm6uDvsfLznni1EwbO52WsrlqWVyIrKaT2594wPUVV9IKfg%2FJ9CjjlYASS2zQmXp2UNpZIJCWgFXqsL1Y0IJeONZmNdqt%2Fs5VL%2FXh0aZpWpr8Z0V4FzhsxX1Fz%2BSLVQ4s%2F7lQJ0r1ZKffmwNXdxHyqoag%2BTYBpqqv8wIs88%2BjO8ZIONKPaeRhoHmFFZAVCrP3bpaRYxwRPdRK1ZG0omNc%2FCmNhnoPr1flBfnqfMkhofm3ihkL3cEu6A%2BB%2Bdp4cVkuzCA6Pgva7JQ23bhOhXhN%2BHlwd1cwH6UBx83tTEEC5vMToqSMEQIM3Kzhf38FMlPf0E%2B77h1v2kaIP8l%2FxBDCwRpfqGoAtUIxrlJSdAEfaE2m4p4thTkkCj4XgUc2wWlxDHEbuNexg3oGS4TbgyO%2BPVMgUdq15QTir9YDQ6sPX16EMKjUmwes%2FERLwmctj8z3jCBrTBO%2FZl1HnHYApgpSmCIRq5UZTNAIIwouoMK%2FFlAkZJGMDpS6azY%2BHoXc42r%2BeB1r%2FOGMkcCs2Yg0i6sXXMM1MEes5V2ETT4RwzPVN1XN7oqCVlX9%2Fa2R%2FMpdyL%2BbriLCqVWgtBEp%2FaI3KhYlsb%2BvouM3MPeCXPvLQMlYtjUcF6AajPK8Kuilc1yS%2FluMNQrLSGnngyyU3%2BaBkDeU1SSdpPqRw7BJwgafDEiXwWXL9TTHuTrdDAGTteBFHvRI1%2BOS9qOzt9qZiJ3wBUA0NhtEWeOmrkpMUHj8NiP6IA3KLeDsu8InVNRKIX93ALsnNQKr2l57bPOmCgMAz2LKbPfUEPZGcuhIPW6857%2BDLyUpZPBimleNRXhzfZ5UKr0UV8oi9BIWeO9aEctJfRba1DxGHNL0CPXAAXJHDo9dQCxhSHB1O3NxPb8mFX8NhmFCsLSb78%2FMqPL%2BHjzAijQumviqAjRG8lmCDSTCt%2Bcam1a%2FkPZFH7KXlDhF7QWX45XOFc4mO6BDhCRmZcoD2%2FYHFkMEVPi7K%2FOlNL6jTAXqm0UTLnsGuhaeUwDRZlJKlJKjUfgGCFZYV78%2BjE%2FDDmocBaaBTqcWoJ4QyCUU70XxEN%2BZMPbZtnFtVXTeS0VPZykzMah%2BugET7zPlvS8xUO1YqbcpmoGeaXTDrchJdMnkOea02C4xa5aMwEnnAQi2udDLeMXfjYD8PhUThKP3anE93ta7u37jYvXm8vLXPVMNFCqUv%2BvJTUxEVlpYpczcgqqcUPGi9sNrmgVxgIFvnu%2BR%2FD%2Bot8eQ8zXpLJMljPe9mt1KYIoYQH13DoJO%2BSnxEahfMlcfJio6Vt2CLK7yCCiwzLvIzsXDw3CBv2i%2Bkkga1uvw3OjlMjfnEcRjPJ4VjfrEfrjGTy6TjnSuMiENlt4MMTSgz4CfdAOhL2avTkh7AAVlHzLUQCPxI1q69fdRI%2B3wUvEnMvK%2BjTpAiuxFmveQ9ws5%2BnUULRH54L37qejMOVeI5ryRzSSQPJZIRUJMV5nX%2FM71YC0uJ1TcVJMqlV2S10zl4%2B8jS5cfZka%2FFsESP6MkrB%2BDuI9JwTB7mI5bJzlVbtlfflblcw4aiY9nvd%2BdkUbifX%2FRLTXkOSmvEwz%2FfhbtLZ9oMwj%2BOwZGIXaupyZ2n0ZLk%2FCHNp1CObl3O8NVk4XQO%2BPUIvjqW93aiaZaQnt1fevy%2FWP58wMv6j6vKRmWK2dFxb2c8nojmLja9CYIJE4pVokwdDN0dW4uvNhp1ji9183kL%2BPZDi0kZ1HS5poNFpq1kPmlvimPGBMbBA991LdH0ZE0%2FhSE1wjE5VrfBTxkz8jDNxvlhr74qbPF6rB5esZYNGV1PJJdiwO0IxbL727ZFJ3dRpv1MYQIA7zDkKhmRvNH2%2FKCA7RLFw1nBACOoctXUTY0oTE89R7zTUFMYbfcRUDatJLTW7hCP3NbYLRE8YHaQESuA0yU4tbfY1IS%2BaurfI7iAcviEZxSk2y9akqRXo%2BsnfqV%2Bu6zV3RjuPS8X9%2FLnj4bj2xS1MP5s3ll2fx8FFwZ4%2BhnKy73eaj8kLCwP6ydLpA34APrj8%2B7PmXOjwO6%2FttZlAwZPf8pt%2Fnyx3VA02oun41c22TFSw5G06YIouLb1FK1doRBJKpuanQnf0TPywfg2fikSXEgdd%2FpOzqJ0Z4KDmiQMVp81vKFxfNJMBJJERy%2FC4Pbe2%2F%2BMj1xiYA72xupCTtzSlpO0h3HJM%2FUjIU70iK%2FeVo8W%2F5oG4hc5RR5qtZZ8wuyJekAjQmp3kSIqYxrMsLXoKFlRYwa7uhY3OUAJj87JdReMB2mdtLmGCu8vAVGyXreVO9EGMCWe6wqObm6DeYqLUzMqH6BSvsQSq%2FT28r9YQnmSoR8UH7rj4ENHnA96aRWd45rB1N1TpQKchlsMx71s1t34vGnFgdmbPR54SouwIU9I0vgqLwLNxJccJ8SFZYgQyNZx63oLfc%2FND%2FPnGiNcFuGvFcR4z3PZxxUxiGWIECWLcgj5MZqHyF4IFZQo%2B7rsPIWwjreOE50zEzCbkN1BRncsYjjHV5du4MyaEgww1jqWTL6O5f%2FQeBbKlfxDMi8ucHZby94P4itRSewQQdWjZpRunxIhyOZk24SsWPlUHEIYoj3le7qydXsDbt%2Fd2gHz9nO3f%2B%2BX3a4DdoAfipctxjYigMm6fzq8GqMG9FVDbpyUvhut7TrsmiBqzsr8qyRSuW%2B2cuqUjsDKVqG1sygPiXv5LvLjFQFQEixxNf7ed9aRRr0J3%2FE8gQ50EIASX%2FtzIMPXCmTULaAhdCohppG71oVG3K9Nz3mmCgUZ7S%2BZg9udbC1Shq44hp%2FDE1FslIiMhbLca2UYDKDKkk8YMit7AWDuq1L9RhsusHGrrTO9WoXSKvx20%2BN2D2SsqC0InP7IGwor%2BF4XQoRpbP4%2B0mtiOoIUI21K3SnDe2Za5nBn7JMg3LRSAJRTyFaYLk8jc1dbimsRLxEUoe%2F%2BwRHP7yeJrVoN1Thjdr4xdPYFyq2lkM%2FNLajfyXVJnz6CdDHD5cYXVO5Q7XTSCV%2FTIqOWDh2SyIoiWrGAWpRdaZB4%2BpiiaKFXG0Sy7%2Bpi0GOXv3HnewyyfQjWHlwu%2BYvQAy2mDjpkiGkG3tp7YF8%2FlLnVxUKNGV0AnSarRyOUmwTmhaKEAjYSVCUyqtlUjrZf1KCgsvi5VPlinB86Ot4jbWpT%2BNp6ZLO1HRzYKEIl%2FVEW8nCzxBi7PrF3ji1KbIwdMiuRWJYzyzpWeUzDHi1ml2mqEBsxTqRqsqwhM4KYDaaKGsqgTNpDpyb71AYBdLyz3yJXxa%2FonL14sQ7WrgRjRVhgpe3vBUSI2hN%2BsZtsts82jf2tx7zxAvlG8M7JPSUj7YerELqv3XKM4S9lI021ZdVbqpnKK6oPAEHGeIst%2FaUjVGhE19v0yu0mP4VuLu7kBvosA%2BHXZLOv3CRiz7UW1Zs4hj0LIJCqHW8TbAgxuUpZ7zJk8%2FW004uNoo13WEH4Iwim0ZIPH76NqnJ6%2B1%2BMrNwo171SEuRS%2FaQQp9oPWDdcytcdF3tzWwu4FnYi51N9ZASnYJkBpO%2FGmbrVzaouSLhWwuagb5WcSrzEQzRdPj8Xg0QXgxVtFXKyLKFRt7l7sg8uu50KC2v7vfygsnx%2FtOCy9B5a5uGUcrXNAmBhpiKGToijnqUm4hn7zG7K%2Bbw7kcWjMgGmdev0ZsRvjRaCTBJxxkW2CUhw%2BXKtPhM37%2FPSEgHHhYryUMQfr9QPNIjq4x%2BCJhee%2FGhu9Fc2rTwT78cE341hw%2BlhjfkLEQvvbVKa4JYVUWaJztpLJaSFF%2Bl9sAxBqlVVSdHUHp%2FRFObkMqAnYXi7tjOc8DCaMTc4EwEWDzn2kzOupW0OmbfHsuwWINLxfFxafHYTm3y8udjcRJ3f%2BzDwPE7LKL%2BsZkWR3Oi9VvFlBgCXlsItViVXBSbXqF3EP5iLu9WtCKG8j%2BqugfXGQZH5inYjS6nrYQ7E3RE5r9WlM0T8W2UZP8x01N8r427loZHsfuRz56AreKG%2FMyZ1z2LgVD9dQpRCqrpx7kJWpdm4DhrNXpqF5vsaToM%2BQDbrcyv8H2xwNMEG72%2FU3C2tLrULKbVyF1ON2YOh7qZ6k9KIcszZZkmvbc6jV2n2BU3VzWrNKlBoMJdbxd2pashEqJBQYsaJGdqrCyAwW6E8LhGBEiJSWHT2Y6UHIC6Su3uIyUqMJeO7p8KKmcmOswhQFa5bmuwJUAIrhc9%2FUCF6r%2FgyvzueZg1rEr24KAVH%2FPv0Ajtm7TdlAiGdDWYXUgiLOLybLp%2FfVRRjaVTQ%2B2i%2BPwTaVNknmau00RMXi9Dt46udf3%2Bc%2F6M%2Bd28qg4SUkikvmphBFcVYC5VK1NvhTw7I7kx875qXzMGXc4fnDAtsUmMNZxGMV20CVAvux7i7CHt4JR2YYRj0uOGeHhR3mfzNgwtB0PtVHWUcZreUAb3SAYJMVnIfeED5clC1Yro7%2FFLynBDhrJyiAOnG06Z7yhcP0hhw%2FQARFx5q8jamuJc9z8DRNRkZe2aVfa9aPHXK6%2BvJSdNHxRKNTgVgSgsLidvevrU27W%2BY0ufK4HZRDlRQK21q6AM8lx8MUHtV7AU4mFJ8o9TIAL8%2FIcjtJtg7hV7u5yDx8ZQsiSzMWma0uldW%2BN4SbuNk9G3OI6isUtfhutyo8QGQk%2FwHhY%2FOpDhb%2Fu6KHByGfUf6khRi3A8dkZJvg7cJ70fmMODahIhWOq2S6qRhHqVbq3DD5zs13FM1ja%2BxmbW4MRDAoGNFM1rrKuuqrFCTxQa5SBepSCoOaUpL3LnuIowXlxNwQ0NxVqrBdYze8XcgBgbPeaobyXxvVkZ9a3uhTg47glgoNKEJLgIgQkxa%2Boj%2F5NO0qehPXEnOYhSa1hnemDUs%2F6jqL9GIHx9JXMmyWqztdrUL3Q%2F%2BnXGHZVqVcqEk4thw65a32QqfF3po%2BE5ORYHaIJOZZ%2Fdz8e6RBGGEqGIzR1PXOSnSS4OtH%2FzEPdqEdxQ2yxE%2FJTRGeSFs%2Fs%2BP3iCLMI9lXZipfCe7pGhveSH1PmP%2BITp%2BIxBbDpBdzW84aVtS5muRJ%2BS%2FOUTXF5Y2CNGyvK6IaUFCpcT%2B%2BqKmWWFWq5CbWIDmtBEzg9%2FzRInzq9zp%2FedkOP7%2FsFH7DFClrkEPVNeXjCeZtTN9M7Ez%2FxdTXiqh0%2BhkYTSp5C7PqdTc%2Bo%2FlN1TCBi%2FzkHFrGk%2FXnTXe2G8Fxsko15utYt%2FSFV7rm3btB3BSCOoV5HesXb1PLtxjM4XWGSXVILpnqIHj6h6jRalSeaebJyRUe7LmSiO9aZMc870gs4xgvWCmE5Uiej%2F3TWzFYQhHiYqNVJFexIbVoCyZvPOAnmoDO9ttVYaMSFCE76YxQdb%2BzyI2bBQ9Pzf4jCIo1okIsdtWVYnmJLIdJ%2BcJfonim8hFsiQqx4Vch8kubvPjZfWVUSwEUd%2FimFH7bLrDIV0aapcfk57uR%2BlPp%2BBlN60gGckho3Y9dpjxdqEWrLwzl8%2B711Nhai3JmkUle6i8fZtKTQT73CtEgPfET4IisojCnv6GR%2B1SxeBkXMSykq%2F1mI0rxTp4vMUoYFHkTRn7cx4cYj9ghjsaYyMXwAWu3%2FCwlHeD4xCVmU8HnpxKogz7YmW6IiYRRupt8xvLYtY6RB1o63N0Dgxns0psqy%2BcBhyXuqpxUyAoFKMwLBzxaRvw%3D%3D&__VIEWSTATEGENERATOR=5DCC3F26&ctl00%24LoginView%24UserName=&ctl00%24LoginView%24Password=&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24ZIP=" + AbfragePLZ + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Quantity=" + Abfragemenge + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeId=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeCheckBox=on&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl02%24TypeId=2&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24PaymentGroup%24OptionGroupDropDown=6&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Stations=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryGroup%24OptionGroupDropDown=5&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryTimeGroup%24OptionGroupDropDown=24&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TruckSizeGroup%24OptionGroupDropDown=19&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TubeLengthGroup%24OptionGroupDropDown=9&ctl00%24MainContent%24OrderProcess_Step_1%24IsLoggedIn=0&ctl00%24MainContent%24OrderProcess_Step_1%24SortingType=-1&ctl00%24MainContent%24OrderProcess_Step_1%24ProductTypeSelector=1&ctl00%24MainContent%24OrderProcess_Step_1%24SortDropDown=-1&__ASYNCPOST=true&"
          log("Pelletspeise werden ermittelt "+ fetchstring,"info")
            let response = await fetch(fetchstring, {
              "headers": {
                "accept": "*/*",
                "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                "cache-control": "no-cache",
                "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                "pragma": "no-cache",
                "sec-ch-ua": "\"Google Chrome\";v=\"107\", \"Chromium\";v=\"107\", \"Not=A?Brand\";v=\"24\"",
                "sec-ch-ua-mobile": "?0",
                "sec-ch-ua-platform": "\"Windows\"",
                "sec-fetch-dest": "empty",
                "sec-fetch-mode": "cors",
                "sec-fetch-site": "same-origin",
                "x-microsoftajax": "Delta=true",
                "x-requested-with": "XMLHttpRequest",
                "Referer": fetchstring,
                "Referrer-Policy": "strict-origin-when-cross-origin"
              },
              "body": bodystring,
              "method": "POST"
            });
              let text = await response.text();
              return text;
          } // EndFunction
           
           
           
          //--------------------------------------------------------------------------------------------------------------------
          // Function CreateStates
          //--------------------------------------------------------------------------------------------------------------------
          function CreateStates() {
              if ( !existsState(dpPrice1 )) { createState(dpPrice1,0,{name: "guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpPrice2 )) { createState(dpPrice2,0,{name: "Zweit guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpPrice3 )) { createState(dpPrice3,0,{name: "Dritt guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpDealer1)) { createState(dpDealer1,0,{name: "guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpDealer2)) { createState(dpDealer2,0,{name: "Zweit guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
              if ( !existsState(dpDealer3)) { createState(dpDealer3,0,{name: "Dritt guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
          } // End Function
           
          
          HomoranH 1 Antwort Letzte Antwort
          0
          • P pepe12ooo

            Leider wurde das Seitendesign von heizpellets24.de geändert und das Programm funktioniert nicht mehr. Gibt es jemand der sich die mühe machen würde das anzupassen, ich kenne mich leider nicht gut genug aus und steig da nicht durch. Ich versuche mal unten alles zusammen zu fassen. Liebe Grüße

            Die Seite die ich meine:

            https://www.heizpellets24.de/holzpellets-lose/angebotsliste?zipCode=12305&amount=4000&stations=1&product=20&options=108,131,-18,127,159&ap=0&pcert=4,2,6,1&lbp=0

            Hier ein Bild der Gewünschten werte:

            Unbenannt.png

            Und hier das Programm das seit ein par Tagen nicht mehr funktioniert:

            //Author Olivero aus Forumsbeitrag
            //https://forum.iobroker.net/topic/56432/preis-von-propellets-at-mittels-parser-auslesen/22?_=1670064893887&lang=de
            // Angepasst: 03.12.22 Looxer01
             
            //..........................................
            // Einstellungen
            //..........................................
            const dpPrice1 = "javascript.0.Heizung.Pelletspreise.dpPrice1";
            const dpDealer1 = "javascript.0.Heizung.Pelletspreise.dpDealer1";
            const dpPrice2 = "javascript.0.Heizung.Pelletspreise.dpPrice2";
            const dpDealer2 = "javascript.0.Heizung.Pelletspreise.dpDealer2";
            const dpPrice3 = "javascript.0.Heizung.Pelletspreise.dpPrice3";
            const dpDealer3 = "javascript.0.Heizung.Pelletspreise.dpDealer3";
             
            const Abfragemenge = "6000";
            const AbfragePLZ = "65760";
            const Abfrageplan = '0 */2 * * *' ;            // Cron - alle 2 Stunden
             
             
            //..........................................
            // Programm Vorbereitung
            //..........................................
            const fetch = require("node-fetch");
            const cheerio = require("cheerio");
            CreateStates();
             
            //--------------------------------------------------------------------------------------------------------------------
            // Schedule 
            //--------------------------------------------------------------------------------------------------------------------
            schedule (Abfrageplan,function () {
            log("Pelletspeise schedule gestarted","info")
            analyze();
             
            }) // End Schedule
            //..........................................
            // Programmablauf Ende
            //..........................................
             
             
             
            //--------------------------------------------------------------------------------------------------------------------
            // Function Analyze
            //--------------------------------------------------------------------------------------------------------------------
            async function analyze() {
              let text = await getData();
              let $ = cheerio.load(text);
              let price1 = $($(".price-middle:not(.total)")[0]).text().trim();
              //var  price1Total = $($(".price-middle total <span> ")[0]).text().trim();
              //log ("price total " + price1Total
              let dealer1 = $($(".dealer-name")[0]).text().trim()
              let price2 = $($(".price-middle:not(.total)")[1]).text().trim();
              let dealer2 = $($(".dealer-name")[1]).text().trim()
              let price3 = $($(".price-middle:not(.total)")[2]).text().trim();
              let dealer3 = $($(".dealer-name")[2]).text().trim()
             
              setState(dpPrice1,price1);
              setState(dpDealer1,dealer1);
              setState(dpPrice2,price2);
              setState(dpDealer2,dealer2);
              setState(dpPrice3,price3);
              setState(dpDealer3,dealer3);
            } // End Function
             
             
            //--------------------------------------------------------------------------------------------------------------------
            // Function getData
            //--------------------------------------------------------------------------------------------------------------------
            async function getData() {
            var fetchstring = "https://www.heizpellets24.de/pelletpreis-direkt/"+AbfragePLZ+"/"+Abfragemenge+"/1/dt5"
            var bodystring =  "ctl00%24ScriptManager1=ctl00%24MainContent%24OrderProcess_Step_1%24PriceOrderUpdatePanel%7Cctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTTARGET=ctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTARGUMENT=LoadPrices&__LASTFOCUS=&__VIEWSTATE=ZOqYdG%2BFwZ%2BPrH15aLaMOhCzmA140AC7FRQT3yJlHciVxQ48WlVoIAneqpP531uNShrNE4s8pYwrxCbi2Al%2FD78egos7NN8N26Wwp3FQY0QU2BUEUQiUvMfvrw6k4579ZlpA%2BjWBFS2L9gdEqrq%2BNy%2F2FfulD2BLGcSw3dxN2BoDBJ6ZlKMEYhpcwsnrciH0JzSBmCppft1AUYcTCh4bnwEkEqrmCNNc6JWx0jm9kdJIHMlHNVXJg3HujRyj8g75ZwMJVzQQGVljGNVsx6EeMrHhu%2BVgrjM3dMPwV5p485kdwKlPvkhPliUDI3ES2l%2FLcTGvyQIdMULrFFG5TanRnKkRKf40BvCE8Wu233%2Bb5b7dl8vhb8PCOilHtpSvMESCcyrxMvctN2ALlFrLPfV15ydI6aghBWm1dULmXOMINUXu%2BTdc0irIq4qxw3BDYvjCVADCXio9a5syz5qcdori2HzaaTpFD1X5V2h8L3jG%2FRSnU9fGxl38FEHQ5CejNn%2FBqIpurm6uDvsfLznni1EwbO52WsrlqWVyIrKaT2594wPUVV9IKfg%2FJ9CjjlYASS2zQmXp2UNpZIJCWgFXqsL1Y0IJeONZmNdqt%2Fs5VL%2FXh0aZpWpr8Z0V4FzhsxX1Fz%2BSLVQ4s%2F7lQJ0r1ZKffmwNXdxHyqoag%2BTYBpqqv8wIs88%2BjO8ZIONKPaeRhoHmFFZAVCrP3bpaRYxwRPdRK1ZG0omNc%2FCmNhnoPr1flBfnqfMkhofm3ihkL3cEu6A%2BB%2Bdp4cVkuzCA6Pgva7JQ23bhOhXhN%2BHlwd1cwH6UBx83tTEEC5vMToqSMEQIM3Kzhf38FMlPf0E%2B77h1v2kaIP8l%2FxBDCwRpfqGoAtUIxrlJSdAEfaE2m4p4thTkkCj4XgUc2wWlxDHEbuNexg3oGS4TbgyO%2BPVMgUdq15QTir9YDQ6sPX16EMKjUmwes%2FERLwmctj8z3jCBrTBO%2FZl1HnHYApgpSmCIRq5UZTNAIIwouoMK%2FFlAkZJGMDpS6azY%2BHoXc42r%2BeB1r%2FOGMkcCs2Yg0i6sXXMM1MEes5V2ETT4RwzPVN1XN7oqCVlX9%2Fa2R%2FMpdyL%2BbriLCqVWgtBEp%2FaI3KhYlsb%2BvouM3MPeCXPvLQMlYtjUcF6AajPK8Kuilc1yS%2FluMNQrLSGnngyyU3%2BaBkDeU1SSdpPqRw7BJwgafDEiXwWXL9TTHuTrdDAGTteBFHvRI1%2BOS9qOzt9qZiJ3wBUA0NhtEWeOmrkpMUHj8NiP6IA3KLeDsu8InVNRKIX93ALsnNQKr2l57bPOmCgMAz2LKbPfUEPZGcuhIPW6857%2BDLyUpZPBimleNRXhzfZ5UKr0UV8oi9BIWeO9aEctJfRba1DxGHNL0CPXAAXJHDo9dQCxhSHB1O3NxPb8mFX8NhmFCsLSb78%2FMqPL%2BHjzAijQumviqAjRG8lmCDSTCt%2Bcam1a%2FkPZFH7KXlDhF7QWX45XOFc4mO6BDhCRmZcoD2%2FYHFkMEVPi7K%2FOlNL6jTAXqm0UTLnsGuhaeUwDRZlJKlJKjUfgGCFZYV78%2BjE%2FDDmocBaaBTqcWoJ4QyCUU70XxEN%2BZMPbZtnFtVXTeS0VPZykzMah%2BugET7zPlvS8xUO1YqbcpmoGeaXTDrchJdMnkOea02C4xa5aMwEnnAQi2udDLeMXfjYD8PhUThKP3anE93ta7u37jYvXm8vLXPVMNFCqUv%2BvJTUxEVlpYpczcgqqcUPGi9sNrmgVxgIFvnu%2BR%2FD%2Bot8eQ8zXpLJMljPe9mt1KYIoYQH13DoJO%2BSnxEahfMlcfJio6Vt2CLK7yCCiwzLvIzsXDw3CBv2i%2Bkkga1uvw3OjlMjfnEcRjPJ4VjfrEfrjGTy6TjnSuMiENlt4MMTSgz4CfdAOhL2avTkh7AAVlHzLUQCPxI1q69fdRI%2B3wUvEnMvK%2BjTpAiuxFmveQ9ws5%2BnUULRH54L37qejMOVeI5ryRzSSQPJZIRUJMV5nX%2FM71YC0uJ1TcVJMqlV2S10zl4%2B8jS5cfZka%2FFsESP6MkrB%2BDuI9JwTB7mI5bJzlVbtlfflblcw4aiY9nvd%2BdkUbifX%2FRLTXkOSmvEwz%2FfhbtLZ9oMwj%2BOwZGIXaupyZ2n0ZLk%2FCHNp1CObl3O8NVk4XQO%2BPUIvjqW93aiaZaQnt1fevy%2FWP58wMv6j6vKRmWK2dFxb2c8nojmLja9CYIJE4pVokwdDN0dW4uvNhp1ji9183kL%2BPZDi0kZ1HS5poNFpq1kPmlvimPGBMbBA991LdH0ZE0%2FhSE1wjE5VrfBTxkz8jDNxvlhr74qbPF6rB5esZYNGV1PJJdiwO0IxbL727ZFJ3dRpv1MYQIA7zDkKhmRvNH2%2FKCA7RLFw1nBACOoctXUTY0oTE89R7zTUFMYbfcRUDatJLTW7hCP3NbYLRE8YHaQESuA0yU4tbfY1IS%2BaurfI7iAcviEZxSk2y9akqRXo%2BsnfqV%2Bu6zV3RjuPS8X9%2FLnj4bj2xS1MP5s3ll2fx8FFwZ4%2BhnKy73eaj8kLCwP6ydLpA34APrj8%2B7PmXOjwO6%2FttZlAwZPf8pt%2Fnyx3VA02oun41c22TFSw5G06YIouLb1FK1doRBJKpuanQnf0TPywfg2fikSXEgdd%2FpOzqJ0Z4KDmiQMVp81vKFxfNJMBJJERy%2FC4Pbe2%2F%2BMj1xiYA72xupCTtzSlpO0h3HJM%2FUjIU70iK%2FeVo8W%2F5oG4hc5RR5qtZZ8wuyJekAjQmp3kSIqYxrMsLXoKFlRYwa7uhY3OUAJj87JdReMB2mdtLmGCu8vAVGyXreVO9EGMCWe6wqObm6DeYqLUzMqH6BSvsQSq%2FT28r9YQnmSoR8UH7rj4ENHnA96aRWd45rB1N1TpQKchlsMx71s1t34vGnFgdmbPR54SouwIU9I0vgqLwLNxJccJ8SFZYgQyNZx63oLfc%2FND%2FPnGiNcFuGvFcR4z3PZxxUxiGWIECWLcgj5MZqHyF4IFZQo%2B7rsPIWwjreOE50zEzCbkN1BRncsYjjHV5du4MyaEgww1jqWTL6O5f%2FQeBbKlfxDMi8ucHZby94P4itRSewQQdWjZpRunxIhyOZk24SsWPlUHEIYoj3le7qydXsDbt%2Fd2gHz9nO3f%2B%2BX3a4DdoAfipctxjYigMm6fzq8GqMG9FVDbpyUvhut7TrsmiBqzsr8qyRSuW%2B2cuqUjsDKVqG1sygPiXv5LvLjFQFQEixxNf7ed9aRRr0J3%2FE8gQ50EIASX%2FtzIMPXCmTULaAhdCohppG71oVG3K9Nz3mmCgUZ7S%2BZg9udbC1Shq44hp%2FDE1FslIiMhbLca2UYDKDKkk8YMit7AWDuq1L9RhsusHGrrTO9WoXSKvx20%2BN2D2SsqC0InP7IGwor%2BF4XQoRpbP4%2B0mtiOoIUI21K3SnDe2Za5nBn7JMg3LRSAJRTyFaYLk8jc1dbimsRLxEUoe%2F%2BwRHP7yeJrVoN1Thjdr4xdPYFyq2lkM%2FNLajfyXVJnz6CdDHD5cYXVO5Q7XTSCV%2FTIqOWDh2SyIoiWrGAWpRdaZB4%2BpiiaKFXG0Sy7%2Bpi0GOXv3HnewyyfQjWHlwu%2BYvQAy2mDjpkiGkG3tp7YF8%2FlLnVxUKNGV0AnSarRyOUmwTmhaKEAjYSVCUyqtlUjrZf1KCgsvi5VPlinB86Ot4jbWpT%2BNp6ZLO1HRzYKEIl%2FVEW8nCzxBi7PrF3ji1KbIwdMiuRWJYzyzpWeUzDHi1ml2mqEBsxTqRqsqwhM4KYDaaKGsqgTNpDpyb71AYBdLyz3yJXxa%2FonL14sQ7WrgRjRVhgpe3vBUSI2hN%2BsZtsts82jf2tx7zxAvlG8M7JPSUj7YerELqv3XKM4S9lI021ZdVbqpnKK6oPAEHGeIst%2FaUjVGhE19v0yu0mP4VuLu7kBvosA%2BHXZLOv3CRiz7UW1Zs4hj0LIJCqHW8TbAgxuUpZ7zJk8%2FW004uNoo13WEH4Iwim0ZIPH76NqnJ6%2B1%2BMrNwo171SEuRS%2FaQQp9oPWDdcytcdF3tzWwu4FnYi51N9ZASnYJkBpO%2FGmbrVzaouSLhWwuagb5WcSrzEQzRdPj8Xg0QXgxVtFXKyLKFRt7l7sg8uu50KC2v7vfygsnx%2FtOCy9B5a5uGUcrXNAmBhpiKGToijnqUm4hn7zG7K%2Bbw7kcWjMgGmdev0ZsRvjRaCTBJxxkW2CUhw%2BXKtPhM37%2FPSEgHHhYryUMQfr9QPNIjq4x%2BCJhee%2FGhu9Fc2rTwT78cE341hw%2BlhjfkLEQvvbVKa4JYVUWaJztpLJaSFF%2Bl9sAxBqlVVSdHUHp%2FRFObkMqAnYXi7tjOc8DCaMTc4EwEWDzn2kzOupW0OmbfHsuwWINLxfFxafHYTm3y8udjcRJ3f%2BzDwPE7LKL%2BsZkWR3Oi9VvFlBgCXlsItViVXBSbXqF3EP5iLu9WtCKG8j%2BqugfXGQZH5inYjS6nrYQ7E3RE5r9WlM0T8W2UZP8x01N8r427loZHsfuRz56AreKG%2FMyZ1z2LgVD9dQpRCqrpx7kJWpdm4DhrNXpqF5vsaToM%2BQDbrcyv8H2xwNMEG72%2FU3C2tLrULKbVyF1ON2YOh7qZ6k9KIcszZZkmvbc6jV2n2BU3VzWrNKlBoMJdbxd2pashEqJBQYsaJGdqrCyAwW6E8LhGBEiJSWHT2Y6UHIC6Su3uIyUqMJeO7p8KKmcmOswhQFa5bmuwJUAIrhc9%2FUCF6r%2FgyvzueZg1rEr24KAVH%2FPv0Ajtm7TdlAiGdDWYXUgiLOLybLp%2FfVRRjaVTQ%2B2i%2BPwTaVNknmau00RMXi9Dt46udf3%2Bc%2F6M%2Bd28qg4SUkikvmphBFcVYC5VK1NvhTw7I7kx875qXzMGXc4fnDAtsUmMNZxGMV20CVAvux7i7CHt4JR2YYRj0uOGeHhR3mfzNgwtB0PtVHWUcZreUAb3SAYJMVnIfeED5clC1Yro7%2FFLynBDhrJyiAOnG06Z7yhcP0hhw%2FQARFx5q8jamuJc9z8DRNRkZe2aVfa9aPHXK6%2BvJSdNHxRKNTgVgSgsLidvevrU27W%2BY0ufK4HZRDlRQK21q6AM8lx8MUHtV7AU4mFJ8o9TIAL8%2FIcjtJtg7hV7u5yDx8ZQsiSzMWma0uldW%2BN4SbuNk9G3OI6isUtfhutyo8QGQk%2FwHhY%2FOpDhb%2Fu6KHByGfUf6khRi3A8dkZJvg7cJ70fmMODahIhWOq2S6qRhHqVbq3DD5zs13FM1ja%2BxmbW4MRDAoGNFM1rrKuuqrFCTxQa5SBepSCoOaUpL3LnuIowXlxNwQ0NxVqrBdYze8XcgBgbPeaobyXxvVkZ9a3uhTg47glgoNKEJLgIgQkxa%2Boj%2F5NO0qehPXEnOYhSa1hnemDUs%2F6jqL9GIHx9JXMmyWqztdrUL3Q%2F%2BnXGHZVqVcqEk4thw65a32QqfF3po%2BE5ORYHaIJOZZ%2Fdz8e6RBGGEqGIzR1PXOSnSS4OtH%2FzEPdqEdxQ2yxE%2FJTRGeSFs%2Fs%2BP3iCLMI9lXZipfCe7pGhveSH1PmP%2BITp%2BIxBbDpBdzW84aVtS5muRJ%2BS%2FOUTXF5Y2CNGyvK6IaUFCpcT%2B%2BqKmWWFWq5CbWIDmtBEzg9%2FzRInzq9zp%2FedkOP7%2FsFH7DFClrkEPVNeXjCeZtTN9M7Ez%2FxdTXiqh0%2BhkYTSp5C7PqdTc%2Bo%2FlN1TCBi%2FzkHFrGk%2FXnTXe2G8Fxsko15utYt%2FSFV7rm3btB3BSCOoV5HesXb1PLtxjM4XWGSXVILpnqIHj6h6jRalSeaebJyRUe7LmSiO9aZMc870gs4xgvWCmE5Uiej%2F3TWzFYQhHiYqNVJFexIbVoCyZvPOAnmoDO9ttVYaMSFCE76YxQdb%2BzyI2bBQ9Pzf4jCIo1okIsdtWVYnmJLIdJ%2BcJfonim8hFsiQqx4Vch8kubvPjZfWVUSwEUd%2FimFH7bLrDIV0aapcfk57uR%2BlPp%2BBlN60gGckho3Y9dpjxdqEWrLwzl8%2B711Nhai3JmkUle6i8fZtKTQT73CtEgPfET4IisojCnv6GR%2B1SxeBkXMSykq%2F1mI0rxTp4vMUoYFHkTRn7cx4cYj9ghjsaYyMXwAWu3%2FCwlHeD4xCVmU8HnpxKogz7YmW6IiYRRupt8xvLYtY6RB1o63N0Dgxns0psqy%2BcBhyXuqpxUyAoFKMwLBzxaRvw%3D%3D&__VIEWSTATEGENERATOR=5DCC3F26&ctl00%24LoginView%24UserName=&ctl00%24LoginView%24Password=&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24ZIP=" + AbfragePLZ + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Quantity=" + Abfragemenge + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeId=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeCheckBox=on&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl02%24TypeId=2&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24PaymentGroup%24OptionGroupDropDown=6&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Stations=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryGroup%24OptionGroupDropDown=5&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryTimeGroup%24OptionGroupDropDown=24&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TruckSizeGroup%24OptionGroupDropDown=19&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TubeLengthGroup%24OptionGroupDropDown=9&ctl00%24MainContent%24OrderProcess_Step_1%24IsLoggedIn=0&ctl00%24MainContent%24OrderProcess_Step_1%24SortingType=-1&ctl00%24MainContent%24OrderProcess_Step_1%24ProductTypeSelector=1&ctl00%24MainContent%24OrderProcess_Step_1%24SortDropDown=-1&__ASYNCPOST=true&"
            log("Pelletspeise werden ermittelt "+ fetchstring,"info")
              let response = await fetch(fetchstring, {
                "headers": {
                  "accept": "*/*",
                  "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                  "cache-control": "no-cache",
                  "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                  "pragma": "no-cache",
                  "sec-ch-ua": "\"Google Chrome\";v=\"107\", \"Chromium\";v=\"107\", \"Not=A?Brand\";v=\"24\"",
                  "sec-ch-ua-mobile": "?0",
                  "sec-ch-ua-platform": "\"Windows\"",
                  "sec-fetch-dest": "empty",
                  "sec-fetch-mode": "cors",
                  "sec-fetch-site": "same-origin",
                  "x-microsoftajax": "Delta=true",
                  "x-requested-with": "XMLHttpRequest",
                  "Referer": fetchstring,
                  "Referrer-Policy": "strict-origin-when-cross-origin"
                },
                "body": bodystring,
                "method": "POST"
              });
                let text = await response.text();
                return text;
            } // EndFunction
             
             
             
            //--------------------------------------------------------------------------------------------------------------------
            // Function CreateStates
            //--------------------------------------------------------------------------------------------------------------------
            function CreateStates() {
                if ( !existsState(dpPrice1 )) { createState(dpPrice1,0,{name: "guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                if ( !existsState(dpPrice2 )) { createState(dpPrice2,0,{name: "Zweit guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                if ( !existsState(dpPrice3 )) { createState(dpPrice3,0,{name: "Dritt guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                if ( !existsState(dpDealer1)) { createState(dpDealer1,0,{name: "guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                if ( !existsState(dpDealer2)) { createState(dpDealer2,0,{name: "Zweit guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                if ( !existsState(dpDealer3)) { createState(dpDealer3,0,{name: "Dritt guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
            } // End Function
             
            
            HomoranH Offline
            HomoranH Offline
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #36

            @pepe12ooo sagte in Preis von Propellets.at mittels Parser auslesen:

            Und hier das Programm das seit ein par Tagen nicht mehr funktioniert:

            Was schreibt das log dazu?

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            L 1 Antwort Letzte Antwort
            0
            • HomoranH Homoran

              @pepe12ooo sagte in Preis von Propellets.at mittels Parser auslesen:

              Und hier das Programm das seit ein par Tagen nicht mehr funktioniert:

              Was schreibt das log dazu?

              L Offline
              L Offline
              looxer01
              schrieb am zuletzt editiert von
              #37

              Hi,

              aufgrund der neuen Seite muss der Fetch natürlich anders aussehen. Ich habe mir das mal angesehen und mit folgender URL kann man z.B. Pellets für ein PLZ Gebiet und einer Tonnage für lose Ware abrufen:
              https://www.heizpellets24.de/holzpellets-lose/angebotsliste?zipCode=60308&amount=6000&stations=1&product=20&options=108,131,-18,127,159&ap=0&pcert=4,2,6,1&lbp=0

              PLZ: 60308
              KG: 6000

              Auf der Seite im Browser ist dann die Liste ok.
              Allerdings im geladenen Text im Javascript finde ich die Lieferanten und deren Preise nicht.

              @oliverio
              Ich komme hier nicht weiter. Wäre super, wenn du mal schauen könntest

              vG Looxer

              OliverIOO 1 Antwort Letzte Antwort
              0
              • L looxer01

                Hi,

                aufgrund der neuen Seite muss der Fetch natürlich anders aussehen. Ich habe mir das mal angesehen und mit folgender URL kann man z.B. Pellets für ein PLZ Gebiet und einer Tonnage für lose Ware abrufen:
                https://www.heizpellets24.de/holzpellets-lose/angebotsliste?zipCode=60308&amount=6000&stations=1&product=20&options=108,131,-18,127,159&ap=0&pcert=4,2,6,1&lbp=0

                PLZ: 60308
                KG: 6000

                Auf der Seite im Browser ist dann die Liste ok.
                Allerdings im geladenen Text im Javascript finde ich die Lieferanten und deren Preise nicht.

                @oliverio
                Ich komme hier nicht weiter. Wäre super, wenn du mal schauen könntest

                vG Looxer

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von OliverIO
                #38

                @looxer01

                ja, der html-aufbau und css bezeichnung bei preis hat sich geändert.
                probiere mal den preis mit folgendem Aufbau

                $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim()
                

                Der Preis ist nun leider mit zusätzliochen Zeichen versehen (\n und leerzeichen).
                das ergänzte regex filtert diese zeichen nun aus.

                Der Lieferant müsste eigentlich ausgegeben werden.
                Falls nein, bitte evtl Fehlermeldungen hier mit angeben.
                Habe allerdings nicht das skript selbst geprüft, sondern nur die einzelnen Anweisungen im Browser und da erhalte ich das Ergebnis für dealer

                die sortierung der seite ist aber seltsam.
                255,13 bei manus ist günstiger als
                249,31 bei eckhard

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                L 1 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  @looxer01

                  ja, der html-aufbau und css bezeichnung bei preis hat sich geändert.
                  probiere mal den preis mit folgendem Aufbau

                  $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim()
                  

                  Der Preis ist nun leider mit zusätzliochen Zeichen versehen (\n und leerzeichen).
                  das ergänzte regex filtert diese zeichen nun aus.

                  Der Lieferant müsste eigentlich ausgegeben werden.
                  Falls nein, bitte evtl Fehlermeldungen hier mit angeben.
                  Habe allerdings nicht das skript selbst geprüft, sondern nur die einzelnen Anweisungen im Browser und da erhalte ich das Ergebnis für dealer

                  die sortierung der seite ist aber seltsam.
                  255,13 bei manus ist günstiger als
                  249,31 bei eckhard

                  L Offline
                  L Offline
                  looxer01
                  schrieb am zuletzt editiert von looxer01
                  #39

                  @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                  probiere mal den preis mit folgendem Aufbau

                  Vielen Dank für die Anpassung.

                  @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                  die sortierung der seite ist aber seltsam.

                  Die Sortierung sollte ok sein, da nach Gesamtpreis sortiert wird und der Tonnenpreis günstiger erscheinen kann. (z.B. wegen Einblaspauschalen)

                  Leider erhalte ich überhaupt keine Ergebnisse, weder für Dealer noch für Price.
                  Und wenn ich den string ausgebe als text (log), und nach dem Dealer suche (z.B. STRG F) dann erhalte ich auch kein Ergebnis. Mir scheint es so, dass der Fetch gar nicht das gewünschte Ergebnis liefert.

                  Ich poste mal den Code.
                  Irgendwas passt da noch nicht. Vielleicht kannst du mal reinschauen.

                  //Author Olivero aus Forumsbeitrag
                  //https://forum.iobroker.net/topic/56432/preis-von-propellets-at-mittels-parser-auslesen/22?_=1670064893887&lang=de
                  // Angepasst: 03.12.22 Looxer01
                  
                  //..........................................
                  // Einstellungen
                  //..........................................
                  const dpPrice1 = "javascript.0.Heizung.Pelletspreise.dpPrice1";
                  const dpDealer1 = "javascript.0.Heizung.Pelletspreise.dpDealer1";
                  const dpPrice2 = "javascript.0.Heizung.Pelletspreise.dpPrice2";
                  const dpDealer2 = "javascript.0.Heizung.Pelletspreise.dpDealer2";
                  const dpPrice3 = "javascript.0.Heizung.Pelletspreise.dpPrice3";
                  const dpDealer3 = "javascript.0.Heizung.Pelletspreise.dpDealer3";
                  
                  const Abfragemenge = "6000";
                  const AbfragePLZ = "60308";
                  //const Abfrageplan = '0 */2 * * *' ;            // Cron - alle 2 Stunden
                  const Abfrageplan = '* * * * *' ;            // Cron - jede Minute
                  
                  
                  //..........................................
                  // Programm Vorbereitung
                  //..........................................
                  const fetch = require("node-fetch");
                  const cheerio = require("cheerio");
                  CreateStates();
                  
                  //--------------------------------------------------------------------------------------------------------------------
                  // Schedule 
                  //--------------------------------------------------------------------------------------------------------------------
                  schedule (Abfrageplan,function () {
                  log("Pelletspeise schedule gestarted","info")
                  analyze();
                  
                  }) // End Schedule
                  //..........................................
                  // Programmablauf Ende
                  //..........................................
                  //analyze() 
                  
                  //--------------------------------------------------------------------------------------------------------------------
                  // Function Analyze
                  //--------------------------------------------------------------------------------------------------------------------
                  async function analyze() {
                    let text = await getData();
                    let $ = cheerio.load(text);
                   // log("Text geladen "+text)
                     let price1 = $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim() 
                    // let price1 = $($(".price-middle:not(.total)")[0]).text().trim();
                    // var  price1Total = $($(".price-middle total <span> ")[0]).text().trim();
                    let dealer1 = $($(".dealer-name")[0]).text().trim()
                  log("Dealer1 "+ dealer1 + " Price1 "+price1)
                     let price2 = $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim() 
                  //  let price2 = $($(".price-middle:not(.total)")[1]).text().trim();
                    let dealer2 = $($(".dealer-name")[1]).text().trim()
                  log("Dealer2 "+ dealer2 + " Price2 "+price2)
                     let price3 = $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim() 
                   // let price3 = $($(".price-middle:not(.total)")[2]).text().trim();
                    let dealer3 = $($(".dealer-name")[2]).text().trim()
                  log("Dealer3 "+ dealer3 + " Price3 "+price3)
                   // log ("Pelletspreise -  price 1 " + price1 + " Price 2 " + price2 + " Price 3 " + price3)
                    setState(dpPrice1,price1);
                    setState(dpDealer1,dealer1);
                    setState(dpPrice2,price2);
                    setState(dpDealer2,dealer2);
                    setState(dpPrice3,price3);
                    setState(dpDealer3,dealer3);
                  } // End Function
                  
                  
                  //--------------------------------------------------------------------------------------------------------------------
                  // Function getData
                  //--------------------------------------------------------------------------------------------------------------------
                  async function getData() {
                  var fetchstring = "https://www.heizpellets24.de/holzpellets-lose/angebotsliste?zipCode="+AbfragePLZ+"&amount="+Abfragemenge+"&stations=1&product=20&options=108,131,-18,127,159&ap=0&pcert=4,2,6,1&lbp=0"
                  //var fetchstring = "https://www.heizpellets24.de/pelletpreis-direkt/"+AbfragePLZ+"/"+Abfragemenge+"/1/dt5"
                  var bodystring =  "ctl00%24ScriptManager1=ctl00%24MainContent%24OrderProcess_Step_1%24PriceOrderUpdatePanel%7Cctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTTARGET=ctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTARGUMENT=LoadPrices&__LASTFOCUS=&__VIEWSTATE=ZOqYdG%2BFwZ%2BPrH15aLaMOhCzmA140AC7FRQT3yJlHciVxQ48WlVoIAneqpP531uNShrNE4s8pYwrxCbi2Al%2FD78egos7NN8N26Wwp3FQY0QU2BUEUQiUvMfvrw6k4579ZlpA%2BjWBFS2L9gdEqrq%2BNy%2F2FfulD2BLGcSw3dxN2BoDBJ6ZlKMEYhpcwsnrciH0JzSBmCppft1AUYcTCh4bnwEkEqrmCNNc6JWx0jm9kdJIHMlHNVXJg3HujRyj8g75ZwMJVzQQGVljGNVsx6EeMrHhu%2BVgrjM3dMPwV5p485kdwKlPvkhPliUDI3ES2l%2FLcTGvyQIdMULrFFG5TanRnKkRKf40BvCE8Wu233%2Bb5b7dl8vhb8PCOilHtpSvMESCcyrxMvctN2ALlFrLPfV15ydI6aghBWm1dULmXOMINUXu%2BTdc0irIq4qxw3BDYvjCVADCXio9a5syz5qcdori2HzaaTpFD1X5V2h8L3jG%2FRSnU9fGxl38FEHQ5CejNn%2FBqIpurm6uDvsfLznni1EwbO52WsrlqWVyIrKaT2594wPUVV9IKfg%2FJ9CjjlYASS2zQmXp2UNpZIJCWgFXqsL1Y0IJeONZmNdqt%2Fs5VL%2FXh0aZpWpr8Z0V4FzhsxX1Fz%2BSLVQ4s%2F7lQJ0r1ZKffmwNXdxHyqoag%2BTYBpqqv8wIs88%2BjO8ZIONKPaeRhoHmFFZAVCrP3bpaRYxwRPdRK1ZG0omNc%2FCmNhnoPr1flBfnqfMkhofm3ihkL3cEu6A%2BB%2Bdp4cVkuzCA6Pgva7JQ23bhOhXhN%2BHlwd1cwH6UBx83tTEEC5vMToqSMEQIM3Kzhf38FMlPf0E%2B77h1v2kaIP8l%2FxBDCwRpfqGoAtUIxrlJSdAEfaE2m4p4thTkkCj4XgUc2wWlxDHEbuNexg3oGS4TbgyO%2BPVMgUdq15QTir9YDQ6sPX16EMKjUmwes%2FERLwmctj8z3jCBrTBO%2FZl1HnHYApgpSmCIRq5UZTNAIIwouoMK%2FFlAkZJGMDpS6azY%2BHoXc42r%2BeB1r%2FOGMkcCs2Yg0i6sXXMM1MEes5V2ETT4RwzPVN1XN7oqCVlX9%2Fa2R%2FMpdyL%2BbriLCqVWgtBEp%2FaI3KhYlsb%2BvouM3MPeCXPvLQMlYtjUcF6AajPK8Kuilc1yS%2FluMNQrLSGnngyyU3%2BaBkDeU1SSdpPqRw7BJwgafDEiXwWXL9TTHuTrdDAGTteBFHvRI1%2BOS9qOzt9qZiJ3wBUA0NhtEWeOmrkpMUHj8NiP6IA3KLeDsu8InVNRKIX93ALsnNQKr2l57bPOmCgMAz2LKbPfUEPZGcuhIPW6857%2BDLyUpZPBimleNRXhzfZ5UKr0UV8oi9BIWeO9aEctJfRba1DxGHNL0CPXAAXJHDo9dQCxhSHB1O3NxPb8mFX8NhmFCsLSb78%2FMqPL%2BHjzAijQumviqAjRG8lmCDSTCt%2Bcam1a%2FkPZFH7KXlDhF7QWX45XOFc4mO6BDhCRmZcoD2%2FYHFkMEVPi7K%2FOlNL6jTAXqm0UTLnsGuhaeUwDRZlJKlJKjUfgGCFZYV78%2BjE%2FDDmocBaaBTqcWoJ4QyCUU70XxEN%2BZMPbZtnFtVXTeS0VPZykzMah%2BugET7zPlvS8xUO1YqbcpmoGeaXTDrchJdMnkOea02C4xa5aMwEnnAQi2udDLeMXfjYD8PhUThKP3anE93ta7u37jYvXm8vLXPVMNFCqUv%2BvJTUxEVlpYpczcgqqcUPGi9sNrmgVxgIFvnu%2BR%2FD%2Bot8eQ8zXpLJMljPe9mt1KYIoYQH13DoJO%2BSnxEahfMlcfJio6Vt2CLK7yCCiwzLvIzsXDw3CBv2i%2Bkkga1uvw3OjlMjfnEcRjPJ4VjfrEfrjGTy6TjnSuMiENlt4MMTSgz4CfdAOhL2avTkh7AAVlHzLUQCPxI1q69fdRI%2B3wUvEnMvK%2BjTpAiuxFmveQ9ws5%2BnUULRH54L37qejMOVeI5ryRzSSQPJZIRUJMV5nX%2FM71YC0uJ1TcVJMqlV2S10zl4%2B8jS5cfZka%2FFsESP6MkrB%2BDuI9JwTB7mI5bJzlVbtlfflblcw4aiY9nvd%2BdkUbifX%2FRLTXkOSmvEwz%2FfhbtLZ9oMwj%2BOwZGIXaupyZ2n0ZLk%2FCHNp1CObl3O8NVk4XQO%2BPUIvjqW93aiaZaQnt1fevy%2FWP58wMv6j6vKRmWK2dFxb2c8nojmLja9CYIJE4pVokwdDN0dW4uvNhp1ji9183kL%2BPZDi0kZ1HS5poNFpq1kPmlvimPGBMbBA991LdH0ZE0%2FhSE1wjE5VrfBTxkz8jDNxvlhr74qbPF6rB5esZYNGV1PJJdiwO0IxbL727ZFJ3dRpv1MYQIA7zDkKhmRvNH2%2FKCA7RLFw1nBACOoctXUTY0oTE89R7zTUFMYbfcRUDatJLTW7hCP3NbYLRE8YHaQESuA0yU4tbfY1IS%2BaurfI7iAcviEZxSk2y9akqRXo%2BsnfqV%2Bu6zV3RjuPS8X9%2FLnj4bj2xS1MP5s3ll2fx8FFwZ4%2BhnKy73eaj8kLCwP6ydLpA34APrj8%2B7PmXOjwO6%2FttZlAwZPf8pt%2Fnyx3VA02oun41c22TFSw5G06YIouLb1FK1doRBJKpuanQnf0TPywfg2fikSXEgdd%2FpOzqJ0Z4KDmiQMVp81vKFxfNJMBJJERy%2FC4Pbe2%2F%2BMj1xiYA72xupCTtzSlpO0h3HJM%2FUjIU70iK%2FeVo8W%2F5oG4hc5RR5qtZZ8wuyJekAjQmp3kSIqYxrMsLXoKFlRYwa7uhY3OUAJj87JdReMB2mdtLmGCu8vAVGyXreVO9EGMCWe6wqObm6DeYqLUzMqH6BSvsQSq%2FT28r9YQnmSoR8UH7rj4ENHnA96aRWd45rB1N1TpQKchlsMx71s1t34vGnFgdmbPR54SouwIU9I0vgqLwLNxJccJ8SFZYgQyNZx63oLfc%2FND%2FPnGiNcFuGvFcR4z3PZxxUxiGWIECWLcgj5MZqHyF4IFZQo%2B7rsPIWwjreOE50zEzCbkN1BRncsYjjHV5du4MyaEgww1jqWTL6O5f%2FQeBbKlfxDMi8ucHZby94P4itRSewQQdWjZpRunxIhyOZk24SsWPlUHEIYoj3le7qydXsDbt%2Fd2gHz9nO3f%2B%2BX3a4DdoAfipctxjYigMm6fzq8GqMG9FVDbpyUvhut7TrsmiBqzsr8qyRSuW%2B2cuqUjsDKVqG1sygPiXv5LvLjFQFQEixxNf7ed9aRRr0J3%2FE8gQ50EIASX%2FtzIMPXCmTULaAhdCohppG71oVG3K9Nz3mmCgUZ7S%2BZg9udbC1Shq44hp%2FDE1FslIiMhbLca2UYDKDKkk8YMit7AWDuq1L9RhsusHGrrTO9WoXSKvx20%2BN2D2SsqC0InP7IGwor%2BF4XQoRpbP4%2B0mtiOoIUI21K3SnDe2Za5nBn7JMg3LRSAJRTyFaYLk8jc1dbimsRLxEUoe%2F%2BwRHP7yeJrVoN1Thjdr4xdPYFyq2lkM%2FNLajfyXVJnz6CdDHD5cYXVO5Q7XTSCV%2FTIqOWDh2SyIoiWrGAWpRdaZB4%2BpiiaKFXG0Sy7%2Bpi0GOXv3HnewyyfQjWHlwu%2BYvQAy2mDjpkiGkG3tp7YF8%2FlLnVxUKNGV0AnSarRyOUmwTmhaKEAjYSVCUyqtlUjrZf1KCgsvi5VPlinB86Ot4jbWpT%2BNp6ZLO1HRzYKEIl%2FVEW8nCzxBi7PrF3ji1KbIwdMiuRWJYzyzpWeUzDHi1ml2mqEBsxTqRqsqwhM4KYDaaKGsqgTNpDpyb71AYBdLyz3yJXxa%2FonL14sQ7WrgRjRVhgpe3vBUSI2hN%2BsZtsts82jf2tx7zxAvlG8M7JPSUj7YerELqv3XKM4S9lI021ZdVbqpnKK6oPAEHGeIst%2FaUjVGhE19v0yu0mP4VuLu7kBvosA%2BHXZLOv3CRiz7UW1Zs4hj0LIJCqHW8TbAgxuUpZ7zJk8%2FW004uNoo13WEH4Iwim0ZIPH76NqnJ6%2B1%2BMrNwo171SEuRS%2FaQQp9oPWDdcytcdF3tzWwu4FnYi51N9ZASnYJkBpO%2FGmbrVzaouSLhWwuagb5WcSrzEQzRdPj8Xg0QXgxVtFXKyLKFRt7l7sg8uu50KC2v7vfygsnx%2FtOCy9B5a5uGUcrXNAmBhpiKGToijnqUm4hn7zG7K%2Bbw7kcWjMgGmdev0ZsRvjRaCTBJxxkW2CUhw%2BXKtPhM37%2FPSEgHHhYryUMQfr9QPNIjq4x%2BCJhee%2FGhu9Fc2rTwT78cE341hw%2BlhjfkLEQvvbVKa4JYVUWaJztpLJaSFF%2Bl9sAxBqlVVSdHUHp%2FRFObkMqAnYXi7tjOc8DCaMTc4EwEWDzn2kzOupW0OmbfHsuwWINLxfFxafHYTm3y8udjcRJ3f%2BzDwPE7LKL%2BsZkWR3Oi9VvFlBgCXlsItViVXBSbXqF3EP5iLu9WtCKG8j%2BqugfXGQZH5inYjS6nrYQ7E3RE5r9WlM0T8W2UZP8x01N8r427loZHsfuRz56AreKG%2FMyZ1z2LgVD9dQpRCqrpx7kJWpdm4DhrNXpqF5vsaToM%2BQDbrcyv8H2xwNMEG72%2FU3C2tLrULKbVyF1ON2YOh7qZ6k9KIcszZZkmvbc6jV2n2BU3VzWrNKlBoMJdbxd2pashEqJBQYsaJGdqrCyAwW6E8LhGBEiJSWHT2Y6UHIC6Su3uIyUqMJeO7p8KKmcmOswhQFa5bmuwJUAIrhc9%2FUCF6r%2FgyvzueZg1rEr24KAVH%2FPv0Ajtm7TdlAiGdDWYXUgiLOLybLp%2FfVRRjaVTQ%2B2i%2BPwTaVNknmau00RMXi9Dt46udf3%2Bc%2F6M%2Bd28qg4SUkikvmphBFcVYC5VK1NvhTw7I7kx875qXzMGXc4fnDAtsUmMNZxGMV20CVAvux7i7CHt4JR2YYRj0uOGeHhR3mfzNgwtB0PtVHWUcZreUAb3SAYJMVnIfeED5clC1Yro7%2FFLynBDhrJyiAOnG06Z7yhcP0hhw%2FQARFx5q8jamuJc9z8DRNRkZe2aVfa9aPHXK6%2BvJSdNHxRKNTgVgSgsLidvevrU27W%2BY0ufK4HZRDlRQK21q6AM8lx8MUHtV7AU4mFJ8o9TIAL8%2FIcjtJtg7hV7u5yDx8ZQsiSzMWma0uldW%2BN4SbuNk9G3OI6isUtfhutyo8QGQk%2FwHhY%2FOpDhb%2Fu6KHByGfUf6khRi3A8dkZJvg7cJ70fmMODahIhWOq2S6qRhHqVbq3DD5zs13FM1ja%2BxmbW4MRDAoGNFM1rrKuuqrFCTxQa5SBepSCoOaUpL3LnuIowXlxNwQ0NxVqrBdYze8XcgBgbPeaobyXxvVkZ9a3uhTg47glgoNKEJLgIgQkxa%2Boj%2F5NO0qehPXEnOYhSa1hnemDUs%2F6jqL9GIHx9JXMmyWqztdrUL3Q%2F%2BnXGHZVqVcqEk4thw65a32QqfF3po%2BE5ORYHaIJOZZ%2Fdz8e6RBGGEqGIzR1PXOSnSS4OtH%2FzEPdqEdxQ2yxE%2FJTRGeSFs%2Fs%2BP3iCLMI9lXZipfCe7pGhveSH1PmP%2BITp%2BIxBbDpBdzW84aVtS5muRJ%2BS%2FOUTXF5Y2CNGyvK6IaUFCpcT%2B%2BqKmWWFWq5CbWIDmtBEzg9%2FzRInzq9zp%2FedkOP7%2FsFH7DFClrkEPVNeXjCeZtTN9M7Ez%2FxdTXiqh0%2BhkYTSp5C7PqdTc%2Bo%2FlN1TCBi%2FzkHFrGk%2FXnTXe2G8Fxsko15utYt%2FSFV7rm3btB3BSCOoV5HesXb1PLtxjM4XWGSXVILpnqIHj6h6jRalSeaebJyRUe7LmSiO9aZMc870gs4xgvWCmE5Uiej%2F3TWzFYQhHiYqNVJFexIbVoCyZvPOAnmoDO9ttVYaMSFCE76YxQdb%2BzyI2bBQ9Pzf4jCIo1okIsdtWVYnmJLIdJ%2BcJfonim8hFsiQqx4Vch8kubvPjZfWVUSwEUd%2FimFH7bLrDIV0aapcfk57uR%2BlPp%2BBlN60gGckho3Y9dpjxdqEWrLwzl8%2B711Nhai3JmkUle6i8fZtKTQT73CtEgPfET4IisojCnv6GR%2B1SxeBkXMSykq%2F1mI0rxTp4vMUoYFHkTRn7cx4cYj9ghjsaYyMXwAWu3%2FCwlHeD4xCVmU8HnpxKogz7YmW6IiYRRupt8xvLYtY6RB1o63N0Dgxns0psqy%2BcBhyXuqpxUyAoFKMwLBzxaRvw%3D%3D&__VIEWSTATEGENERATOR=5DCC3F26&ctl00%24LoginView%24UserName=&ctl00%24LoginView%24Password=&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24ZIP=" + AbfragePLZ + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Quantity=" + Abfragemenge + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeId=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeCheckBox=on&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl02%24TypeId=2&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24PaymentGroup%24OptionGroupDropDown=6&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Stations=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryGroup%24OptionGroupDropDown=5&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryTimeGroup%24OptionGroupDropDown=24&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TruckSizeGroup%24OptionGroupDropDown=19&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TubeLengthGroup%24OptionGroupDropDown=9&ctl00%24MainContent%24OrderProcess_Step_1%24IsLoggedIn=0&ctl00%24MainContent%24OrderProcess_Step_1%24SortingType=-1&ctl00%24MainContent%24OrderProcess_Step_1%24ProductTypeSelector=1&ctl00%24MainContent%24OrderProcess_Step_1%24SortDropDown=-1&__ASYNCPOST=true&"
                  log("Pelletspeise werden ermittelt "+ fetchstring,"info")
                    let response = await fetch(fetchstring, {
                      "headers": {
                        "accept": "*/*",
                        "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                        "cache-control": "no-cache",
                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                        "pragma": "no-cache",
                        "sec-ch-ua": "\"Google Chrome\";v=\"107\", \"Chromium\";v=\"107\", \"Not=A?Brand\";v=\"24\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-microsoftajax": "Delta=true",
                        "x-requested-with": "XMLHttpRequest",
                        "Referer": fetchstring,
                        "Referrer-Policy": "strict-origin-when-cross-origin"
                      },
                      "body": bodystring,
                      "method": "POST"
                    });
                      let text = await response.text();
                      return text;
                  } // EndFunction
                  
                  
                  
                  //--------------------------------------------------------------------------------------------------------------------
                  // Function CreateStates
                  //--------------------------------------------------------------------------------------------------------------------
                  function CreateStates() {
                      if ( !existsState(dpPrice1 )) { createState(dpPrice1,0,{name: "guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                      if ( !existsState(dpPrice2 )) { createState(dpPrice2,0,{name: "Zweit guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                      if ( !existsState(dpPrice3 )) { createState(dpPrice3,0,{name: "Dritt guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                      if ( !existsState(dpDealer1)) { createState(dpDealer1,0,{name: "guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                      if ( !existsState(dpDealer2)) { createState(dpDealer2,0,{name: "Zweit guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                      if ( !existsState(dpDealer3)) { createState(dpDealer3,0,{name: "Dritt guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                  } // End Function
                  
                   
                  
                   
                  

                  vG Looxer

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • L looxer01

                    @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                    probiere mal den preis mit folgendem Aufbau

                    Vielen Dank für die Anpassung.

                    @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                    die sortierung der seite ist aber seltsam.

                    Die Sortierung sollte ok sein, da nach Gesamtpreis sortiert wird und der Tonnenpreis günstiger erscheinen kann. (z.B. wegen Einblaspauschalen)

                    Leider erhalte ich überhaupt keine Ergebnisse, weder für Dealer noch für Price.
                    Und wenn ich den string ausgebe als text (log), und nach dem Dealer suche (z.B. STRG F) dann erhalte ich auch kein Ergebnis. Mir scheint es so, dass der Fetch gar nicht das gewünschte Ergebnis liefert.

                    Ich poste mal den Code.
                    Irgendwas passt da noch nicht. Vielleicht kannst du mal reinschauen.

                    //Author Olivero aus Forumsbeitrag
                    //https://forum.iobroker.net/topic/56432/preis-von-propellets-at-mittels-parser-auslesen/22?_=1670064893887&lang=de
                    // Angepasst: 03.12.22 Looxer01
                    
                    //..........................................
                    // Einstellungen
                    //..........................................
                    const dpPrice1 = "javascript.0.Heizung.Pelletspreise.dpPrice1";
                    const dpDealer1 = "javascript.0.Heizung.Pelletspreise.dpDealer1";
                    const dpPrice2 = "javascript.0.Heizung.Pelletspreise.dpPrice2";
                    const dpDealer2 = "javascript.0.Heizung.Pelletspreise.dpDealer2";
                    const dpPrice3 = "javascript.0.Heizung.Pelletspreise.dpPrice3";
                    const dpDealer3 = "javascript.0.Heizung.Pelletspreise.dpDealer3";
                    
                    const Abfragemenge = "6000";
                    const AbfragePLZ = "60308";
                    //const Abfrageplan = '0 */2 * * *' ;            // Cron - alle 2 Stunden
                    const Abfrageplan = '* * * * *' ;            // Cron - jede Minute
                    
                    
                    //..........................................
                    // Programm Vorbereitung
                    //..........................................
                    const fetch = require("node-fetch");
                    const cheerio = require("cheerio");
                    CreateStates();
                    
                    //--------------------------------------------------------------------------------------------------------------------
                    // Schedule 
                    //--------------------------------------------------------------------------------------------------------------------
                    schedule (Abfrageplan,function () {
                    log("Pelletspeise schedule gestarted","info")
                    analyze();
                    
                    }) // End Schedule
                    //..........................................
                    // Programmablauf Ende
                    //..........................................
                    //analyze() 
                    
                    //--------------------------------------------------------------------------------------------------------------------
                    // Function Analyze
                    //--------------------------------------------------------------------------------------------------------------------
                    async function analyze() {
                      let text = await getData();
                      let $ = cheerio.load(text);
                     // log("Text geladen "+text)
                       let price1 = $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim() 
                      // let price1 = $($(".price-middle:not(.total)")[0]).text().trim();
                      // var  price1Total = $($(".price-middle total <span> ")[0]).text().trim();
                      let dealer1 = $($(".dealer-name")[0]).text().trim()
                    log("Dealer1 "+ dealer1 + " Price1 "+price1)
                       let price2 = $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim() 
                    //  let price2 = $($(".price-middle:not(.total)")[1]).text().trim();
                      let dealer2 = $($(".dealer-name")[1]).text().trim()
                    log("Dealer2 "+ dealer2 + " Price2 "+price2)
                       let price3 = $($(".dynamic-currency-number")[0]).text().replace(/[^0-9,]/g,"").trim() 
                     // let price3 = $($(".price-middle:not(.total)")[2]).text().trim();
                      let dealer3 = $($(".dealer-name")[2]).text().trim()
                    log("Dealer3 "+ dealer3 + " Price3 "+price3)
                     // log ("Pelletspreise -  price 1 " + price1 + " Price 2 " + price2 + " Price 3 " + price3)
                      setState(dpPrice1,price1);
                      setState(dpDealer1,dealer1);
                      setState(dpPrice2,price2);
                      setState(dpDealer2,dealer2);
                      setState(dpPrice3,price3);
                      setState(dpDealer3,dealer3);
                    } // End Function
                    
                    
                    //--------------------------------------------------------------------------------------------------------------------
                    // Function getData
                    //--------------------------------------------------------------------------------------------------------------------
                    async function getData() {
                    var fetchstring = "https://www.heizpellets24.de/holzpellets-lose/angebotsliste?zipCode="+AbfragePLZ+"&amount="+Abfragemenge+"&stations=1&product=20&options=108,131,-18,127,159&ap=0&pcert=4,2,6,1&lbp=0"
                    //var fetchstring = "https://www.heizpellets24.de/pelletpreis-direkt/"+AbfragePLZ+"/"+Abfragemenge+"/1/dt5"
                    var bodystring =  "ctl00%24ScriptManager1=ctl00%24MainContent%24OrderProcess_Step_1%24PriceOrderUpdatePanel%7Cctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTTARGET=ctl00_MainContent_OrderProcess_Step_1_PriceOrderUpdatePanel&__EVENTARGUMENT=LoadPrices&__LASTFOCUS=&__VIEWSTATE=ZOqYdG%2BFwZ%2BPrH15aLaMOhCzmA140AC7FRQT3yJlHciVxQ48WlVoIAneqpP531uNShrNE4s8pYwrxCbi2Al%2FD78egos7NN8N26Wwp3FQY0QU2BUEUQiUvMfvrw6k4579ZlpA%2BjWBFS2L9gdEqrq%2BNy%2F2FfulD2BLGcSw3dxN2BoDBJ6ZlKMEYhpcwsnrciH0JzSBmCppft1AUYcTCh4bnwEkEqrmCNNc6JWx0jm9kdJIHMlHNVXJg3HujRyj8g75ZwMJVzQQGVljGNVsx6EeMrHhu%2BVgrjM3dMPwV5p485kdwKlPvkhPliUDI3ES2l%2FLcTGvyQIdMULrFFG5TanRnKkRKf40BvCE8Wu233%2Bb5b7dl8vhb8PCOilHtpSvMESCcyrxMvctN2ALlFrLPfV15ydI6aghBWm1dULmXOMINUXu%2BTdc0irIq4qxw3BDYvjCVADCXio9a5syz5qcdori2HzaaTpFD1X5V2h8L3jG%2FRSnU9fGxl38FEHQ5CejNn%2FBqIpurm6uDvsfLznni1EwbO52WsrlqWVyIrKaT2594wPUVV9IKfg%2FJ9CjjlYASS2zQmXp2UNpZIJCWgFXqsL1Y0IJeONZmNdqt%2Fs5VL%2FXh0aZpWpr8Z0V4FzhsxX1Fz%2BSLVQ4s%2F7lQJ0r1ZKffmwNXdxHyqoag%2BTYBpqqv8wIs88%2BjO8ZIONKPaeRhoHmFFZAVCrP3bpaRYxwRPdRK1ZG0omNc%2FCmNhnoPr1flBfnqfMkhofm3ihkL3cEu6A%2BB%2Bdp4cVkuzCA6Pgva7JQ23bhOhXhN%2BHlwd1cwH6UBx83tTEEC5vMToqSMEQIM3Kzhf38FMlPf0E%2B77h1v2kaIP8l%2FxBDCwRpfqGoAtUIxrlJSdAEfaE2m4p4thTkkCj4XgUc2wWlxDHEbuNexg3oGS4TbgyO%2BPVMgUdq15QTir9YDQ6sPX16EMKjUmwes%2FERLwmctj8z3jCBrTBO%2FZl1HnHYApgpSmCIRq5UZTNAIIwouoMK%2FFlAkZJGMDpS6azY%2BHoXc42r%2BeB1r%2FOGMkcCs2Yg0i6sXXMM1MEes5V2ETT4RwzPVN1XN7oqCVlX9%2Fa2R%2FMpdyL%2BbriLCqVWgtBEp%2FaI3KhYlsb%2BvouM3MPeCXPvLQMlYtjUcF6AajPK8Kuilc1yS%2FluMNQrLSGnngyyU3%2BaBkDeU1SSdpPqRw7BJwgafDEiXwWXL9TTHuTrdDAGTteBFHvRI1%2BOS9qOzt9qZiJ3wBUA0NhtEWeOmrkpMUHj8NiP6IA3KLeDsu8InVNRKIX93ALsnNQKr2l57bPOmCgMAz2LKbPfUEPZGcuhIPW6857%2BDLyUpZPBimleNRXhzfZ5UKr0UV8oi9BIWeO9aEctJfRba1DxGHNL0CPXAAXJHDo9dQCxhSHB1O3NxPb8mFX8NhmFCsLSb78%2FMqPL%2BHjzAijQumviqAjRG8lmCDSTCt%2Bcam1a%2FkPZFH7KXlDhF7QWX45XOFc4mO6BDhCRmZcoD2%2FYHFkMEVPi7K%2FOlNL6jTAXqm0UTLnsGuhaeUwDRZlJKlJKjUfgGCFZYV78%2BjE%2FDDmocBaaBTqcWoJ4QyCUU70XxEN%2BZMPbZtnFtVXTeS0VPZykzMah%2BugET7zPlvS8xUO1YqbcpmoGeaXTDrchJdMnkOea02C4xa5aMwEnnAQi2udDLeMXfjYD8PhUThKP3anE93ta7u37jYvXm8vLXPVMNFCqUv%2BvJTUxEVlpYpczcgqqcUPGi9sNrmgVxgIFvnu%2BR%2FD%2Bot8eQ8zXpLJMljPe9mt1KYIoYQH13DoJO%2BSnxEahfMlcfJio6Vt2CLK7yCCiwzLvIzsXDw3CBv2i%2Bkkga1uvw3OjlMjfnEcRjPJ4VjfrEfrjGTy6TjnSuMiENlt4MMTSgz4CfdAOhL2avTkh7AAVlHzLUQCPxI1q69fdRI%2B3wUvEnMvK%2BjTpAiuxFmveQ9ws5%2BnUULRH54L37qejMOVeI5ryRzSSQPJZIRUJMV5nX%2FM71YC0uJ1TcVJMqlV2S10zl4%2B8jS5cfZka%2FFsESP6MkrB%2BDuI9JwTB7mI5bJzlVbtlfflblcw4aiY9nvd%2BdkUbifX%2FRLTXkOSmvEwz%2FfhbtLZ9oMwj%2BOwZGIXaupyZ2n0ZLk%2FCHNp1CObl3O8NVk4XQO%2BPUIvjqW93aiaZaQnt1fevy%2FWP58wMv6j6vKRmWK2dFxb2c8nojmLja9CYIJE4pVokwdDN0dW4uvNhp1ji9183kL%2BPZDi0kZ1HS5poNFpq1kPmlvimPGBMbBA991LdH0ZE0%2FhSE1wjE5VrfBTxkz8jDNxvlhr74qbPF6rB5esZYNGV1PJJdiwO0IxbL727ZFJ3dRpv1MYQIA7zDkKhmRvNH2%2FKCA7RLFw1nBACOoctXUTY0oTE89R7zTUFMYbfcRUDatJLTW7hCP3NbYLRE8YHaQESuA0yU4tbfY1IS%2BaurfI7iAcviEZxSk2y9akqRXo%2BsnfqV%2Bu6zV3RjuPS8X9%2FLnj4bj2xS1MP5s3ll2fx8FFwZ4%2BhnKy73eaj8kLCwP6ydLpA34APrj8%2B7PmXOjwO6%2FttZlAwZPf8pt%2Fnyx3VA02oun41c22TFSw5G06YIouLb1FK1doRBJKpuanQnf0TPywfg2fikSXEgdd%2FpOzqJ0Z4KDmiQMVp81vKFxfNJMBJJERy%2FC4Pbe2%2F%2BMj1xiYA72xupCTtzSlpO0h3HJM%2FUjIU70iK%2FeVo8W%2F5oG4hc5RR5qtZZ8wuyJekAjQmp3kSIqYxrMsLXoKFlRYwa7uhY3OUAJj87JdReMB2mdtLmGCu8vAVGyXreVO9EGMCWe6wqObm6DeYqLUzMqH6BSvsQSq%2FT28r9YQnmSoR8UH7rj4ENHnA96aRWd45rB1N1TpQKchlsMx71s1t34vGnFgdmbPR54SouwIU9I0vgqLwLNxJccJ8SFZYgQyNZx63oLfc%2FND%2FPnGiNcFuGvFcR4z3PZxxUxiGWIECWLcgj5MZqHyF4IFZQo%2B7rsPIWwjreOE50zEzCbkN1BRncsYjjHV5du4MyaEgww1jqWTL6O5f%2FQeBbKlfxDMi8ucHZby94P4itRSewQQdWjZpRunxIhyOZk24SsWPlUHEIYoj3le7qydXsDbt%2Fd2gHz9nO3f%2B%2BX3a4DdoAfipctxjYigMm6fzq8GqMG9FVDbpyUvhut7TrsmiBqzsr8qyRSuW%2B2cuqUjsDKVqG1sygPiXv5LvLjFQFQEixxNf7ed9aRRr0J3%2FE8gQ50EIASX%2FtzIMPXCmTULaAhdCohppG71oVG3K9Nz3mmCgUZ7S%2BZg9udbC1Shq44hp%2FDE1FslIiMhbLca2UYDKDKkk8YMit7AWDuq1L9RhsusHGrrTO9WoXSKvx20%2BN2D2SsqC0InP7IGwor%2BF4XQoRpbP4%2B0mtiOoIUI21K3SnDe2Za5nBn7JMg3LRSAJRTyFaYLk8jc1dbimsRLxEUoe%2F%2BwRHP7yeJrVoN1Thjdr4xdPYFyq2lkM%2FNLajfyXVJnz6CdDHD5cYXVO5Q7XTSCV%2FTIqOWDh2SyIoiWrGAWpRdaZB4%2BpiiaKFXG0Sy7%2Bpi0GOXv3HnewyyfQjWHlwu%2BYvQAy2mDjpkiGkG3tp7YF8%2FlLnVxUKNGV0AnSarRyOUmwTmhaKEAjYSVCUyqtlUjrZf1KCgsvi5VPlinB86Ot4jbWpT%2BNp6ZLO1HRzYKEIl%2FVEW8nCzxBi7PrF3ji1KbIwdMiuRWJYzyzpWeUzDHi1ml2mqEBsxTqRqsqwhM4KYDaaKGsqgTNpDpyb71AYBdLyz3yJXxa%2FonL14sQ7WrgRjRVhgpe3vBUSI2hN%2BsZtsts82jf2tx7zxAvlG8M7JPSUj7YerELqv3XKM4S9lI021ZdVbqpnKK6oPAEHGeIst%2FaUjVGhE19v0yu0mP4VuLu7kBvosA%2BHXZLOv3CRiz7UW1Zs4hj0LIJCqHW8TbAgxuUpZ7zJk8%2FW004uNoo13WEH4Iwim0ZIPH76NqnJ6%2B1%2BMrNwo171SEuRS%2FaQQp9oPWDdcytcdF3tzWwu4FnYi51N9ZASnYJkBpO%2FGmbrVzaouSLhWwuagb5WcSrzEQzRdPj8Xg0QXgxVtFXKyLKFRt7l7sg8uu50KC2v7vfygsnx%2FtOCy9B5a5uGUcrXNAmBhpiKGToijnqUm4hn7zG7K%2Bbw7kcWjMgGmdev0ZsRvjRaCTBJxxkW2CUhw%2BXKtPhM37%2FPSEgHHhYryUMQfr9QPNIjq4x%2BCJhee%2FGhu9Fc2rTwT78cE341hw%2BlhjfkLEQvvbVKa4JYVUWaJztpLJaSFF%2Bl9sAxBqlVVSdHUHp%2FRFObkMqAnYXi7tjOc8DCaMTc4EwEWDzn2kzOupW0OmbfHsuwWINLxfFxafHYTm3y8udjcRJ3f%2BzDwPE7LKL%2BsZkWR3Oi9VvFlBgCXlsItViVXBSbXqF3EP5iLu9WtCKG8j%2BqugfXGQZH5inYjS6nrYQ7E3RE5r9WlM0T8W2UZP8x01N8r427loZHsfuRz56AreKG%2FMyZ1z2LgVD9dQpRCqrpx7kJWpdm4DhrNXpqF5vsaToM%2BQDbrcyv8H2xwNMEG72%2FU3C2tLrULKbVyF1ON2YOh7qZ6k9KIcszZZkmvbc6jV2n2BU3VzWrNKlBoMJdbxd2pashEqJBQYsaJGdqrCyAwW6E8LhGBEiJSWHT2Y6UHIC6Su3uIyUqMJeO7p8KKmcmOswhQFa5bmuwJUAIrhc9%2FUCF6r%2FgyvzueZg1rEr24KAVH%2FPv0Ajtm7TdlAiGdDWYXUgiLOLybLp%2FfVRRjaVTQ%2B2i%2BPwTaVNknmau00RMXi9Dt46udf3%2Bc%2F6M%2Bd28qg4SUkikvmphBFcVYC5VK1NvhTw7I7kx875qXzMGXc4fnDAtsUmMNZxGMV20CVAvux7i7CHt4JR2YYRj0uOGeHhR3mfzNgwtB0PtVHWUcZreUAb3SAYJMVnIfeED5clC1Yro7%2FFLynBDhrJyiAOnG06Z7yhcP0hhw%2FQARFx5q8jamuJc9z8DRNRkZe2aVfa9aPHXK6%2BvJSdNHxRKNTgVgSgsLidvevrU27W%2BY0ufK4HZRDlRQK21q6AM8lx8MUHtV7AU4mFJ8o9TIAL8%2FIcjtJtg7hV7u5yDx8ZQsiSzMWma0uldW%2BN4SbuNk9G3OI6isUtfhutyo8QGQk%2FwHhY%2FOpDhb%2Fu6KHByGfUf6khRi3A8dkZJvg7cJ70fmMODahIhWOq2S6qRhHqVbq3DD5zs13FM1ja%2BxmbW4MRDAoGNFM1rrKuuqrFCTxQa5SBepSCoOaUpL3LnuIowXlxNwQ0NxVqrBdYze8XcgBgbPeaobyXxvVkZ9a3uhTg47glgoNKEJLgIgQkxa%2Boj%2F5NO0qehPXEnOYhSa1hnemDUs%2F6jqL9GIHx9JXMmyWqztdrUL3Q%2F%2BnXGHZVqVcqEk4thw65a32QqfF3po%2BE5ORYHaIJOZZ%2Fdz8e6RBGGEqGIzR1PXOSnSS4OtH%2FzEPdqEdxQ2yxE%2FJTRGeSFs%2Fs%2BP3iCLMI9lXZipfCe7pGhveSH1PmP%2BITp%2BIxBbDpBdzW84aVtS5muRJ%2BS%2FOUTXF5Y2CNGyvK6IaUFCpcT%2B%2BqKmWWFWq5CbWIDmtBEzg9%2FzRInzq9zp%2FedkOP7%2FsFH7DFClrkEPVNeXjCeZtTN9M7Ez%2FxdTXiqh0%2BhkYTSp5C7PqdTc%2Bo%2FlN1TCBi%2FzkHFrGk%2FXnTXe2G8Fxsko15utYt%2FSFV7rm3btB3BSCOoV5HesXb1PLtxjM4XWGSXVILpnqIHj6h6jRalSeaebJyRUe7LmSiO9aZMc870gs4xgvWCmE5Uiej%2F3TWzFYQhHiYqNVJFexIbVoCyZvPOAnmoDO9ttVYaMSFCE76YxQdb%2BzyI2bBQ9Pzf4jCIo1okIsdtWVYnmJLIdJ%2BcJfonim8hFsiQqx4Vch8kubvPjZfWVUSwEUd%2FimFH7bLrDIV0aapcfk57uR%2BlPp%2BBlN60gGckho3Y9dpjxdqEWrLwzl8%2B711Nhai3JmkUle6i8fZtKTQT73CtEgPfET4IisojCnv6GR%2B1SxeBkXMSykq%2F1mI0rxTp4vMUoYFHkTRn7cx4cYj9ghjsaYyMXwAWu3%2FCwlHeD4xCVmU8HnpxKogz7YmW6IiYRRupt8xvLYtY6RB1o63N0Dgxns0psqy%2BcBhyXuqpxUyAoFKMwLBzxaRvw%3D%3D&__VIEWSTATEGENERATOR=5DCC3F26&ctl00%24LoginView%24UserName=&ctl00%24LoginView%24Password=&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24ZIP=" + AbfragePLZ + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Quantity=" + Abfragemenge + "&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeId=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl01%24TypeCheckBox=on&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24QualityCheckBoxRepeater%24ctl02%24TypeId=2&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24PaymentGroup%24OptionGroupDropDown=6&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24Stations=1&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryGroup%24OptionGroupDropDown=5&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24DeliveryTimeGroup%24OptionGroupDropDown=24&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TruckSizeGroup%24OptionGroupDropDown=19&ctl00%24MainContent%24OrderProcess_Step_1%24CalculatorView%24TubeLengthGroup%24OptionGroupDropDown=9&ctl00%24MainContent%24OrderProcess_Step_1%24IsLoggedIn=0&ctl00%24MainContent%24OrderProcess_Step_1%24SortingType=-1&ctl00%24MainContent%24OrderProcess_Step_1%24ProductTypeSelector=1&ctl00%24MainContent%24OrderProcess_Step_1%24SortDropDown=-1&__ASYNCPOST=true&"
                    log("Pelletspeise werden ermittelt "+ fetchstring,"info")
                      let response = await fetch(fetchstring, {
                        "headers": {
                          "accept": "*/*",
                          "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                          "cache-control": "no-cache",
                          "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                          "pragma": "no-cache",
                          "sec-ch-ua": "\"Google Chrome\";v=\"107\", \"Chromium\";v=\"107\", \"Not=A?Brand\";v=\"24\"",
                          "sec-ch-ua-mobile": "?0",
                          "sec-ch-ua-platform": "\"Windows\"",
                          "sec-fetch-dest": "empty",
                          "sec-fetch-mode": "cors",
                          "sec-fetch-site": "same-origin",
                          "x-microsoftajax": "Delta=true",
                          "x-requested-with": "XMLHttpRequest",
                          "Referer": fetchstring,
                          "Referrer-Policy": "strict-origin-when-cross-origin"
                        },
                        "body": bodystring,
                        "method": "POST"
                      });
                        let text = await response.text();
                        return text;
                    } // EndFunction
                    
                    
                    
                    //--------------------------------------------------------------------------------------------------------------------
                    // Function CreateStates
                    //--------------------------------------------------------------------------------------------------------------------
                    function CreateStates() {
                        if ( !existsState(dpPrice1 )) { createState(dpPrice1,0,{name: "guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                        if ( !existsState(dpPrice2 )) { createState(dpPrice2,0,{name: "Zweit guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                        if ( !existsState(dpPrice3 )) { createState(dpPrice3,0,{name: "Dritt guenstigster Preis",  type: 'string', role: 'value'}, function () {});  }
                        if ( !existsState(dpDealer1)) { createState(dpDealer1,0,{name: "guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                        if ( !existsState(dpDealer2)) { createState(dpDealer2,0,{name: "Zweit guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                        if ( !existsState(dpDealer3)) { createState(dpDealer3,0,{name: "Dritt guenstigster Haendler",  type: 'string', role: 'value'}, function () {});  }
                    } // End Function
                    
                     
                    
                     
                    

                    vG Looxer

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #40

                    @looxer01

                    ah das hab ich nicht überprüft.
                    die seite wird nun dynamisch erzeugt.
                    die daten stammen aus einer json, die so abgerufen wird.

                    ein einfacher replay funktioniert leider nicht mehr. da wird wohl auf serverseite etwas mehr geprüft. das könnte aufwändiger werden.
                    hast du eine andere quelle für diese informationen?

                    fetch("https://www.heizpellets24.de/api/kalkulation/berechnen", {
                      "headers": {
                        "accept": "application/json, text/plain, */*",
                        "accept-language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",
                        "content-type": "application/json;charset=UTF-8",
                        "priority": "u=1, i",
                        "sec-ch-ua": "\"Chromium\";v=\"124\", \"Google Chrome\";v=\"124\", \"Not-A.Brand\";v=\"99\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin"
                      },
                      "referrer": "https://www.heizpellets24.de/holzpellets-lose/angebotsliste?zipCode=60308&amount=6000&stations=1&product=20&options=108,131,-18,127,159&ap=0&pcert=4,2,6,1&lbp=0",
                      "referrerPolicy": "strict-origin-when-cross-origin",
                      "body": "{\"Initialized\":true,\"IsDefault\":false,\"ProductGroupId\":3,\"ZipCode\":\"60308\",\"Amount\":6000,\"Stations\":1,\"Product\":{\"Id\":20},\"Parameters\":[{\"Key\":\"DeliveryMax\",\"Id\":108,\"Modifier\":-1,\"Name\":\"maximal\",\"ShortName\":null,\"DisplayName\":\"max. Lieferfrist\",\"CalculatorName\":null,\"SubText\":null,\"InfoText\":null,\"OrderText\":null,\"IconKey\":null,\"HasSpecialView\":false,\"IsUpselling\":false,\"BlackList\":[],\"Selected\":true,\"HasSubItems\":false,\"UseIcon\":false},{\"Key\":\"DeliveryTimeWholeDay\",\"Id\":131,\"Modifier\":-1,\"Name\":\"ganztägig möglich (7-18 Uhr)\",\"ShortName\":null,\"DisplayName\":null,\"CalculatorName\":null,\"SubText\":null,\"InfoText\":null,\"OrderText\":null,\"IconKey\":null,\"HasSpecialView\":false,\"IsUpselling\":false,\"BlackList\":[],\"Selected\":true,\"HasSubItems\":false,\"UseIcon\":false},{\"Key\":null,\"Id\":-18,\"Modifier\":-1,\"Name\":\"alle\",\"ShortName\":null,\"DisplayName\":null,\"CalculatorName\":null,\"SubText\":null,\"InfoText\":null,\"OrderText\":null,\"IconKey\":null,\"HasSpecialView\":false,\"IsUpselling\":false,\"BlackList\":[],\"Selected\":true,\"HasSubItems\":false,\"UseIcon\":false},{\"Key\":\"TruckBigTrailer\",\"Id\":127,\"Modifier\":-1,\"Name\":\"mit Hänger\",\"ShortName\":\"groß\",\"DisplayName\":\"LKW mit Hänger\",\"CalculatorName\":\"mit Hänger\",\"SubText\":null,\"InfoText\":null,\"OrderText\":null,\"IconKey\":\"with-trailer\",\"HasSpecialView\":false,\"IsUpselling\":false,\"BlackList\":[],\"Selected\":true,\"HasSubItems\":false,\"UseIcon\":true},{\"Key\":\"TubeLength30m\",\"Id\":159,\"Modifier\":-1,\"Name\":\"30 m\",\"ShortName\":\"30m\",\"DisplayName\":null,\"CalculatorName\":\"30 m\",\"SubText\":null,\"InfoText\":null,\"OrderText\":\"30m Schlauch\",\"IconKey\":null,\"HasSpecialView\":false,\"IsUpselling\":false,\"BlackList\":[],\"Selected\":true,\"HasSubItems\":false,\"UseIcon\":false}],\"CountryId\":1,\"ProductCertifications\":[4,2,6,1],\"LooseBlowingProcess\":false,\"PalletBagSize\":null,\"PalletBagCount\":null,\"Ap\":false,\"AppointmentPlus\":false,\"Ordering\":0,\"OfferProductCertifications\":null,\"OfferLooseBlowingProcess\":null}",
                      "method": "POST",
                      "mode": "cors",
                      "credentials": "include"
                    });
                    

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    0
                    • L Offline
                      L Offline
                      looxer01
                      schrieb am zuletzt editiert von
                      #41

                      @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                      die seite wird nun dynamisch erzeugt.

                      das hatte ich schon befürchtet. Nicht so gut.

                      @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                      hast du eine andere quelle für diese informationen?

                      hab jetzt mal nachgesehen aber ich bin nicht so richtig fündig geworden. Die einzige Alternative, die ich gesehen habe, ist mit Sicherheit noch schwieriger, da Preise bzw die Lieferanten erst per manuellen klick erzeugt werden.

                      dann schauts nicht so gut aus.

                      Vielleicht hat aber noch ein Mitleser einen Tipp, ob es gute alternative Seiten gibt ?

                      vG Looxer

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • L looxer01

                        @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                        die seite wird nun dynamisch erzeugt.

                        das hatte ich schon befürchtet. Nicht so gut.

                        @oliverio sagte in Preis von Propellets.at mittels Parser auslesen:

                        hast du eine andere quelle für diese informationen?

                        hab jetzt mal nachgesehen aber ich bin nicht so richtig fündig geworden. Die einzige Alternative, die ich gesehen habe, ist mit Sicherheit noch schwieriger, da Preise bzw die Lieferanten erst per manuellen klick erzeugt werden.

                        dann schauts nicht so gut aus.

                        Vielleicht hat aber noch ein Mitleser einen Tipp, ob es gute alternative Seiten gibt ?

                        vG Looxer

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von
                        #42

                        @looxer01

                        Nenne die Seite bitte.
                        Manueller Klick ist kein schwieriges Kriterium

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        L 1 Antwort Letzte Antwort
                        0
                        • OliverIOO OliverIO

                          @looxer01

                          Nenne die Seite bitte.
                          Manueller Klick ist kein schwieriges Kriterium

                          L Offline
                          L Offline
                          looxer01
                          schrieb am zuletzt editiert von
                          #43

                          @oliverio
                          hatte die Seite holzpellets.net im Blick. Allerdings wird dort immer nur ein Lieferant angezeigt.
                          Die Auswahl nach dem günstigsten Lieferanten kann also nicht wirklich getroffen werden.
                          Mit anderen Worten: Ich bin nicht fündig geworden :(

                          L 1 Antwort Letzte Antwort
                          0
                          • L looxer01

                            @oliverio
                            hatte die Seite holzpellets.net im Blick. Allerdings wird dort immer nur ein Lieferant angezeigt.
                            Die Auswahl nach dem günstigsten Lieferanten kann also nicht wirklich getroffen werden.
                            Mit anderen Worten: Ich bin nicht fündig geworden :(

                            L Offline
                            L Offline
                            looxer01
                            schrieb am zuletzt editiert von
                            #44

                            ich habe jetzt nochmal auf die Seite Heizpellets24 geguckt.
                            Da wird ja auf der ersten Seite schon ein Preis angezeigt.
                            Aber auch der scheint dynamisch ermittelt zu werden, nämlich von dem was in den Feldern PLZ und KG enthalten ist.
                            Man sieht auch im Seitenaufbau, dass der Preis sich während des Aufbaus der Seite ändert.
                            Das scheint also auch nicht zu gehen.

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            540

                            Online

                            32.4k

                            Benutzer

                            81.5k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe