Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Parser: TV-Sender Fußball [Closed]

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Parser: TV-Sender Fußball [Closed]

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      adsfa @OliverIO last edited by

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

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @adsfa last edited by

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

        A 1 Reply Last reply Reply Quote 1
        • A
          adsfa @OliverIO last edited by

          @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 🙂

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @adsfa last edited by 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 1 Reply Last reply Reply Quote 0
            • A
              adsfa @OliverIO last edited by

              @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.

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @adsfa last edited by

                @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 1 Reply Last reply Reply Quote 0
                • D
                  Digi-Bit @OliverIO last edited by

                  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 😧

                  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

                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Digi-Bit last edited by

                    @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 1 Reply Last reply Reply Quote 1
                    • D
                      Digi-Bit @OliverIO last edited by

                      @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

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @Digi-Bit last edited by OliverIO

                        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();
                        
                        1 Reply Last reply Reply Quote 1
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        621
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        4
                        25
                        1410
                        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