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 last edited by

      Guten Morgen Jungs (und vielleicht doch noch eine Lady hier? 😉 ),

      ich brauch mal einen Denkimpuls von euch. Ich überwache eine Webseite mit dem Parser-Adapter nach Produkten und das klappt auch tadellos.
      Jedoch gibt besondere Ankündigungen, die ich nicht dem Parser abfragen kann,
      da die relevanten Texte nicht im Seitentext auftauchen.
      Ich weiss nicht, auf welcher Basis diese besonderen Ankündigungen erstellt werden (Flash vielleicht?), daher frage ich mal in die Runde, wie ich da weiter forschen könnte.

      Dank Euch
      Alina kaffee

      liv-in-sky Jey Cee 2 Replies Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @Guest last edited by

        @alinaclg
        vielleicht könntest du die seite mal angeben, damit die jungs sich das anschauen und mit ihrer weiblichen seite hinweise geben könnten

        ? 1 Reply Last reply Reply Quote 1
        • ?
          A Former User @liv-in-sky last edited by

          @liv-in-sky Touche 🙂

          Die Seite möchte ich nicht offen hier posten (persönliche Gründe), daher bat ich auch nur um einen Denkanstoss und keinen konkreten Lösungsansatz.

          Ich weiss, dass macht es eher unmöglich, aber die Frage habe ich doch getraut zu formulieren

          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @Guest last edited by

            @alinaclg

            hatte ich schon fast vermutet 🙂

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

            kannst du dir diese angebote evtl über mail zusenden lassen ? dann könntest du die mails auslesen und danach untersuchen

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

                                            Support us

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

                                            852
                                            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