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.
    • ?
      A Former User @liv-in-sky last edited by

      @liv-in-sky @Jey-Cee

      Danke - ich schau es mir mal an, sobald das Element wieder kommt, wo es herkommt und ob ih ggf. dass dann über die Seiten bekomme; also den Trigger. Aber die Tipps helfen mir auf jeden Fall.

      Die Aufgabe wird geknackt 😉

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post

                                            Support us

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

                                            913
                                            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