Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Webseite überwachen

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Webseite überwachen

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @Guest last edited by liv-in-sky

      @alinaclg

      da fällt mir noch ein, ich habe mal damit begonnen - ein script, welches bei penny die angebote anzeigt zu erstellen - wollte das auch noch für rewe und so machen - hatte das total vergessen

      schaut in der vis so aus (solange die nix am aufbau der seite ändern):

      Image 1.png

      wollte mir ein postit auf der vis anzeigen, wenn z.b bestimmte artikel im angebot sind - habe es mal für eine tabelle umgearbeitet

      ob das bei dir geht, weiß ich nicht - hängt halt stark von der seite und ihrem aufbau ab

      script sieht so aus - ist noch etwas chaotisch - von den komentaren her

      
      const cheerio = require('cheerio');
      const request = require('request');
      const axios=require('axios');
      let myChoose=["tomate","zero"]
      let myDPunkt="0_userdata.0.Tabellen.Penny-Angebote"
      
      let mySchedule1="  13 */8 * * * "; // alle 8 stunden bei minute 33
      
       schedule(mySchedule1,  function () {
       let myVarVar=mathRandomInt(10, 300);
      // log("startet ");
       setTimeout(function() {
         //  log("jetzt "+myVarVar);
           holeDaten();
      
       }, myVarVar*1000);
       });
      holeDaten();
      
      function mathRandomInt(a, b) {
       if (a > b) {
         // Swap a and b to ensure a is smaller.
         var c = a;
         a = b;
         b = c;
       }
       return Math.floor(Math.random() * (b - a + 1) + a);
      }
      
      async function holeDaten() { 
         await axios.get('https://www.penny.de/angebote', {
                         headers: { 'User-Agent':`Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36` }
      }).then((result) => {
              // log(result.data)
                  const $ = cheerio.load(result.data)
                                    
                                    
                                     const list5 = $('*')
                                                       .find('a.tile__link--cover')
                                                       .toArray()
                                                       .map(element => { return $(element).text()}); //log(list5.length +"---"+list5)
                                   const list6 = $('*')
                                                       .find('div.offer-tile__image-container ')
                                                       .toArray()
                                                       .map(element => { return $(element).text()}); //log(list6.length +"---"+list6)
                                                                                  
      
      
                                         var temp = '';
                                         let myJson=[]
                                         $('script').each(function(i, elem) { temp = $(this).html();
                                          if(temp.indexOf("window.pageData.products")!== -1 && temp.indexOf("window.pageData.page") == -1){    
                                        // log(temp.substring(temp.indexOf("{"), temp.length-2)) ;
                                        let valli=JSON.parse(temp.substring(temp.indexOf("{"), temp.length-2))//.replace(/'/g,'"')
                                      //  log(valli.toScript())
                                         myJson.push(valli);
                                           }  });
                                    /*   log(list5.length+ " - "+ myJson.length+ " - "+ list6.length)
                                        console.log(myJson[3].name.replace(/-/g,' '))
                                        console.log(list5[3].replace("*","").toLowerCase())
                                        console.log(myJson[3].price)
                                        console.log(myJson[3].category)*/
                                       // log(list6[3].replace(/ /gm,'').replace(/\n/gm,'').replace(/.*?src=\"(.*?\").*/,"$1"))
                                        let jsonArr=[]
                                        for(let i=0;i<myJson.length;i++){
                                         //    log(list6[i].replace(/.*?src=\"(.*?)\".*/,'$1'))
                                            for(let c=0;c<myChoose.length;c++){
                                        if (myJson[i].name.toLowerCase().includes(myChoose[c]) || myJson[i].category.includes("suessigkeit") ) { //console.log(list6[i]+" -- "+myJson[i].name.replace(/-/g,' ')+ '  -  '+myJson[i].price)
                                                                     jsonArr.push({
                                                                         "pic":list6[i].replace(/ /gm,'').replace(/\n/gm,'').replace(/.*?src=\"(.*?\").*/,"$1"),
                                                                         "name":myJson[i].name.replace(/-/g,' '),
                                                                         "price":myJson[i].price.replace('00','')+" €"
                                                                     })                                    }
                                            }
                                        }
      
                              
      //log(JSON.stringify(jsonArr))   //hier in dp schreiben
      //log("jetzt "+myVarVar);
      
      var clean = jsonArr.filter((arr, index, self) =>
         index === self.findIndex((t) => (t.name === arr.name )))
      
      
      setState(myDPunkt,JSON.stringify(clean))
      
             }).catch((error) => {
                 return error;
             })}
      
      
      
      

      ? 1 Reply Last reply Reply Quote 0
      • ?
        A Former User @liv-in-sky last edited by

        @liv-in-sky Sorry, ich habe erst jetzt wieder reingesehen und ich schau es mir an. Danke für die mega Hilfe; wenn ich nicht weiter käme, würde ich dich auch mal privat bitten, dir meine Seite anzusehen.

        liv-in-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @Guest last edited by

          @alinaclg

          binimmer für eine kleine anydesk session zu haben 🙂

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @liv-in-sky last edited by

            @liv-in-sky Danke Dir

            Nebenbei: Die Penny-Liste ist ja auch was für mich;-) Muss mich da mal eindenken, aber die Idee find ich sweet

            Danke 🙂

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @Guest last edited by liv-in-sky

              @alinaclg

              kennst du dich mit json aus ? wenn du windows hast und notepad++ mit dem plugin JSON Viewer - oder du nutzt einen online json viewer (google)

              könnte das file hier evtl interessant sein - ist ein json der webseite mit massig inhalten - mal sehen, was der inhalt ist, wenn das zu überwachende auftritt

              kennnwort ist im chat

              json-website.7z

              https://jsoneditoronline.org/

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @liv-in-sky last edited by

                @liv-in-sky sagte in Webseite überwachen:

                online json viewer

                http://jsonviewer.stack.hu/

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @Homoran last edited by

                  @homoran Also mit JSON habe ich bisschen erfahrung durch REST-APIs, aber was soll ich genau machen, wenn der Inhalt auftaucht?

                  Danke

                  liv-in-sky 1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @Guest last edited by

                    @alinaclg ich dachte, dass du zuerst die daten mal ansiehst, ob da was passendes drin ist - ich habe ein paar gefunden

                    und dann , wenn der fall eintrifft, vergleichen, ob da was neues drinsteht, was wir brauchen könnten

                    ? 1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @liv-in-sky last edited by

                      @liv-in-sky Ah ich habe es - danke euch; dann schau ich mal, ob ich damit weiter komme 🙂

                      liv-in-sky 1 Reply Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @Guest last edited by

                        @alinaclg

                        hier das script, welches das json kreiert - du musst die datenpunkte anlegen, die im script oben definiert sind - hoffe mal, die werfen uns nicht raus, wenn wir alle 5 minuten prüfen

                        in einem datenpunkt ist ein "json-array" - das könntest du dir z.b. im inventwo json widget ansehen (pfeil im bild) - ein anderer dp hat das ganze json und der 3.te ist die anzahl

                        den alexa dp kannst du ja im script auskommentieren - ist nur zur information, dass sich was auf der seite geändert hat - kann aber alles mögliche sein 😞

                        Image 1.png

                        json-website-script.7z

                        ? 1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User @liv-in-sky last edited by

                          @liv-in-sky Danke - ich hatte es so geplant, dass ich rechte Maustaste, dann den Eintrag JSONVue/Copy JSON Value und direkt in den online-editor gebe. Eine Schnellvergleich zeigt mir, dass die Dein File und das meinige im Grunde gleich waren. Oder würde dann doch was fehlen?

                          liv-in-sky 2 Replies Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @Guest last edited by liv-in-sky

                            @alinaclg sagte in Webseite überwachen:

                            JSONVue/Copy JSON Value

                            kann ich dir gar nicht sagen - kenne das so nicht - kannst du aber gerne machen - wenn du es mit meinem json, dass ich dir gepostet habe, vergleichst, müßte es schon stimmen .
                            ich habe die scriptbenachrichtigung nun auf die anzahl der ... ausgelegt - da gibt es weniger alexa nachrichten - und habe das json direkt in der view angezeigt - bekomme ich nun eine alexa meldung , sehe ich in der vis, welche ... gerade angezeigt werden

                            ob dann später die gesuchten drin sind, weiß ich noch nicht

                            schaut gerade so aus - das interessante ist hinter der weißen box 🙂

                            Image 3.png

                            ? 1 Reply Last reply Reply Quote 1
                            • ?
                              A Former User @liv-in-sky last edited by

                              @liv-in-sky ich lege dein Skript dennoch gerne mal an und schau es parallel. Die drei DP haben welche Types?

                              1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @Guest last edited by

                                @alinaclg

                                ich vermute mal, die gesuchten ... vielleicht in einem anderen json angezeigt werden - das sehen wir dann - wenn ihr die gesuchten .. mal seht, dann poste das hier mit meinem namen, dann werde ich benachrichtigt - nicht im chat, da habe ich keine benachrichtigung

                                ? 2 Replies Last reply Reply Quote 0
                                • ?
                                  A Former User @liv-in-sky last edited by

                                  @liv-in-sky So mache ich es - wichtig ist, wenn es auftritt, dass ich das JSON mir hole. Dann haben wir mal den echten use case 🙂

                                  liv-in-sky 1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @Guest last edited by

                                    @alinaclg

                                    ok - dann warten wir

                                    ist eigentlich ganz interessant - habe noch nie eine webseite gesehen, die eigentlich nur aus einem riesigen json besteht und der rest wird über scripte realisiert

                                    ? 1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User @liv-in-sky last edited by

                                      @liv-in-sky da stecke ich nicht genug drin, aber ich tüftel ja auch gerne rum, auch bei uns zuhause mit alle dem smarthome-Ideen, wo ich einfach auch mal probiert habe und viel try/error; am Ende bleibt immer was hänge 🙂

                                      1 Reply Last reply Reply Quote 1
                                      • ?
                                        A Former User @liv-in-sky last edited by

                                        @liv-in-sky Die Info wäre jetzt für ne gute Stunde drin

                                        liv-in-sky 1 Reply Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky @Guest last edited by

                                          @alinaclg

                                          ich weiß - ich habe ja einen alarm bekommen 🙂 🙂 🙂

                                          Image 4.png

                                          ? 2 Replies Last reply Reply Quote 0
                                          • ?
                                            A Former User @liv-in-sky last edited by

                                            @liv-in-sky ja, ich dachte, ich sag dennoch mal Bescheid 🙂

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

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

                                            883
                                            Online

                                            32.0k
                                            Users

                                            80.6k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            39
                                            992
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo