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.2k

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.
  • 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
                  • OliverIOO OliverIO

                    @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();
                    
                    D Offline
                    D Offline
                    Digi-Bit
                    schrieb am zuletzt editiert von
                    #24

                    @oliverio sagte in Parser: TV-Sender Fußball [Closed]:

                    @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();
                    

                    Hallo,

                    Ahhh, danke erstmal aber leider wird der "lokal " nicht angezeigt, kannst du da noch was machen ?

                    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

                      @oliverio sagte in Parser: TV-Sender Fußball [Closed]:

                      @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();
                      

                      Hallo,

                      Ahhh, danke erstmal aber leider wird der "lokal " nicht angezeigt, kannst du da noch was machen ?

                      mfg

                      Digi-Bit

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

                      dann so

                      @digi-bit sagte in Parser: TV-Sender Fußball [Closed]:

                      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

                      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

                      875

                      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