Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Parsen einer Seite

    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

    Parsen einer Seite

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @homecineplexx last edited by liv-in-sky

      @homecineplexx

      kennst du tankerkönig adapter ?
      Image 1.png

      H 1 Reply Last reply Reply Quote 1
      • H
        homecineplexx @liv-in-sky last edited by

        @liv-in-sky said in Parsen einer Seite:

        kennst du tankerkönig adapter ?

        jaaa, ist der auch für Österreich?

        Homoran liv-in-sky 2 Replies Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @homecineplexx last edited by

          @homecineplexx sagte in Parsen einer Seite:

          für Österreich?

          das hatte ich bei den Preisen schon befürchtet

          H 1 Reply Last reply Reply Quote 0
          • H
            homecineplexx @Homoran last edited by

            @homoran said in Parsen einer Seite:

            @homecineplexx sagte in Parsen einer Seite:

            für Österreich?

            das hatte ich bei den Preisen schon befürchtet

            ist ja auch legitim 😁

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

              @homecineplexx

              frag doch mal da nach, ob das noch aktuell ist https://forum.iobroker.net/topic/20314/skripten-des-e-control-spritpreisrechners/281 da sind die österreicher unter sich 🙂

              bevor wir hier alles neu erfinden

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

                @liv-in-sky said in Parsen einer Seite:

                @homecineplexx

                frag doch mal da nach, ob das noch aktuell ist https://forum.iobroker.net/topic/20314/skripten-des-e-control-spritpreisrechners/281 da sind die österreicher unter sich 🙂

                bevor wir hier alles neu erfinden

                super, dankeschön...mach ich doch glatt!

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

                  @homecineplexx

                  ODER 🙂

                  Image 2.png

                  habe leider noch ein problem mit den umlauten

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

                    @liv-in-sky said in Parsen einer Seite:

                    @homecineplexx

                    ODER 🙂

                    Image 2.png

                    habe leider noch ein problem mit den umlauten

                    na das sieht schon sehr fein aus

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

                      @homecineplexx

                      mit richtigen umlauten - vergiß nicht, du musst axios und cheerio unter zusätzlichen npm modulen in der javascript instanz haben - und mache die abfragen nicht zu oft - manche seiten mögen das nicht !

                      Image 4.png

                      widget:

                      [{"tpl":"i-vis-jsontable","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","iTblRowLimit":"5","iTableRefreshRate":"0","iTblSortOrder":"asc","iColCount":"2","iColShow1":"true","iTblHeadTextAlign1":"center","iTblTextAlign1":"left","iTblCellFormat1":"normal","iTblCellImageSize1":"200","iTblCellBooleanCheckbox1":"false","iTblCellBooleanColorFalse1":"#ff0000","iTblCellBooleanColorTrue1":"#00ff00","iTblCellNumberDecimals1":"2","iTblCellNumberDecimalSeperator1":".","iTblCellNumberThousandSeperator1":",","iTblCellThresholdsDp1":"","iTblCellThresholdsText1":"","iOpacityAll":"1","iTblRowEvenColor":"#e1efef","iTblRowUnevenColor":"#f6f8f8","iTblHeaderColor":"#59a5d4","iRowSpacing":"10","iTblRowEvenTextColor":"#000","iTblRowUnevenTextColor":"#000","iTblHeaderTextColor":"#000","iBorderSize":"0","iBorderStyleLeft":"none","iBorderStyleRight":"none","iBorderStyleUp":"none","iBorderStyleDown":"none","iBorderColor":"#ffffff","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"oid":"0_userdata.0.SpritpreiseAUT.5erPack","iColShow2":"true","iTblHeadTextAlign2":"center","iTblTextAlign2":"center","iTblCellFormat2":"normal","iTblCellImageSize2":"200","iTblCellBooleanCheckbox2":"false","iTblCellBooleanColorFalse2":"#ff0000","iTblCellBooleanColorTrue2":"#00ff00","iTblCellNumberDecimals2":"2","iTblCellNumberDecimalSeperator2":".","iTblCellNumberThousandSeperator2":",","iTblCellThresholdsDp2":"","iTblCellThresholdsText2":"","iTblShowHead":true,"iColName1":"Tankstelle","iColName2":"Preise"},"style":{"left":"757px","top":"472px","width":"662px","height":"221px"},"widgetSet":"vis-inventwo"}]
                      

                      script:

                      
                      const cheerio = require('cheerio');
                      
                      const axios=require('axios');
                      
                      
                      
                      let jsonArr;
                      let myDPunkt='0_userdata.0.SpritpreiseAUT.5erPack';
                      
                      
                      if(!existsState(myDPunkt))  createState(myDPunkt, "", { name: "kommt aus Webseite",type:'string' }); 
                      
                      let mySchedule1="  3 */6 * * * "; // alle 6 stunden bei minute 3
                      
                      doStuff()
                      holeDaten();
                       schedule(mySchedule1,  function () {
                       let myVarVar=mathRandomInt(1, 30);
                      // log("startet ");
                       setTimeout(function() {          // variert die sekunden der abfrage, damit nicht immer die selbe ip zur absolut selben zeit eine abfrage stellt ))
                        //   log("jetzt "+myVarVar);
                           holeDaten();
                      
                       }, myVarVar*1000);
                       });
                      
                      
                      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() { 
                         log("Hole Wetterdaten aus Koeln")
                         await axios.get('https://spritvergleich.at/suche?suchwort=Stockerau', {
                                         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` },
                                         responseType:'arraybuffer',
                                         reponseEncoding: 'binary'
                      }).then((result) => {
                              // log("1----"+result.data);
                         //     log(result.data.toString('latin1'))
                          
                             // const decoder = new TextDecoder("iso_8859-2");
                                  const $ = cheerio.load(result.data.toString('latin1'))
                                                    const list5 = $('*')
                                                                       .find("[class*=sp2]")                 //find("[class*=re]")  //find('.table_wert_1a')
                                                                       .toArray()
                                                                       .map(element => { return $(element).text()}); log(list5.length +"---"+list5)
                                                                     //  for (let z=0;z<list5.length;z++){log(list5[z])}
                                
                                                    const list6 = $('*')
                                                                       .find(".price")                 //find("[class*=re]")  //find('.table_wert_1a')
                                                                       .toArray()
                                                                       .map(element => { return $(element).text()}); //log(list6.length +"-----"+list6)
                                              //  log(list5[5])
                            
                      //} 
                      
                      
                      let myJsonSprit=[]
                      for (let sprit=0; sprit<6;sprit++){
                      myJsonSprit.push({
                      "tankstelle": list5[sprit+1].replace(/\n/g,"").replace(/\t/g,""),
                      "preis":list6[sprit]
                      
                      
                      })
                      }
                      log(JSON.stringify(myJsonSprit))
                      setState(myDPunkt,JSON.stringify(myJsonSprit))
                      
                      
                      
                      
                             }).catch((error) => {
                                 return error;
                             })}
                      
                      async function doStuff() {
                        
                         
                          if (!(await existsStateAsync("0_userdata.0.KoelnWetter.BerichtLang"))) {
                             await createStateAsync("0_userdata.0.KoelnWetter.BerichtLang",{type: "string", name: "Bericht ausführlich", role: "value", read: true, write: true, } ); }
                          if (!(await existsStateAsync("0_userdata.0.KoelnWetter.BerichtKurz"))) {
                             await createStateAsync("0_userdata.0.KoelnWetter.BerichtKurz",{type: "string", name: "Bericht ausführlich", role: "value", read: true, write: true, } ); }
                          if (!(await existsStateAsync("0_userdata.0.KoelnWetter.UV2Start"))) {
                             await createStateAsync("0_userdata.0.KoelnWetter.UV2Start",{type: "string", name: "UV2Start", role: "value", read: true, write: true, } ); } 
                          if (!(await existsStateAsync("0_userdata.0.KoelnWetter.UV2End"))) {
                             await createStateAsync("0_userdata.0.KoelnWetter.UV2End",{type: "string", name: "UV2End", role: "value", read: true, write: true, } ); }           
                          if (!(await existsStateAsync("0_userdata.0.KoelnWetter.Mond2End"))) {
                             await createStateAsync("0_userdata.0.KoelnWetter.Mond2End",{type: "string", name: "Mond2End", role: "value", read: true, write: true, } ); }
                          if (!(await existsStateAsync("0_userdata.0.KoelnWetter.Mond2Start"))) {
                             await createStateAsync("0_userdata.0.KoelnWetter.Mond2Start",{type: "string", name: "Mond2Start", role: "value", read: true, write: true, } ); }  
                          if (!(await existsStateAsync("0_userdata.0.KoelnWetter.MondGrad"))) {
                             await createStateAsync("0_userdata.0.KoelnWetter.MondGrad",{type: "string", name: "MondGrad", role: "value", read: true, write: true, } ); }      
                      
                      
                      
                      }
                      
                      
                      
                      
                      
                      
                      

                      1 Reply Last reply Reply Quote 0
                      • Wannseesprinter
                        Wannseesprinter last edited by

                        Habe ebenfalls eine interne Website, von der ich gerne ein paar Werte parsen möchte. Leider steige ich bei Regex immer noch nicht voll durch. Sorry!

                        Bräuchte die markierten Werte als Zahl/String:

                        9c7c5fa6-5f08-42e2-a9f3-8edbab38a4e9-grafik.png

                        Der HTML Body


                        `<!DOCTYPE html>
                        <html>
                        <head>
                        <meta name="viewport" content="width=device-width,initial-scale=1.0" />
                        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                        <title>ZERO controller | www.elgrispower.com</title>
                        <link href="/css/jquery.dataTables.min.css" type="text/css" rel="stylesheet" />
                        <link href="/css/style.css" type="text/css" rel="stylesheet" />
                        </head>
                        <body>
                        <div class="wrapper">
                        <header>
                        <div class="header">
                        <div class="container">
                        <div class="logo">
                        <a href="/index.shtm"><img src="/images/logo.jpg" alt="Logo" /></img></a>
                        </div>

                        <div class="right-header">
                        <h2>elgris ZERO</h2>
                        <p id = "firmware_version"></p>
                        <div id = "notification_bar" style="float:right">
                        <div class="notification">
                        <img src = '/images/error_small.png' alt="E" title="Errors" ></img>
                        <div id = "errors" class = "errors">: 0</div>

                        </div>
                        <div class = "notification">
                        	<img src = '/images/warning_small.jpg' alt="W" title="Warnings" ></img>
                        	<div id = "warnings" class = "errors">: 0</div>
                        </div>
                        <div class = "notification">
                        	<img src = '/images/info_small.png' alt="I" title="Information" ></img>
                        	<div id = "info" class = "errors">: 0</div>
                        </div>
                        

                        </div>
                        </div>
                        <div class="clr"></div>
                        </div>
                        </div>
                        </header>
                        <div class="header-menu">
                        <div class="container">
                        <div id="nav-trigger">
                        <span>Menu <img src="images/menu_list.png" class="menu_list" /></img></span>
                        </div>
                        <nav id="nav-main">
                        <ul>
                        <li><a href="/index.shtm">Home </a></li>
                        <li>
                        <div class="sub-menu">
                        <span class="sub-menu-span">Settings</span>
                        <div class="sub-menu-content">
                        <a href="/setting.shtm">General </a>
                        <a href="/inverter.shtm">Inverter </a>
                        <a href="/ecloud.shtm">elgris cloud</a>
                        <a href="/mqtt.shtm">MQTT</a>
                        <a href="/ftp_client.htm">FTP Push</a>
                        </div>
                        </div>
                        </li>
                        <li>
                        <div class="sub-menu">
                        <span class="sub-menu-span">Monitoring</span>
                        <div class="sub-menu-content">
                        <a href="/chart.shtm">Datalogger</a>
                        <a href="/live_chart.shtm">Live Chart</a>
                        <a href="/performance.html">Performance</a>
                        </div>
                        </div>
                        </li>
                        </ul>
                        </nav>

                        <nav id="nav-mobile"></nav>

                        </div>
                        </div>
                        <div class="setting">
                        <div class="container">
                        <div class="power">
                        <h1 class="text-center">Inverter Settings</h1>
                        <div class="col-100">
                        <div class="colum">
                        <div class="form-group">
                        <div class="col-30">
                        <div class="form-box">
                        </div>
                        </div>
                        <div class="col-30">
                        <div class="form-box">
                        <input name="" type="button" class="btn_sub top-25" value="Add Inverter" onclick = "addRow()"/>
                        </div>
                        </div>
                        <div class="col-30">
                        <input name="" type="submit" class="btn_sub top-25" id="save_settings" value="Save Settings" />
                        </div>
                        </div>
                        <div class="form-group">
                        <div id="inverterTableContainer">
                        <table id = "inverterTable">
                        <tr>
                        <th>#</th>
                        <th>Brand</th>
                        <th>Type</th>
                        <th>IP address</th>
                        <th>Port/ID</th>
                        <th>Serial number</th>
                        <th>Rated</th>
                        <th>Output</th>
                        <th>Energy</th>
                        <th>Delete</th>
                        <th>Status</th>
                        </tr>
                        </table>
                        </div>
                        </div>
                        </div>
                        </div>
                        </div>
                        </div>
                        </div>
                        <table width="100%" class="display" id="table"></table>
                        <footer>
                        <div class='footer'>
                        <p class='copyright'>copyright © 2004-2019 <a href='http://www.elgrispower.com'>elgris GmbH</a> Germany. All rights reserved.</p>
                        </div>
                        </footer>
                        </div>
                        <script type="text/javascript" src="/js/jquery.min.js"></script>
                        <script type="text/javascript" src="/js/jquery.dataTables.js"></script>
                        <script type="text/javascript" src="/js/settings.js"></script>
                        <script type="text/javascript" src="/js/inverter.js"></script>
                        <script type="text/javascript" src="/js/jquery.jeditable.js"></script>
                        <script type="text/javascript" src="/js/jquery.jeditable.masked.js"></script>
                        <script type="text/javascript" src="/js/jquery.jeditable.charcounter.js"></script>
                        <script type="text/javascript" src="/js/jquery.maskedinput.js"></script>
                        <script type="text/javascript" src="/js/jquery.charcounter.js"></script>
                        </body>
                        </html>

                        Ich hoffe, ihr habt einen Plan 🙂

                        Danke euch!

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        876
                        Online

                        32.1k
                        Users

                        80.6k
                        Topics

                        1.3m
                        Posts

                        parser
                        6
                        30
                        1761
                        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