Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter für Webseitenüberwachung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Adapter für Webseitenüberwachung

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      steimi last edited by steimi

      Hi,

      ich bin auf der Suche nach einem Adapter mit dem ich Webseiten auf Veränderungen überwachen kann.

      Mir geht es da Hauptsächlich um den Download von Firmware, die ich sonst manuell regelmäßig aufrufen muss.

      Kennt da jemand etwas? Oder hat jemand einen anderen Lösungsvorschlag?

      Gruß
      steimi

      Homoran Dr. Bakterius liv-in-sky 3 Replies Last reply Reply Quote 0
      • X
        Xyolyp last edited by

        Lässt sich das Vorhaben vielleicht mit dem Parser Adapter umsetzbar?

        S 1 Reply Last reply Reply Quote 0
        • S
          steimi @Xyolyp last edited by

          @Xyolyp Schaue mir den Adapter Mal an. Danke

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @steimi last edited by

            @steimi sagte in Adapter für Webseitenüberwachung:

            Kennt da jemand etwas?

            Kommt exakt auf die Webseite an, und WAS du da überwachen willst

            S 1 Reply Last reply Reply Quote 0
            • S
              steimi @Homoran last edited by

              @Homoran ich möchte z.B. folgende Seiten auf neue Firmware-Stände überwachen. Sind halt 2 komplett verschiedene Seiten für Downloads.

              Foscam

              Stall.biz

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @steimi last edited by

                @steimi Foscam geht nicht, die Seite wird dynamisch erzeugt.

                Eugens Seite kannst du mit date\s(\d{2}\.\d{2}\.\d{4})[^\n]+\n+<h2> abfragen, die müsste immer das aktuellste Datum bringen

                1 Reply Last reply Reply Quote 0
                • Dr. Bakterius
                  Dr. Bakterius Most Active @steimi last edited by

                  @steimi Ich weiß, das war eigentlich nicht gefragt, doch es gibt Browser-Plugins die das machen.

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    steimi @Dr. Bakterius last edited by

                    @Dr-Bakterius sicher, aber einfach ein Update 1x am Tag/Woche und dann per Blockly/Pushover benachrichtigt reicht mir.

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      Aiouh @steimi last edited by

                      Könnte man mit dem Parser den Text einer Website auf Verschwinden hin überwachen?

                      Ich hätte gerne eine Nachricht wenn wenn ein bestimmter Text nicht mehr auf der Seite vorhanden ist.

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

                        @aiouh mit einem blockly request kannst du eine seite einlesen und nach einem textteil suchen - ist der text immer in eine feste html struktur eingebettet, kannst du das definieren und den inhalt (text) lesen, vergleichen.

                        bei einer änderung, könntest du dann eine message senden und dann den neuen text als neue variable nutzen, um eine weitere änderung festzustellen

                        A 1 Reply Last reply Reply Quote 1
                        • liv-in-sky
                          liv-in-sky @steimi last edited by liv-in-sky

                          @steimi

                          für foscom ein kleines script

                          du mussst im javascript adapter setting den wert "cheerio" als zusatz npm eintragen

                          Image 9.png

                          im log siehst du, was da so rauskommt - ist nur rudimentär - man muss sich halt überlegen, was man mit den daten machen will

                          const cheerio = require('cheerio');
                          const request = require('request');
                          
                           let mySchedule1="  12 */4 * * * "; // alle 4 stunden bei minute 12
                          
                            //schedule(mySchedule1,  function () {
                          request('https://foscam.com/downloads/firmware_details.html?id=144',(error, response, html)=>{
                            if (response.statusCode==200){ //log(html)
                                                         const $ = cheerio.load(html)
                                                         const list5 = $('*')
                                                                            .find('td')
                                                                            .toArray()
                                                                            .map(element => { return $(element).text()}); log(list5.length +"---"+list5)
                          
                                                          log(list5[6])                  
                          
                                     
                          
                          
                          }});
                          

                          ein beispiel für weatherman

                          
                          const cheerio = require('cheerio');
                          const request = require('request');
                          
                           let mySchedule1="  12 */4 * * * "; // alle 4 stunden bei minute 12
                          
                            //schedule(mySchedule1,  function () {
                          request('https://www.stall.biz/project/weatherman-die-perfekte-wetterstation-fuer-die-hausautomation',(error, response, html)=>{
                            if (response.statusCode==200){ //log(html)
                                                         const $ = cheerio.load(html)
                                                         const list5 = $('*')
                                                                            .find('p')
                                                                            .toArray()
                                                                            .map(element => { return $(element).text()}); log(list5.length +"---"+list5)
                          
                                                          for(let i=0;i<list5.length;i++){
                                                          
                                                          if (list5[i].includes("Update") && list5[i].includes("WEATHERMAN")) log(list5[i])                  
                                                          }
                                     
                          
                          
                          }});
                            //});
                          
                          
                          
                          
                          
                          

                          wenn in der seite nur immer die eine zeile geändert wird mit einer neuen version funktioniert das

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

                            @liv-in-sky Danke für die Anregung, da werde ich mal grübeln. Ist für mich dann was für einen längeren Winterabend, aber die kommen ja bald 😉

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

                              @aiouh kannst du mir eine seite sagen und welchen text du überwachen willst ?

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

                                @liv-in-sky aber gerne 🙂
                                https://fraenkel-ag.de/immobilien-angebote/wohnen/

                                Und wenn der folgende Text sich ändert weiss ich dass es Angebote gibt
                                "Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden."

                                Ist etwas irreführend, denn die Suchkriterien sind ja im System fix hinterlegt, man ruft also nur die Seite auf.

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

                                  @aiouh sagte in Adapter für Webseitenüberwachung:

                                  Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden

                                  die arbeiten über iframes - daher muss ich übe immobilienscout seite gehen) aber versuche mal dieses script (du brauchst kein "cheerio" wie oben ! im log zeigt es , ob es angebote gibt - wäre interessant, ob die log ausgabe stimmt, wenn dann angebote da sind

                                  const request = require('request');
                                  
                                   let mySchedule1="  12 */4 * * * "; // alle 4 stunden bei minute 12
                                  
                                    //schedule(mySchedule1,  function () {
                                  //request('https://fraenkel-ag.de/immobilien-angebote/wohnen/',(error, response, html)=>{ 
                                  request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
                                    if (response.statusCode==200){ //log(html)
                                        
                                                  if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")}  else {log("neue Angebote sind da")}
                                  
                                  
                                  }});
                                  
                                  A 1 Reply Last reply Reply Quote 1
                                  • A
                                    Aiouh @liv-in-sky last edited by

                                    @liv-in-sky Wow, Vielen Dank. Ich lass das mal tuckern und bin gespannt 👍

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

                                      @aiouh

                                      heute gab es ein neues angebot

                                      habe das script so verändert, das eine nachricht auf alexa kommt, wenn neues angebot da ist und auch, wenn ein angebot verschwindet - ich hoffe, dass script macht alles richtig - werden wir dann sehen, wenn sich die angebote ändern bzw gelöscht bzw dazukommen

                                      • du musst das mit dem cheerio - wie oben erklärt" machen
                                      • du brauchst 2 datenpunkte, die du im script oben einträgst
                                      • man kann auch eine benachrichtigung für telegram, whatsapp,email oder sowas dazufügn
                                      • es ist jetzt ein schedule drin - dann läuft es automatisch

                                      //LINK FORUM
                                      //https://forum.iobroker.net/post/672195
                                      //@liv-in-sky 1.9.21
                                      
                                      const cheerio = require('cheerio');
                                      
                                      
                                      
                                      //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
                                      
                                       let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
                                       let myAlarmDP='alexa2.0.Echo-Devices.G0916D10016202R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
                                      
                                      //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
                                      
                                      
                                       if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
                                      
                                      const request = require('request');
                                      
                                      const equalsIgnoreOrder = (a, b) => {
                                       if (a.length !== b.length) return false;
                                       const uniqueValues = new Set([...a, ...b]);
                                       for (const v of uniqueValues) {
                                         const aCount = a.filter(e => e === v).length;
                                         const bCount = b.filter(e => e === v).length;
                                         if (aCount !== bCount) return false;
                                       }
                                       return true;
                                      }
                                      
                                      let mySchedule1="  9,19,59 9-23 * * * "; // 
                                      
                                       schedule(mySchedule1,  function () {
                                      
                                         
                                         let mySavedData=getState(mySavedDataDP).val.split(",")
                                      request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
                                       if (response.statusCode==200){ //log(html)
                                      
                                        const $ = cheerio.load(html)
                                                                    const list4 = $('*')
                                                                                       .find('figure > a')
                                                                                       .toArray()
                                                                                       .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                                                     let list5; 
                                                                     list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
                                           
                                                     if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                                                      else {
                                                    
                                                           //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                                                           //  log("Vergleich "+list5+"  ---  "+mySavedData);
                                                             if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                                                      if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                                               setState(myAlarmDP,"ein Angebote ist weg");
                                                                                                       } 
                                                                                                       else {setState(myAlarmDP,"neue Angebote sind da für immobilienscout");
                                                                                                             log("neue Angebote sind da") ;}
                                                                                                      
                                                                                                      
                                                                                                      mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                                                      setState(mySavedDataDP,mySavedData.toString());
                                                                                                     // log(list5[0]+"  ---  "+mySavedData);
                                      
                                                             }
                                      
                                                         }
                                                         }
                                      
                                      
                                      });
                                       });
                                      
                                      
                                      
                                      
                                      
                                      

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

                                        @liv-in-sky 🙂 Test läuft 👍

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

                                          @liv-in-sky Hi, scheinz zu klappen. Der DBP sieht bei mir jetzt so aus.

                                          /expose/80909765/129468267
                                          

                                          Wäre schick wenn das gleich eine URL wäre 😉

                                          Im "Alexa DP" steht

                                          ein Angebote ist weg
                                          
                                          liv-in-sky 2 Replies Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @Aiouh last edited by

                                            @aiouh

                                            habe es verfolgt - heute kam ein neues angebot und wurde mir gemeldet - etwas später kam dann, ein angebot ist weg und auch dies war richtig - das neue angebot wurde wieder gelöscht - hat schon mal gut funktioniert

                                            bei der url war ich mir nicht sicher, ob du die brauchst - wie möchtest du das eigentlich ansehen - über die vis oder über eine nachricht?

                                            A 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

                                            478
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter webseite überwachen
                                            6
                                            25
                                            1932
                                            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