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 said in Webseite überwachen:

      soweit ich weiß, kannst du nur sachen aus webseiten auslesen, die irgendwie im sourcecode stehen - aber vielleicht meldet sich noch jmd mit mehr erfahrung

      Das ist auch mein Wissenstand - leider bekomme ich sie nicht per Email.

      Wie gesagt, ich suche nur einen Gedankenanstoss...:)

      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:

        kannst du nur sachen aus webseiten auslesen, die irgendwie im sourcecode stehen -

        mit dem Parser direkt.

        @AlinaClg
        aaaber....

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

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

          @homoran sagte in Webseite überwachen:

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

          die frage ist doch - wie das geht ? nicht, das man mühe und glück braucht

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

                                            Support us

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

                                            895
                                            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