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.
    • Jey Cee
      Jey Cee Developer @Guest last edited by

      @alinaclg wenn es nicht im Source code steht, dann wird es Nachgeladen, darauf wartet der Parser Adapter nicht.
      Es gibt module für nodejs die einen Browser Simulieren. Damit sollte es möglich sein auch an die Daten zu kommen die Später geladen werden.

      Die Alternative ist die Seite mit den Entwicklertools (F12 drücken) zu Analysieren. Dort sieht man nämlich beim Laden der Seite was wann heladen wird und wo es herkommt. Im Chrome heisst das Tool Netzwerk.

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

                                            Support us

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

                                            704
                                            Online

                                            32.1k
                                            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