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.
    • Homoran
      Homoran Global Moderator Administrators @liv-in-sky last edited by

      @liv-in-sky hatten wir doch auch mal mit Corona Zahlen gemacht.
      Ich kann es auch nicht auswendig. Nur mit Trial & error.

      man kann in den Dev tools sehen, wo gerade was abläuft.
      dann da den entsprechenden Ausschnitt im Quelltext ansehen, mit Glück ist dann eine andere erreichbare Adresse als Quelle angegeben.
      die kann man dann aufrufen und darin parsen.

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

        @homoran said in Webseite überwachen:

        mit viel Mühe und Glück kann man im Quellcode finden wo die Daten herkommen und diese dann dort abholen.

        muss ich mal weiter forschen- mir würde ja schon reichen, wenn ich mitbekäme, DAS da was ist und dann reinschauen. Das WAS ist sekundär - brauch nur den Trigger.

        Ich forsche mal weiter 🙂

        Danke Euch

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

                                            Support us

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

                                            460
                                            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