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

      du kennst die entwicklerumgebung in chrome - man kann ja auf der webeite das jenige, was man sehen will, mit der rechten maustaste anklicken und auf untersuchen gehen - damit siehst du zumindest, dass da was eingebunden ist und evtl kannst du dir daraus einen trigger erstellen

      ? 1 Reply Last reply Reply Quote 1
      • ?
        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
                                            • First post
                                              Last post

                                            Support us

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

                                            853
                                            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