Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Parser: TV-Sender Fußball [Closed]

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

Parser: TV-Sender Fußball [Closed]

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
25 Beiträge 4 Kommentatoren 2.1k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A adsfa

    @homoran
    Danke für deine schnelle Antwort :)
    Leider ist der Code zu lang zum einfügen, sagt das Forum.
    Ich hoffe, das ist der relevante Teil:

    url=https://www.fussball-im-tv.com/team/colonia" style="cursor: pointer!important; font-size:12px !important;color: #a5a5a5 ;float:right;text-decoration:none !important;font-family:arial !important;line-height:normal;">report this ad</span></span></span> <div class="pAside01">  </div> <div class="pAside02">  </div> <div class="pAside03">  </div> <span id="ezoic-pub-ad-placeholder-133" class="ezoic-adpicker-ad"></span></aside> </main> <section class="informacionGeneral"> <p> In diesem Moment, <strong> gibt es 27 live Spiele im TV</strong> von 1 unterschiedliche Wettbewerbe. Nächten Spiel wird <strong>RB Leipzig - FC Köln</strong> sein, die am <strong>Samstag, 13. August 2022 um 15:30</strong> gespielt wird, die von DAZN, Sky Sport Bundesliga 3 gesendet wird.<br/><br/>Mehr Information in der <strong><a href="https://www.fc-koeln.de/" target="_blank"> FC Köln Web
    
    HomoranH Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von
    #4

    @adsfa sagte in Parser: TV-Sender Fußball:

    das ist der relevante Teil:

    nutzt nichts, wenn im anderen Teil der RegEx noch was finden würde.

    und was ist mit

    @homoran sagte in Parser: TV-Sender Fußball:

    bitte nochmals genau was du haben willst

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    1 Antwort Letzte Antwort
    0
    • A adsfa

      @homoran
      Danke für deine schnelle Antwort :)
      Leider ist der Code zu lang zum einfügen, sagt das Forum.
      Ich hoffe, das ist der relevante Teil:

      url=https://www.fussball-im-tv.com/team/colonia" style="cursor: pointer!important; font-size:12px !important;color: #a5a5a5 ;float:right;text-decoration:none !important;font-family:arial !important;line-height:normal;">report this ad</span></span></span> <div class="pAside01">  </div> <div class="pAside02">  </div> <div class="pAside03">  </div> <span id="ezoic-pub-ad-placeholder-133" class="ezoic-adpicker-ad"></span></aside> </main> <section class="informacionGeneral"> <p> In diesem Moment, <strong> gibt es 27 live Spiele im TV</strong> von 1 unterschiedliche Wettbewerbe. Nächten Spiel wird <strong>RB Leipzig - FC Köln</strong> sein, die am <strong>Samstag, 13. August 2022 um 15:30</strong> gespielt wird, die von DAZN, Sky Sport Bundesliga 3 gesendet wird.<br/><br/>Mehr Information in der <strong><a href="https://www.fc-koeln.de/" target="_blank"> FC Köln Web
      
      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #5

      @adsfa wird wahrscheinlich mit Javascript besser gehen. mit dem Parsen für den Parser Adapter bekomme ichbzwar jetzt die Begegnung mit wird <strong>(.+?Köln)<\/str aber wenn die Kölner Heimspiel gaben wird das nix.
      Auf die Schelle hab ich es am Handy auch nicht allgemeingültig hinbekommen

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        adsfa
        schrieb am zuletzt editiert von
        #6

        @homoran
        Vielen Dank für deine Mühe - wirklich super nett :)

        "Bitte nochmals genau was du haben willst" - ich denke Folgendes wäre ideal.

        RB Leipzig - FC Köln | Samstag, 13. August 2022 um 15:30 | DAZN, Sky Sport Bundesliga 3
        

        Die Idee ist die Infos kurz vor Anpfiff über Telegram zu schicken. Dabei fällt mir gerade auf, dass ich dafür noch an iobroker weitergeben muss, wann das Spiel eigentlich ist.
        Das wäre wahrscheinlich mit Javascript einfacher wenn man das Datum weiterverarbeiten kann. Leider habe ich da keine Erfahrung, aber versuche mich über Youtube weiterzubilden :)

        HomoranH OliverIOO 2 Antworten Letzte Antwort
        0
        • A adsfa

          @homoran
          Vielen Dank für deine Mühe - wirklich super nett :)

          "Bitte nochmals genau was du haben willst" - ich denke Folgendes wäre ideal.

          RB Leipzig - FC Köln | Samstag, 13. August 2022 um 15:30 | DAZN, Sky Sport Bundesliga 3
          

          Die Idee ist die Infos kurz vor Anpfiff über Telegram zu schicken. Dabei fällt mir gerade auf, dass ich dafür noch an iobroker weitergeben muss, wann das Spiel eigentlich ist.
          Das wäre wahrscheinlich mit Javascript einfacher wenn man das Datum weiterverarbeiten kann. Leider habe ich da keine Erfahrung, aber versuche mich über Youtube weiterzubilden :)

          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #7

          @adsfa sagte in Parser: TV-Sender Fußball:

          aber versuche mich über Youtube weiterzubilden

          bitte nicht!!!
          dort tummeln sich viele Scharlatane.

          warte bis dich hier jemand meldet, der js kann

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          1
          • A adsfa

            @homoran
            Vielen Dank für deine Mühe - wirklich super nett :)

            "Bitte nochmals genau was du haben willst" - ich denke Folgendes wäre ideal.

            RB Leipzig - FC Köln | Samstag, 13. August 2022 um 15:30 | DAZN, Sky Sport Bundesliga 3
            

            Die Idee ist die Infos kurz vor Anpfiff über Telegram zu schicken. Dabei fällt mir gerade auf, dass ich dafür noch an iobroker weitergeben muss, wann das Spiel eigentlich ist.
            Das wäre wahrscheinlich mit Javascript einfacher wenn man das Datum weiterverarbeiten kann. Leider habe ich da keine Erfahrung, aber versuche mich über Youtube weiterzubilden :)

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #8

            @adsfa

            hier wäre ein vorschlag:
            als erstes muss in den einstellungen der javascript instanz noch cheerio als zusätzliches NPM-modul hinzugefügt werden

            cheerio versucht auf serverebene die befehle von jquery (welches eigentlich nur im browser funktioniert) nachzubilden.
            dadurch kann man relativ einfach im browser mit rechte maustaste, element untersuchen und dann auf dem element kopieren/selektor die adressierung des elements wählen.
            der befehl text() dahinter ist nicht schwer zu interpretieren.

            komplizierter war die kanalliste, da ja hier mehrere einträge sich befinden können. aber durch umwandlung in ein array, dann map und dann wieder join ging das auch.

            ergebnis im Datenpunk bei mir

            RB Leipzig - FC Köln | Morgen samstag, 13.08.2022 um  15:30  | DAZN, Sky Sport Bundesliga 3
            

            da es einfacher war, werte ich die erste Tabelle aus, leider steht da der wichentag mit kleinen buchstaben drin.

            const cheerio = require('cheerio');
            const axios = require('axios');
            const dp = "0_userdata.0.test1";
            
            async function getFussball() {
                const response = await axios.get('https://www.fussball-im-tv.com/team/colonia');
                const $ = cheerio.load(response.data);
                let datum = $('#utcRelativeContent > table:nth-child(1) > tbody > tr.cabeceraTabla > td').text();
                let uhr = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.hora').text();
                let lokal = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.local > span').text();
                let visitor = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.visitante > span').text();
                let tv = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.canales > ul li').toArray().map(el=>$(el).text()).join(", ");
                setState(dp,lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                //console.log(lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
            }
            getFussball();
            
            

            aber nicht so oft laufen lassen, so das der Anbieter sich nicht gestört fühlt und dann noch ein wichtiger hinweis aus den nutzungsbedingungen für dich, der sagt das du das nicht darfst. da es aber auf spanisch ist, gilt es wahrscheinlich nicht

            El Usuario deberá abstenerse de obtener e incluso de intentar obtener los Contenidos empleando para ello medios o procedimientos distintos de los que, según los casos, se hayan puesto a su disposición a este efecto o se hayan indicado a este efecto en las páginas Web donde se encuentren los Contenidos o, en general, de los que se empleen habitualmente en Internet a este efecto siempre que no entrañen un riesgo de daño o inutilización de la Página, y/o de los Contenidos.

            @Homoran jetzt mach ich ein video draus und lad es nach youtube hoch :>

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            HomoranH A 2 Antworten Letzte Antwort
            3
            • OliverIOO OliverIO

              @adsfa

              hier wäre ein vorschlag:
              als erstes muss in den einstellungen der javascript instanz noch cheerio als zusätzliches NPM-modul hinzugefügt werden

              cheerio versucht auf serverebene die befehle von jquery (welches eigentlich nur im browser funktioniert) nachzubilden.
              dadurch kann man relativ einfach im browser mit rechte maustaste, element untersuchen und dann auf dem element kopieren/selektor die adressierung des elements wählen.
              der befehl text() dahinter ist nicht schwer zu interpretieren.

              komplizierter war die kanalliste, da ja hier mehrere einträge sich befinden können. aber durch umwandlung in ein array, dann map und dann wieder join ging das auch.

              ergebnis im Datenpunk bei mir

              RB Leipzig - FC Köln | Morgen samstag, 13.08.2022 um  15:30  | DAZN, Sky Sport Bundesliga 3
              

              da es einfacher war, werte ich die erste Tabelle aus, leider steht da der wichentag mit kleinen buchstaben drin.

              const cheerio = require('cheerio');
              const axios = require('axios');
              const dp = "0_userdata.0.test1";
              
              async function getFussball() {
                  const response = await axios.get('https://www.fussball-im-tv.com/team/colonia');
                  const $ = cheerio.load(response.data);
                  let datum = $('#utcRelativeContent > table:nth-child(1) > tbody > tr.cabeceraTabla > td').text();
                  let uhr = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.hora').text();
                  let lokal = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.local > span').text();
                  let visitor = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.visitante > span').text();
                  let tv = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.canales > ul li').toArray().map(el=>$(el).text()).join(", ");
                  setState(dp,lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                  //console.log(lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
              }
              getFussball();
              
              

              aber nicht so oft laufen lassen, so das der Anbieter sich nicht gestört fühlt und dann noch ein wichtiger hinweis aus den nutzungsbedingungen für dich, der sagt das du das nicht darfst. da es aber auf spanisch ist, gilt es wahrscheinlich nicht

              El Usuario deberá abstenerse de obtener e incluso de intentar obtener los Contenidos empleando para ello medios o procedimientos distintos de los que, según los casos, se hayan puesto a su disposición a este efecto o se hayan indicado a este efecto en las páginas Web donde se encuentren los Contenidos o, en general, de los que se empleen habitualmente en Internet a este efecto siempre que no entrañen un riesgo de daño o inutilización de la Página, y/o de los Contenidos.

              @Homoran jetzt mach ich ein video draus und lad es nach youtube hoch :>

              HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #9

              @oliverio dann nehme ich den upvote sofort zurück :grin:

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              1
              • A Offline
                A Offline
                adsfa
                schrieb am zuletzt editiert von
                #10

                @oliverio
                Super! Damit klappt es perfekt!
                Vielen vielen Dank :)

                1 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  @adsfa

                  hier wäre ein vorschlag:
                  als erstes muss in den einstellungen der javascript instanz noch cheerio als zusätzliches NPM-modul hinzugefügt werden

                  cheerio versucht auf serverebene die befehle von jquery (welches eigentlich nur im browser funktioniert) nachzubilden.
                  dadurch kann man relativ einfach im browser mit rechte maustaste, element untersuchen und dann auf dem element kopieren/selektor die adressierung des elements wählen.
                  der befehl text() dahinter ist nicht schwer zu interpretieren.

                  komplizierter war die kanalliste, da ja hier mehrere einträge sich befinden können. aber durch umwandlung in ein array, dann map und dann wieder join ging das auch.

                  ergebnis im Datenpunk bei mir

                  RB Leipzig - FC Köln | Morgen samstag, 13.08.2022 um  15:30  | DAZN, Sky Sport Bundesliga 3
                  

                  da es einfacher war, werte ich die erste Tabelle aus, leider steht da der wichentag mit kleinen buchstaben drin.

                  const cheerio = require('cheerio');
                  const axios = require('axios');
                  const dp = "0_userdata.0.test1";
                  
                  async function getFussball() {
                      const response = await axios.get('https://www.fussball-im-tv.com/team/colonia');
                      const $ = cheerio.load(response.data);
                      let datum = $('#utcRelativeContent > table:nth-child(1) > tbody > tr.cabeceraTabla > td').text();
                      let uhr = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.hora').text();
                      let lokal = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.local > span').text();
                      let visitor = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.visitante > span').text();
                      let tv = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.canales > ul li').toArray().map(el=>$(el).text()).join(", ");
                      setState(dp,lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                      //console.log(lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                  }
                  getFussball();
                  
                  

                  aber nicht so oft laufen lassen, so das der Anbieter sich nicht gestört fühlt und dann noch ein wichtiger hinweis aus den nutzungsbedingungen für dich, der sagt das du das nicht darfst. da es aber auf spanisch ist, gilt es wahrscheinlich nicht

                  El Usuario deberá abstenerse de obtener e incluso de intentar obtener los Contenidos empleando para ello medios o procedimientos distintos de los que, según los casos, se hayan puesto a su disposición a este efecto o se hayan indicado a este efecto en las páginas Web donde se encuentren los Contenidos o, en general, de los que se empleen habitualmente en Internet a este efecto siempre que no entrañen un riesgo de daño o inutilización de la Página, y/o de los Contenidos.

                  @Homoran jetzt mach ich ein video draus und lad es nach youtube hoch :>

                  A Offline
                  A Offline
                  adsfa
                  schrieb am zuletzt editiert von adsfa
                  #11

                  @oliverio Vielen Dank nochmal für das super Script.
                  Ich habe jetzt noch eine weitere Seite geparst und das klappt super, jedoch kriege ich es nicht hin den Preis in eine Zahl umzuwandeln.
                  Hast du ggf. noch einen Tipp für mich :)?

                  parsefloat() und Number() habe ich schon probiert aber es will nicht funktionieren. In meiner Ausgabe steht dann nur "script.js.JavaScript.WebScraper.ESNKreatin: Ausverkauft - 25.90 1"

                  Zudem erhalte ich eine Warnung in log, wenn ich den Datenpunkt von "gemischt" auf "Zahl" ändere.

                  const cheerio = require('cheerio');
                  const axios = require('axios');
                  const dp1 = "0_userdata.0.JS.WebScraper.Shops.ESNCreatin.Ausverkauft";
                  const dp2 = "0_userdata.0.JS.WebScraper.Shops.ESNCreatin.Preis";
                  //createState(dp1, " ");
                  //createState(dp2, " ");
                   
                  async function getESNCreatin() {
                      const response = await axios.get('https://www.fitmart.de/products/esn-ultrapure-creatine-monohydrate-500g?_pos=6&_sid=c08d9931b&_ss=r');
                      const $ = cheerio.load(response.data);
                      let ausverkauft = $('#shopify-section-static-product > section > article > div.product-main > div.product-details > div.product-pricing > span').text();
                      let preis = $('#shopify-section-static-product > section > article > div.product-main > div.product-details > div.product-pricing > div.price.product__price > div.price__current > span').text().replace("€", "").replace(/,/, ".");
                      parseFloat(preis)
                      Number(preis)
                      preis = preis + 1;
                      setState(dp1,ausverkauft);
                      setState(dp2,preis);
                      console.log(ausverkauft + " - " + preis);
                  }
                  getESNCreatin();
                  
                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • A adsfa

                    @oliverio Vielen Dank nochmal für das super Script.
                    Ich habe jetzt noch eine weitere Seite geparst und das klappt super, jedoch kriege ich es nicht hin den Preis in eine Zahl umzuwandeln.
                    Hast du ggf. noch einen Tipp für mich :)?

                    parsefloat() und Number() habe ich schon probiert aber es will nicht funktionieren. In meiner Ausgabe steht dann nur "script.js.JavaScript.WebScraper.ESNKreatin: Ausverkauft - 25.90 1"

                    Zudem erhalte ich eine Warnung in log, wenn ich den Datenpunkt von "gemischt" auf "Zahl" ändere.

                    const cheerio = require('cheerio');
                    const axios = require('axios');
                    const dp1 = "0_userdata.0.JS.WebScraper.Shops.ESNCreatin.Ausverkauft";
                    const dp2 = "0_userdata.0.JS.WebScraper.Shops.ESNCreatin.Preis";
                    //createState(dp1, " ");
                    //createState(dp2, " ");
                     
                    async function getESNCreatin() {
                        const response = await axios.get('https://www.fitmart.de/products/esn-ultrapure-creatine-monohydrate-500g?_pos=6&_sid=c08d9931b&_ss=r');
                        const $ = cheerio.load(response.data);
                        let ausverkauft = $('#shopify-section-static-product > section > article > div.product-main > div.product-details > div.product-pricing > span').text();
                        let preis = $('#shopify-section-static-product > section > article > div.product-main > div.product-details > div.product-pricing > div.price.product__price > div.price__current > span').text().replace("€", "").replace(/,/, ".");
                        parseFloat(preis)
                        Number(preis)
                        preis = preis + 1;
                        setState(dp1,ausverkauft);
                        setState(dp2,preis);
                        console.log(ausverkauft + " - " + preis);
                    }
                    getESNCreatin();
                    
                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #12

                    @adsfa
                    parseFloat ist eine Funktion die das Ergebnis zurück gibt, daher musst du es auch zuweisen

                    preis = parseFloat(preis);
                    

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    A 2 Antworten Letzte Antwort
                    1
                    • OliverIOO OliverIO

                      @adsfa
                      parseFloat ist eine Funktion die das Ergebnis zurück gibt, daher musst du es auch zuweisen

                      preis = parseFloat(preis);
                      
                      A Offline
                      A Offline
                      adsfa
                      schrieb am zuletzt editiert von
                      #13

                      @oliverio Super, vielen Dank!! :)

                      1 Antwort Letzte Antwort
                      0
                      • OliverIOO OliverIO

                        @adsfa
                        parseFloat ist eine Funktion die das Ergebnis zurück gibt, daher musst du es auch zuweisen

                        preis = parseFloat(preis);
                        
                        A Offline
                        A Offline
                        adsfa
                        schrieb am zuletzt editiert von adsfa
                        #14

                        @oliverio
                        Ich hätte nochmal eine Frage zu einer anderen Webseite bei der ich es leider nicht hinbekomme den Preis zu erfragen. Wenn man die Seite öffnet erscheint der Preis erst nach 1 Sekunde, evtl. liegt es daran?
                        Leider kommt ein leeres Ergebnis raus.

                        Link: https://www.thenorthface.de/shop/de/tnf-de/carto-triclimate-jacke-fuer-damen-5iwj

                        const cheerio = require('cheerio');
                        const axios = require('axios');
                        
                        async function Scrape() {
                            const response = await axios.get('https://www.thenorthface.de/shop/de/tnf-de/carto-triclimate-jacke-fuer-damen-5iwj');
                            const $ = cheerio.load(response.data);
                            let preis = $('#product-info > div.product-content-info-price.product-price.product-price-js > span.product-content-info-offer-price.offer-price.offer-price-js.product-price-amount-js').text();
                        
                            console.log(preis);
                        }
                        Scrape();
                        

                        Das ist der JS-Path und die Abänderung (ich lösche alles vor der Klammer und ändere die Anführungszeichen von " in '.

                        document.querySelector("#product-info > div.product-content-info-price.product-price.product-price-js > span.product-content-info-offer-price.offer-price.offer-price-js.product-price-amount-js")
                        '#product-info > div.product-content-info-price.product-price.product-price-js > span.product-content-info-offer-price.offer-price.offer-price-js.product-price-amount-js'
                        
                        OliverIOO 1 Antwort Letzte Antwort
                        0
                        • A adsfa

                          @oliverio
                          Ich hätte nochmal eine Frage zu einer anderen Webseite bei der ich es leider nicht hinbekomme den Preis zu erfragen. Wenn man die Seite öffnet erscheint der Preis erst nach 1 Sekunde, evtl. liegt es daran?
                          Leider kommt ein leeres Ergebnis raus.

                          Link: https://www.thenorthface.de/shop/de/tnf-de/carto-triclimate-jacke-fuer-damen-5iwj

                          const cheerio = require('cheerio');
                          const axios = require('axios');
                          
                          async function Scrape() {
                              const response = await axios.get('https://www.thenorthface.de/shop/de/tnf-de/carto-triclimate-jacke-fuer-damen-5iwj');
                              const $ = cheerio.load(response.data);
                              let preis = $('#product-info > div.product-content-info-price.product-price.product-price-js > span.product-content-info-offer-price.offer-price.offer-price-js.product-price-amount-js').text();
                          
                              console.log(preis);
                          }
                          Scrape();
                          

                          Das ist der JS-Path und die Abänderung (ich lösche alles vor der Klammer und ändere die Anführungszeichen von " in '.

                          document.querySelector("#product-info > div.product-content-info-price.product-price.product-price-js > span.product-content-info-offer-price.offer-price.offer-price-js.product-price-amount-js")
                          '#product-info > div.product-content-info-price.product-price.product-price-js > span.product-content-info-offer-price.offer-price.offer-price-js.product-price-amount-js'
                          
                          OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          schrieb am zuletzt editiert von
                          #15

                          @adsfa
                          sorry, hat ein wenig gedauert.

                          dein skript hat deswegen kein ergebnis, weil der preis in der datei gar nicht enthalten ist, sondern nur ein platzhalter, der später dann durch javascript gefüllt wird.
                          der wirkliche preis wird von der seite dynamisch abgerufen und ist in dieser datei enthalten

                          https://www.thenorthface.de/webapp/wcs/stores/servlet/VFAjaxItemPricingView?requestype=ajax&storeId=7007&langId=-3&catalogId=13505&productId=1144743&requesttype=ajax

                          da wird dann direkt ein json objekt zurückgegeben, das du direkt auswerten kanns.
                          ob die abfrage allerdings noch zusätzlich gesichert ist, so das man das nicht strukturiert per skript abrufen kann, hab ich nicht ausprobiert

                          Meine Adapter und Widgets
                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                          Links im Profil

                          A 1 Antwort Letzte Antwort
                          1
                          • OliverIOO OliverIO

                            @adsfa
                            sorry, hat ein wenig gedauert.

                            dein skript hat deswegen kein ergebnis, weil der preis in der datei gar nicht enthalten ist, sondern nur ein platzhalter, der später dann durch javascript gefüllt wird.
                            der wirkliche preis wird von der seite dynamisch abgerufen und ist in dieser datei enthalten

                            https://www.thenorthface.de/webapp/wcs/stores/servlet/VFAjaxItemPricingView?requestype=ajax&storeId=7007&langId=-3&catalogId=13505&productId=1144743&requesttype=ajax

                            da wird dann direkt ein json objekt zurückgegeben, das du direkt auswerten kanns.
                            ob die abfrage allerdings noch zusätzlich gesichert ist, so das man das nicht strukturiert per skript abrufen kann, hab ich nicht ausprobiert

                            A Offline
                            A Offline
                            adsfa
                            schrieb am zuletzt editiert von
                            #16

                            @oliverio Vielen Dank! Danke das habe ich so ungefähr verstanden :).
                            Wie hast du den Link gefunden?

                            OliverIOO 1 Antwort Letzte Antwort
                            0
                            • A adsfa

                              @oliverio Vielen Dank! Danke das habe ich so ungefähr verstanden :).
                              Wie hast du den Link gefunden?

                              OliverIOO Offline
                              OliverIOO Offline
                              OliverIO
                              schrieb am zuletzt editiert von
                              #17

                              @adsfa
                              Mir den Developer Tools des browsers geschaut was die Seite da noch lädt.

                              Meine Adapter und Widgets
                              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                              Links im Profil

                              A 1 Antwort Letzte Antwort
                              1
                              • OliverIOO OliverIO

                                @adsfa
                                Mir den Developer Tools des browsers geschaut was die Seite da noch lädt.

                                A Offline
                                A Offline
                                adsfa
                                schrieb am zuletzt editiert von
                                #18

                                @oliverio Vielen Dank! Ich hätte nochmal eine Frage, falls das ok ist.

                                Wie kann ich auf ein Element klicken?
                                Ich habe z.B. diese Adidas Seite und würde gerne auf die Schuhgröße klicken. Geht das?

                                const cheerio = require('cheerio');
                                const axios = require('axios');
                                
                                async function Scrape() {
                                    const response = await axios.get('https://www.adidas.de/adilette-aqua-slides/F35550.html');
                                    const $ = cheerio.load(response.data);
                                    let preis  = $('#main-content > div.sidebar-wrapper___3uF26 > div.sidebar___29cCJ > div > div.product-price___2Mip5.gl-vspace > div.price___Z74_w.price___35NVI.gl-flex-col > div > div > div').text();
                                    let lieferzeit = $('#main-content > div.sidebar-wrapper___3uF26 > div.sidebar___29cCJ > section > div.gl-callout.backorder-callout___Sa5vJ > div > h5').text();
                                
                                    console.log(preis);
                                    console.log(lieferzeit );
                                }
                                Scrape();
                                

                                Vielen Dank :)

                                OliverIOO 1 Antwort Letzte Antwort
                                0
                                • A adsfa

                                  @oliverio Vielen Dank! Ich hätte nochmal eine Frage, falls das ok ist.

                                  Wie kann ich auf ein Element klicken?
                                  Ich habe z.B. diese Adidas Seite und würde gerne auf die Schuhgröße klicken. Geht das?

                                  const cheerio = require('cheerio');
                                  const axios = require('axios');
                                  
                                  async function Scrape() {
                                      const response = await axios.get('https://www.adidas.de/adilette-aqua-slides/F35550.html');
                                      const $ = cheerio.load(response.data);
                                      let preis  = $('#main-content > div.sidebar-wrapper___3uF26 > div.sidebar___29cCJ > div > div.product-price___2Mip5.gl-vspace > div.price___Z74_w.price___35NVI.gl-flex-col > div > div > div').text();
                                      let lieferzeit = $('#main-content > div.sidebar-wrapper___3uF26 > div.sidebar___29cCJ > section > div.gl-callout.backorder-callout___Sa5vJ > div > h5').text();
                                  
                                      console.log(preis);
                                      console.log(lieferzeit );
                                  }
                                  Scrape();
                                  

                                  Vielen Dank :)

                                  OliverIOO Offline
                                  OliverIOO Offline
                                  OliverIO
                                  schrieb am zuletzt editiert von OliverIO
                                  #19

                                  @adsfa
                                  theoretisch ja.
                                  allerdings wird beim klick auf die schuhgröße eine kauderwelsch adresse aufgerufen
                                  https://www.adidas.de/Gnb58ttYk1PE/cL/2Crmr3uBA4/ii1wmh7OOp/ITULbHd7Rgg/aUMoS/HsEYgsB

                                  in diesem kauderwelch sind sicherlich alle produktparameter hinein verschlüsselt.
                                  um diesen link zu ermitteln müsste man zunächst den code analysieren.
                                  Das ist ziemlich aufwändig.

                                  Andere Alternative wäre mit pupeteer die adresse aufzurufen und dann anweisungen zu geben ein bestimmtes element zu laden und aus der seite dann den text extrahieren.
                                  Auch das ist aufwändig, da im hintergrund ein kompletter browser geladen wird.

                                  im obigen beispiel werden ja nur die html-daten geladen und mittels einer jquery ähnlichen bibliothek ausgewertet. aber es wird kein browser ausgeführt.

                                  beide methoden funktionieren nur solange bis die seite in seiner struktur geändert wird, dann muss man das wieder neu aufbauen.

                                  Meine Adapter und Widgets
                                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                  Links im Profil

                                  A 1 Antwort Letzte Antwort
                                  0
                                  • OliverIOO OliverIO

                                    @adsfa
                                    theoretisch ja.
                                    allerdings wird beim klick auf die schuhgröße eine kauderwelsch adresse aufgerufen
                                    https://www.adidas.de/Gnb58ttYk1PE/cL/2Crmr3uBA4/ii1wmh7OOp/ITULbHd7Rgg/aUMoS/HsEYgsB

                                    in diesem kauderwelch sind sicherlich alle produktparameter hinein verschlüsselt.
                                    um diesen link zu ermitteln müsste man zunächst den code analysieren.
                                    Das ist ziemlich aufwändig.

                                    Andere Alternative wäre mit pupeteer die adresse aufzurufen und dann anweisungen zu geben ein bestimmtes element zu laden und aus der seite dann den text extrahieren.
                                    Auch das ist aufwändig, da im hintergrund ein kompletter browser geladen wird.

                                    im obigen beispiel werden ja nur die html-daten geladen und mittels einer jquery ähnlichen bibliothek ausgewertet. aber es wird kein browser ausgeführt.

                                    beide methoden funktionieren nur solange bis die seite in seiner struktur geändert wird, dann muss man das wieder neu aufbauen.

                                    A Offline
                                    A Offline
                                    adsfa
                                    schrieb am zuletzt editiert von
                                    #20

                                    @oliverio Vielen Dank für die ausführliche Beschreibung.
                                    Dann schaue ich mir Pupeteer mal genauer an und Selenium über Python steht auch auf meiner Liste.

                                    OliverIOO 1 Antwort Letzte Antwort
                                    0
                                    • A adsfa

                                      @oliverio Vielen Dank für die ausführliche Beschreibung.
                                      Dann schaue ich mir Pupeteer mal genauer an und Selenium über Python steht auch auf meiner Liste.

                                      OliverIOO Offline
                                      OliverIOO Offline
                                      OliverIO
                                      schrieb am zuletzt editiert von
                                      #21

                                      @adsfa
                                      pupeteer ist direkt für nodejs und macht mehr oder weniger genau das selbe wie selenium.
                                      es sind aber beide keine easy benutzerprogramme sondern erfordern jeweils programmier skills, sonst kannst damit nicht wirklich was anfangen

                                      Meine Adapter und Widgets
                                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                      Links im Profil

                                      D 1 Antwort Letzte Antwort
                                      0
                                      • OliverIOO OliverIO

                                        @adsfa
                                        pupeteer ist direkt für nodejs und macht mehr oder weniger genau das selbe wie selenium.
                                        es sind aber beide keine easy benutzerprogramme sondern erfordern jeweils programmier skills, sonst kannst damit nicht wirklich was anfangen

                                        D Offline
                                        D Offline
                                        Digi-Bit
                                        schrieb am zuletzt editiert von
                                        #22

                                        Hallo,

                                        Ist schon etwas älter das Thema aber ich habe das JS ja von hier und vielleicht ist dies dann so einfacher.

                                        const cheerio = require('cheerio');
                                        const axios = require('axios');
                                        const dp = "0_userdata.0.test1";
                                         
                                        async function getFussball() {
                                            const response = await axios.get('https://www.fussball-im-tv.com/team/colonia');
                                            const $ = cheerio.load(response.data);
                                            let datum = $('#utcRelativeContent > table:nth-child(1) > tbody > tr.cabeceraTabla > td').text();
                                            let uhr = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.hora').text();
                                            let lokal = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.local > span').text();
                                            let visitor = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.visitante > span').text();
                                            let tv = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.canales > ul li').toArray().map(el=>$(el).text()).join(", ");
                                            setState(dp,lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                                            console.log(lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                                        }
                                        getFussball();
                                         
                                        
                                        

                                        dies funktionier leider nicht mehr :anguished:

                                        bei den oberen beiden Zeilen ist jetzt auch eine rote "welle" drunter also denke ich das es damit irgend wie zusammen hängt
                                        Bild_2024-02-15_174355633.png

                                        im Adapter ist auch noch alles eingetragen

                                        Bild_2024-02-15_174554863.png

                                        Ich habe auch schon ein altes Backup installiert aber aber auch da geht es nicht :(

                                        Kann mir da jemand weiter helfen den ich fand es recht nützlich nicht immer suchen zu müssen auf welchem Portal man sich das Fussball spiel anschauen kann !

                                        mfg

                                        Digi-Bit

                                        Router: Ubiquiti UniFi Dream Machine Pro|Iobroker I.NUCi5/Debian, 6 x Switche, 3 x APs, 3 x Cam, 2 x Nas(Qnap 4 & 8 Bay's)
                                        7 x Echos, 76 x Tasmota, 58 x ZigBee, Homatic Ip, 2 x USV

                                        OliverIOO 1 Antwort Letzte Antwort
                                        0
                                        • D Digi-Bit

                                          Hallo,

                                          Ist schon etwas älter das Thema aber ich habe das JS ja von hier und vielleicht ist dies dann so einfacher.

                                          const cheerio = require('cheerio');
                                          const axios = require('axios');
                                          const dp = "0_userdata.0.test1";
                                           
                                          async function getFussball() {
                                              const response = await axios.get('https://www.fussball-im-tv.com/team/colonia');
                                              const $ = cheerio.load(response.data);
                                              let datum = $('#utcRelativeContent > table:nth-child(1) > tbody > tr.cabeceraTabla > td').text();
                                              let uhr = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.hora').text();
                                              let lokal = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.local > span').text();
                                              let visitor = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.visitante > span').text();
                                              let tv = $('#utcRelativeContent > table:nth-child(1) > tbody > tr:nth-child(2) > td.canales > ul li').toArray().map(el=>$(el).text()).join(", ");
                                              setState(dp,lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                                              console.log(lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                                          }
                                          getFussball();
                                           
                                          
                                          

                                          dies funktionier leider nicht mehr :anguished:

                                          bei den oberen beiden Zeilen ist jetzt auch eine rote "welle" drunter also denke ich das es damit irgend wie zusammen hängt
                                          Bild_2024-02-15_174355633.png

                                          im Adapter ist auch noch alles eingetragen

                                          Bild_2024-02-15_174554863.png

                                          Ich habe auch schon ein altes Backup installiert aber aber auch da geht es nicht :(

                                          Kann mir da jemand weiter helfen den ich fand es recht nützlich nicht immer suchen zu müssen auf welchem Portal man sich das Fussball spiel anschauen kann !

                                          mfg

                                          Digi-Bit

                                          OliverIOO Offline
                                          OliverIOO Offline
                                          OliverIO
                                          schrieb am zuletzt editiert von
                                          #23

                                          @digi-bit

                                          Der Anbieter hatte leichte Änderungen an seiner Seite vorgenommen

                                          const cheerio = require('cheerio');
                                          const axios = require('axios');
                                          const dp = "0_userdata.0.test1";
                                           
                                          async function getFussball() {
                                              const response = await axios.get('https://www.fussball-im-tv.com/team/colonia');
                                              const $ = cheerio.load(response.data);
                                              let datum = $('#utcRelativeContent > table:nth-child(2) > tbody > tr.cabeceraTabla > td').text();
                                              let uhr = $('#utcRelativeContent > table:nth-child(2) > tbody > tr:nth-child(2) > td.hora').text();
                                              let lokal = $('#utcRelativeContent > table:nth-child(2) > tbody > tr:nth-child(2) > td.local > span').text();
                                              let visitor = $('#utcRelativeContent > table:nth-child(2) > tbody > tr:nth-child(2) > td.visitante span').text();
                                              let tv = $('#utcRelativeContent > table:nth-child(2) > tbody > tr:nth-child(2) > td.canales > ul li').toArray().map(el=>$(el).text()).join(", ");
                                              setState(dp,lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                                              console.log(lokal + " - " + visitor + " | " + datum + " um " + uhr + " | " + tv);
                                          }
                                          getFussball();
                                          

                                          Meine Adapter und Widgets
                                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                                          Links im Profil

                                          D 1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          651

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe