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. ioBroker Allgemein
  4. Web-Abfrage funktioniert nicht (Parser/Blockly)

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Web-Abfrage funktioniert nicht (Parser/Blockly)

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
8 Beiträge 3 Kommentatoren 517 Aufrufe 4 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.
  • I Offline
    I Offline
    IOBaer
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich möchte auf einer Seite wie https://dlr-web-daten1.aspdienste.de/cgi-bin/wetter.min5.pl?c=9 &sid=3&t=1,2,6,9,7,8&hh=1 verschiedene Wetterdaten abfragen. Leider gelingt das nicht. Die Bedeutung der Parameter in der Url sind mir bekannt. Erst dachte ich, mein RegEx sei fehlerhaft, aber das Problem besteht hier wohl darin, dass der Webserver einen "403 Forbidden"-Fehler ausliefert, wenn die Seite nicht im Browser aufgerufen wird - ich vermute, es fehlt an User-Agent & Co.

    Deshalb scheitern meine Versuche sowohl mit dem Parser, als auch mit z.B. der Request-Funktion in Blockly.

    Hat jemand eine Idee?

    Danke!

    F 1 Antwort Letzte Antwort
    0
    • I IOBaer

      Hallo zusammen,

      ich möchte auf einer Seite wie https://dlr-web-daten1.aspdienste.de/cgi-bin/wetter.min5.pl?c=9 &sid=3&t=1,2,6,9,7,8&hh=1 verschiedene Wetterdaten abfragen. Leider gelingt das nicht. Die Bedeutung der Parameter in der Url sind mir bekannt. Erst dachte ich, mein RegEx sei fehlerhaft, aber das Problem besteht hier wohl darin, dass der Webserver einen "403 Forbidden"-Fehler ausliefert, wenn die Seite nicht im Browser aufgerufen wird - ich vermute, es fehlt an User-Agent & Co.

      Deshalb scheitern meine Versuche sowohl mit dem Parser, als auch mit z.B. der Request-Funktion in Blockly.

      Hat jemand eine Idee?

      Danke!

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #2

      @iobaer Zwei Versionen, eine welche dir nur das HTML liefert, die andere baut aus dem Html eine JSON, dafür musst du aber in der JS-Instanz cheerio installieren. Die zweite Tabelle(Summen) wird hier aber nicht behandelt, das kannst du selbst rauspfriemeln :-)
      WetterdatenSimple.PNG

      <xml xmlns="https://developers.google.com/blockly/xml">
       <block type="procedures_defcustomreturn" id="~!MZMJ@vtEc+NEYf.fqu" x="63" y="38">
         <mutation statements="false"></mutation>
         <field name="NAME">WetterdatenSimple</field>
         <field name="SCRIPT">Ly8gQWdyYXJtZXRlb3JvbG9naWUgUmhlaW5sYW5kLVBmYWx6DQpsZXQgdXJsPSdodHRwczovL2Rsci13ZWItZGF0ZW4xLmFzcGRpZW5zdGUuZGUvY2dpLWJpbi93ZXR0ZXIubWluNS5wbCc7DQpsZXQgYm9keT0iYz05ICZzaWQ9MyZ0PTEsMiw2LDksNyw4JmhoPTEiOw0KbGV0IHJlcyA9ICdGZWhsZXIhJzsNCmxldCBvcHRzID0gew0KICAgIHVybCwNCiAgICBoZWFkZXJzOiB7DQogICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywNCiAgICAgICAgJ1VzZXItQWdlbnQnOidpb2Jyb2tlci1zY3JpcHQnDQogICAgfSwNCiAgICBib2R5OmJvZHkNCn0NCg0KcmVxdWVzdC5wb3N0KG9wdHMsKGVycixyZXNwLGJvZHkpPT57DQogICAgLy9sb2coYm9keSk7DQogICAgcmVzID0gYm9keTsNCn0pDQphd2FpdCB3YWl0KDEwMDApOw0KcmV0dXJuIHJlczs=</field>
         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
       </block>
       <block type="debug" id="F3-LvtSOvx@ilObd9)Gy" x="62" y="63">
         <field name="Severity">log</field>
         <value name="TEXT">
           <shadow type="text" id=":|L#U,)-6m=bkgWD8Cih">
             <field name="TEXT">test</field>
           </shadow>
           <block type="procedures_callcustomreturn" id="{xxO[8LgjzyF{o*w-vLZ">
             <mutation name="WetterdatenSimple"></mutation>
           </block>
         </value>
       </block>
      </xml>
      


      WetterdatenCheerio.PNG

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable id="IPnS@P,KgBomXU1$aJ.w">i</variable>
       </variables>
       <block type="procedures_defcustomreturn" id="~!MZMJ@vtEc+NEYf.fqu" x="63" y="38">
         <mutation statements="false"></mutation>
         <field name="NAME">Wetterdaten</field>
         <field name="SCRIPT">Ly8gQWdyYXJtZXRlb3JvbG9naWUgUmhlaW5sYW5kLVBmYWx6DQpjb25zdCBjaGVlcmlvID0gcmVxdWlyZSgnY2hlZXJpbycpOw0KbGV0IHJlcyA9IFtdOw0KbGV0IHVybD0naHR0cHM6Ly9kbHItd2ViLWRhdGVuMS5hc3BkaWVuc3RlLmRlL2NnaS1iaW4vd2V0dGVyLm1pbjUucGwnOw0KbGV0IGJvZHk9ImM9OSAmc2lkPTMmdD0xLDIsNiw5LDcsOCZoaD0xIjsNCmxldCBvcHRzID0gew0KICAgIHVybCwNCiAgICBoZWFkZXJzOiB7DQogICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywNCiAgICAgICAgJ1VzZXItQWdlbnQnOidpb2Jyb2tlcicNCiAgICB9LA0KICAgIGJvZHk6Ym9keQ0KfQ0KbGV0IGNvbHM9WyJEYXR1bSIsIlplaXQiLCJUZW1wMSIsIlRlbXAyIiwiTHVmdGZldWNodGUiLCJXaW5kIiwiQmxhdHRuYWVzc2UiLCJOaWVkZXJzY2hsYWciLCJaZWl0Il0NCmNvbnN0IG1hcFJvd3MgPSAoXywgcm93KSA9PiB7DQoJY29uc3QgZGF0YSA9IHt9Ow0KCWNoZWVyaW8ocm93KS5jaGlsZHJlbigndGQnKS5lYWNoKChpbmRleCwgY2VsbCkgPT4gew0KCQljZWxsID0gY2hlZXJpby5sb2FkKGNlbGwpOw0KCQlzd2l0Y2ggKGluZGV4KSB7DQoJCQljYXNlIDA6IHsNCgkJCQlkYXRhW2NvbHNbaW5kZXhdXSA9IGNlbGwudGV4dCgpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJZGVmYXVsdDogew0KCQkJCWRhdGFbY29sc1tpbmRleF1dID0gY2VsbC50ZXh0KCk7DQoJCQl9DQoJCX0NCgl9KTsNCgljaGVlcmlvKHJvdykuY2hpbGRyZW4oJ3RoJykuZWFjaCgoaW5kZXgsIGNlbGwpID0+IHsNCgkJY2VsbCA9IGNoZWVyaW8ubG9hZChjZWxsKTsNCgkJc3dpdGNoIChpbmRleCkgew0KCQkJY2FzZSAwOiB7DQoJCQkJZGF0YVtjb2xzW2luZGV4XV0gPSBjZWxsLnRleHQoKTsNCgkJCQlicmVhazsNCgkJCX0NCgkJCWRlZmF1bHQ6IHsNCgkJCQlkYXRhW2NvbHNbaW5kZXhdXSA9IGNlbGwudGV4dCgpOw0KCQkJfQ0KCQl9DQoJfSk7DQoJcmV0dXJuIGRhdGE7DQp9Ow0KDQpyZXF1ZXN0LnBvc3Qob3B0cywoZXJyLHJlc3AsYm9keSk9PnsNCiAgICBsZXQgRGF0dW07DQogICAgbGV0IGh0bWwgPSBjaGVlcmlvLmxvYWQoYm9keSk7DQogICAgbGV0IGRhdGEgPSBodG1sKGB0YWJsZS5hbWApLmNoaWxkcmVuKCd0Ym9keTpmaXJzdC1vZi10eXBlJykuY2hpbGRyZW4oJ3RyJykubWFwKG1hcFJvd3MpLmdldCgpOw0KICAgIGRhdGEuZm9yRWFjaCgocm93LGlkeCk9PnsNCiAgICAgICAgaWYoaWR4PT0wKSBEYXR1bT1yb3cuRGF0dW07DQogICAgICAgIHJlcy5wdXNoKHsNCiAgICAgICAgICAgIE5yOmlkeCwNCiAgICAgICAgICAgIERhdHVtOkRhdHVtLA0KICAgICAgICAgICAgWmVpdDpyb3cuWmVpdCwNCiAgICAgICAgICAgIFRlbXAxOnJvdy5UZW1wMSwNCiAgICAgICAgICAgIFRlbXAyOnJvdy5UZW1wMiwNCiAgICAgICAgICAgIEx1ZnRmZXVjaHRlOnJvdy5MdWZ0ZmV1Y2h0ZSwNCiAgICAgICAgICAgIFdpbmQ6cm93LldpbmQsDQogICAgICAgICAgICBCbGF0dG5hZXNzZTpyb3cuQmxhdHRuYWVzc2UsDQogICAgICAgICAgICBOaWVkZXJzY2hsYWc6cm93Lk5pZWRlcnNjaGxhZw0KICAgICAgICB9KQ0KICAgIH0pDQogICAgLy9sb2coSlNPTi5zdHJpbmdpZnkocmVzWzVdKSk7DQp9KQ0KYXdhaXQgd2FpdCgxMDAwKTsNCnJldHVybiByZXM7</field>
         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
       </block>
       <block type="controls_forEach" id="%pUBh.E%7$:YK7IzoS_Y" x="63" y="62">
         <field name="VAR" id="IPnS@P,KgBomXU1$aJ.w">i</field>
         <value name="LIST">
           <block type="procedures_callcustomreturn" id="{xxO[8LgjzyF{o*w-vLZ">
             <mutation name="Wetterdaten"></mutation>
           </block>
         </value>
         <statement name="DO">
           <block type="debug" id="F3-LvtSOvx@ilObd9)Gy">
             <field name="Severity">log</field>
             <value name="TEXT">
               <shadow type="text" id=":|L#U,)-6m=bkgWD8Cih">
                 <field name="TEXT">test</field>
               </shadow>
               <block type="text_join" id=":6Po8q:-}L#*:Npknd(+">
                 <mutation items="3"></mutation>
                 <value name="ADD0">
                   <block type="get_attr" id="pX;7:[_TLXHvur:}]`=q">
                     <value name="PATH">
                       <shadow type="text" id="w.*t3,(!E%e0sJ$^71:m">
                         <field name="TEXT">Zeit</field>
                       </shadow>
                     </value>
                     <value name="OBJECT">
                       <block type="variables_get" id="}8r[tYcC/dk6EImj)cTs">
                         <field name="VAR" id="IPnS@P,KgBomXU1$aJ.w">i</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <value name="ADD1">
                   <block type="text" id="HF?}sO%jIdxBe*~j@58R">
                     <field name="TEXT">: </field>
                   </block>
                 </value>
                 <value name="ADD2">
                   <block type="get_attr" id="XGdf`5jOIJ^qa$McWtRT">
                     <value name="PATH">
                       <shadow type="text" id="y-w!W53_YB;*nw8~4HBE">
                         <field name="TEXT">Temp1</field>
                       </shadow>
                     </value>
                     <value name="OBJECT">
                       <block type="variables_get" id="=-@#f!e`8t*)8c{r8O=o">
                         <field name="VAR" id="IPnS@P,KgBomXU1$aJ.w">i</field>
                       </block>
                     </value>
                   </block>
                 </value>
               </block>
             </value>
           </block>
         </statement>
       </block>
      </xml>
      

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      1 Antwort Letzte Antwort
      1
      • I Offline
        I Offline
        IOBaer
        schrieb am zuletzt editiert von IOBaer
        #3

        @fastfoot Erstmal vielen, vielen herzlichen Dank. Wow! Gerade auf Cheerio wäre ich selbst nicht gekommen, dazu findet man hier im Forum auch nur wenig.

        Ich habe "cheerio" im JS-Adapter hinterlegt und es über die Befehlszeile installieren wollen. Da kam als Fehler:

        npm WARN saveError ENOENT: no such file or directory, open '/home/pi/package.json'
        npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json'
        

        Trat unter verschiedenen Usern auf, auch mit su.

        Habe anschließend npm init durchgeführt (alles mit Eingabetaste bestätigt - war dies richtig?) und seither läuft es.

        Allerdings gab mir das ioBroker-Log bei Skriptausführung stets diesen Fehler aus:

        (3169) Error in request callback: TypeError: cheerio is not a function
        

        Nach Google-Suche kam ich dann auf einen Beitrag (https://stackoverflow.com/questions/67904881/cheerio-is-not-a-function-on-the-server-with-same-node-js-version-as-locally), mit Hilfe dessen ich

        const cheerio = require('cheerio');
        

        in

        const cheerio = require('cheerio').default;
        

        geändert habe - seither funktioniert es.

        Hat möglicherweise etwas damit zu tun? https://github.com/cheeriojs/cheerio/releases/tag/v1.0.0-rc.9

        Habe ich mir da weitere Probleme eingebaut oder passt das so?

        Danke :)

        Thomas BraunT F 2 Antworten Letzte Antwort
        0
        • I IOBaer

          @fastfoot Erstmal vielen, vielen herzlichen Dank. Wow! Gerade auf Cheerio wäre ich selbst nicht gekommen, dazu findet man hier im Forum auch nur wenig.

          Ich habe "cheerio" im JS-Adapter hinterlegt und es über die Befehlszeile installieren wollen. Da kam als Fehler:

          npm WARN saveError ENOENT: no such file or directory, open '/home/pi/package.json'
          npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json'
          

          Trat unter verschiedenen Usern auf, auch mit su.

          Habe anschließend npm init durchgeführt (alles mit Eingabetaste bestätigt - war dies richtig?) und seither läuft es.

          Allerdings gab mir das ioBroker-Log bei Skriptausführung stets diesen Fehler aus:

          (3169) Error in request callback: TypeError: cheerio is not a function
          

          Nach Google-Suche kam ich dann auf einen Beitrag (https://stackoverflow.com/questions/67904881/cheerio-is-not-a-function-on-the-server-with-same-node-js-version-as-locally), mit Hilfe dessen ich

          const cheerio = require('cheerio');
          

          in

          const cheerio = require('cheerio').default;
          

          geändert habe - seither funktioniert es.

          Hat möglicherweise etwas damit zu tun? https://github.com/cheeriojs/cheerio/releases/tag/v1.0.0-rc.9

          Habe ich mir da weitere Probleme eingebaut oder passt das so?

          Danke :)

          Thomas BraunT Online
          Thomas BraunT Online
          Thomas Braun
          Most Active
          schrieb am zuletzt editiert von
          #4

          @iobaer sagte in Web-Abfrage funktioniert nicht (Parser/Blockly):

          Ich habe "cheerio" im JS-Adapter hinterlegt und es über die Befehlszeile installieren wollen. Da kam als Fehler:

          Wie genau? Das ist mit Sicherheit mit dem falschen User / im falschen Verzeichnis ausgeführt worden. Sonst wäre nicht nach /home/pi/package.json gesucht worden.

          Linux-Werkzeugkasten:
          https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
          NodeJS Fixer Skript:
          https://forum.iobroker.net/topic/68035/iob-node-fix-skript
          iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

          1 Antwort Letzte Antwort
          1
          • I IOBaer

            @fastfoot Erstmal vielen, vielen herzlichen Dank. Wow! Gerade auf Cheerio wäre ich selbst nicht gekommen, dazu findet man hier im Forum auch nur wenig.

            Ich habe "cheerio" im JS-Adapter hinterlegt und es über die Befehlszeile installieren wollen. Da kam als Fehler:

            npm WARN saveError ENOENT: no such file or directory, open '/home/pi/package.json'
            npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json'
            

            Trat unter verschiedenen Usern auf, auch mit su.

            Habe anschließend npm init durchgeführt (alles mit Eingabetaste bestätigt - war dies richtig?) und seither läuft es.

            Allerdings gab mir das ioBroker-Log bei Skriptausführung stets diesen Fehler aus:

            (3169) Error in request callback: TypeError: cheerio is not a function
            

            Nach Google-Suche kam ich dann auf einen Beitrag (https://stackoverflow.com/questions/67904881/cheerio-is-not-a-function-on-the-server-with-same-node-js-version-as-locally), mit Hilfe dessen ich

            const cheerio = require('cheerio');
            

            in

            const cheerio = require('cheerio').default;
            

            geändert habe - seither funktioniert es.

            Hat möglicherweise etwas damit zu tun? https://github.com/cheeriojs/cheerio/releases/tag/v1.0.0-rc.9

            Habe ich mir da weitere Probleme eingebaut oder passt das so?

            Danke :)

            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von
            #5

            @iobaer also cheerio wird nach Eintrag in der JS-Instanz vom JS-Adapter installiert, da gibt es meiner Erfahrung nach nichts weiter zu beachten oder von der Konsole zu installieren. Wenn es aber jetzt läuft würde ich erstmal nichts weiter unternehmen. Das Parsen der HTML mit RegEx habe ich mir schwierig vorgestellt, deshalb halt cheerio. Zu deinem ursprünglichen Problem mit 403-Forbidden, das war wohl der fehlende User-Agent. Mit dem herkömmlichen Block ist das nicht zu realisieren, deshalb die Funktion

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            I 1 Antwort Letzte Antwort
            1
            • F fastfoot

              @iobaer also cheerio wird nach Eintrag in der JS-Instanz vom JS-Adapter installiert, da gibt es meiner Erfahrung nach nichts weiter zu beachten oder von der Konsole zu installieren. Wenn es aber jetzt läuft würde ich erstmal nichts weiter unternehmen. Das Parsen der HTML mit RegEx habe ich mir schwierig vorgestellt, deshalb halt cheerio. Zu deinem ursprünglichen Problem mit 403-Forbidden, das war wohl der fehlende User-Agent. Mit dem herkömmlichen Block ist das nicht zu realisieren, deshalb die Funktion

              I Offline
              I Offline
              IOBaer
              schrieb am zuletzt editiert von
              #6

              @fastfoot Danke nochmal! Kannst Du Dir das mit dem .default erklären?

              F 1 Antwort Letzte Antwort
              0
              • I IOBaer

                @fastfoot Danke nochmal! Kannst Du Dir das mit dem .default erklären?

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von fastfoot
                #7

                @iobaer sagte in Web-Abfrage funktioniert nicht (Parser/Blockly):

                @fastfoot Danke nochmal! Kannst Du Dir das mit dem .default erklären?

                nein, liegt evtl. an der Version. Wenn ich das so probiere dann funktioniert es bei mir nicht. Habe das mal so bei axios gesehen, aber kenne mich da nicht wirklich aus

                Edit: Ich hatte noch 1.0.0-rc6 installiert, nach Update auf 1.0.0-rc10 braucht es auch hier das const cheerio = require('cheerio').default. Man kann es auch so einbinden const {default:cheerio} = require('cheerio');

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                I 1 Antwort Letzte Antwort
                1
                • F fastfoot

                  @iobaer sagte in Web-Abfrage funktioniert nicht (Parser/Blockly):

                  @fastfoot Danke nochmal! Kannst Du Dir das mit dem .default erklären?

                  nein, liegt evtl. an der Version. Wenn ich das so probiere dann funktioniert es bei mir nicht. Habe das mal so bei axios gesehen, aber kenne mich da nicht wirklich aus

                  Edit: Ich hatte noch 1.0.0-rc6 installiert, nach Update auf 1.0.0-rc10 braucht es auch hier das const cheerio = require('cheerio').default. Man kann es auch so einbinden const {default:cheerio} = require('cheerio');

                  I Offline
                  I Offline
                  IOBaer
                  schrieb am zuletzt editiert von
                  #8

                  @fastfoot Danke! Mit

                  const {default:cheerio} = require('cheerio');
                  

                  funktioniert es einwandfrei.

                  @Thomas-Braun, ja, vermute ich auch - der Pfad war je User unterschiedlich. Laut @fastfoot hätte es sich wohl auch selbst installieren müssen ...

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


                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  821

                  Online

                  32.5k

                  Benutzer

                  81.7k

                  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