Hallo allerseits
Bis vor kurzem konnte ich täglich (um 08:00 Uhr) mit dem node "HTTP-Anforderung" die WEG Seite "https://www.hydrodaten.admin.ch/de/2004.html" abfragen und den Seepegel auslesen.
Die WEB-Seite funktioniert im Browser noch immer,
aber
der Aufruf per node red ergibt NEU im debug node folgenden Fehler:
<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: <14197565438230338904><br><br><a href='javascript:history.back();'>[Go Back]</body></html>
Hilfeee, warum kann ich diese WEB Seite nicht mehr auslesen?
Gibt es einen alternativen node?
node red http get request funktioniert "plötzlich" nicht mehr
-
domipo -
July 9, 2023 at 4:30 PM -
Thread is Resolved
-
-
node red http get request funktioniert "plötzlich" nicht mehr? Schau mal ob du hier fündig wirst!
- Go to Best Answer
-
Hallo,
im Browser wird man ja auf https://www.hydrodaten.admin.ch/de/seen-und-fluesse/stationen-und-daten/2004 weitergeleitet.
Was ist wenn du damit versuchst?
Grüße
Dennis
-
Die haben etwas eingebaut damit die Seite nicht gescraped werden kann.
Mit curl passiert genau das Gleiche. Am User-Agent und aehnlichen Headern liegt es anscheinend nicht.
Wenn du es schaffst dann doumentiere es hier

-
damit die Seite nicht gescraped werden kann.
Diese offensichtliche englische Wort ist mir bislang noch nicht untergekommen. Was bedeutet es

-
framp scrape heisst kratzen im Sinn von zusammenkratzen oder abkratzen.
Es bedeutet dass man Webseiten ausliest um sich Informationen zu beschaffen. Das geht halt immer wieder schief weil sich Webseiten haeufig aendern.
Fraglich ist auch ob der Webseitenbetreiber damit einverstanden ist. Sonst versucht er es mit technischen Massnahmen zu verhindern.
https://kinsta.com/de/wissensdatenbank/was-ist-web-scraping/
Es gibt ganze Buecher darueber: https://www.amazon.de/Web-Scraping-Python-Collecting-Modern/dp/1491985577/ref=sr_1_1?crid=CUKS8YCNG7XE&keywords=web-scraping+with+python&qid=1688933177&sprefix=%2Caps%2C282&sr=8-1&tag=psblog-21 [Anzeige]
-
Man unter gewissen Bedingungen (welche wird da nicht wirklich verraten) auch ganz offiziell (kostenlos) Zugang zu den Rohdaten bekommen: https://www.bafu.admin.ch/bafu/de/home/t…n-beziehen.html
Kann man ja mal versuchen. Im schlimmsten Fall wird es halt abgelehnt.
-
Es bedeutet dass man Webseiten ausliest um sich Informationen zu beschaffen.
Ok. Das war mir entgangen dass auf Webseiten zugegriffen wird mit entsprechendem HTML Parsing. Ich hatte ein API im Kopf was sich ja nicht so eben mal aendern sollte. Klar haben die APIs ueblicherweise ein Ratelimiting aber um das geht es hier ja nicht.
-
Danke für die vielen Hinweise zum Grund.
Schade, dass ein steuerfinanziertes Amt die WEB Seite so blockiert.
Wenn es mit Briwser geht, aber mit dem HTTP Node nicht, muss sich der Node ja anders verhalten....
.... nun, da müsste es doch ein anderen Node geben ?
Oder nach einem API Zugang fragen, oder selbst etwas programmieren?
Ich finde es jedenfalls sehr schade .... und bleibe am Ball.
Mithilfe ist sehr erwünscht.
-
Es scheint am Accept-Encoding zu liegen. Mit diesem Parameter-File fuer curl habe ich Daten bekommen:
Codeurl = https://www.hydrodaten.admin.ch/de/seen-und-fluesse/stationen-und-daten/2004 -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" -H "Accept-Encoding: gzip deflate br" -H "User-Agent: Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" -H "sec-ch-ua: \" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\"" -H "sec-ch-ua-mobile: ?0" -H "sec-ch-ua-platform: \"Linux\"" -H "Sec-Dest-Site: none" -H "Sec-Dest-Dest: document" -H "Upgrade-Insecure-Requests: 1" -
domipo Manchmal verkaufen auch staatlich finanzierte Institutionen Daten, damit sie nicht nur aus Steuermitteln finanziert werden müssen, und dann können sie die nicht unkontrolliert kostenlos rausgeben, weil sich dann die Käufer beschweren. Ist in DE beispielsweise beim Deutschen Wetterdienst so. Die haben auch eine eigene App, die mal kostenlos war, mussten dann aber Geld dafür nehmen, weil ein Käufer der Wetterdaten geklagt hat, weil deren App in Konkurrenz zu seiner kommerziellen App steht.
Vielleicht ist es auch eine Haftungssache. Die Seite wo man Zugang beantragen kann spricht von ungeprüften Rohdaten. Vielleicht wollen sie da auch einfach nur sicher sein, dass man in den AGBs bestätigt verstanden zu haben, dass die Daten nicht geprüft sind. Punkt 7 in dem PDF mit den Nutzungsbedingungen.
Oder irgendwelche Zeitgenossen haben nicht nur einmal am Tag abgefragt, sondern sehr viel öfter. Die Nutzungsbedingungen für den Zugang geben alle 10 Minuten als maximale Frequenz an.
-
..... sieht gut aus, aber wie bringe ich dies nun in
Node red ?
Ich benutze dies weil ich nur beschränkt (bin) entwickeln kann.....
Vielen Dank !
-
Ich hab keine Ahnung von Node Red aber den Header zu setzen scheint einfach zu sein: https://cookbook.nodered.org/http/set-request-header
Wie du mit der binaeren Antwort umgehst ist eine andere Frage

-
Danke für die Tipps, wie muss ich den nun den function node vor dem HTTP node parametrisieren, damit die WEB Seite eine Antwort gibt und nicht blockiert ? Ich stehe da auf dem Schlauch.
-
Alle Zeilen mit -H muessen in die JavaScript-Funktion. Nach dem Beispiel auf der Webseite.
-
-
- Best Answer
Beispiel fuer ein Headerelement:
Die weiteren Elemente musst Du Dir aus dem o.g. Beitrag #9 raussuchen und entsprechend angepasst einfuegen.
-
Wobei das ein bisschen komisch ist da erst ein leeres Objekt zu erstellen und dann die Werte über einzelne Zuweisungen hinzuzufügen. Warum die das in dem Beispiel so machen… ?♂️
-
Ich stimme Dir zu. Aber ich muss gestehen dass ich die ausfuehrliche Form leichter les- und aenderbar finde.
Auch ist die Frage ob man durch ein.new des Headers nicht schon gesetzte Headerwerte ueberschreibt.
-
framp Am Überschreiben von eventuell gesetzten Header-Werten ändert sich da ja nichts. Dazu müsste man im Beispiel aus der Doku schon noch die Zuweisung des leeren Objekts weg lassen. Beziehungsweise das bedingt machen, also erst testen ob es `msg.headers` schon gibt.
-
Naruerlich wissen wir dass das sinnvoll ist

Der TE fragte ja nur wie die Syntax aussieht die Headerdaten zu setzen. Sind wir mal Optimisten dass das nicht notwendig ist

-
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!