NEWS
Parser-Ausdruck für Ebbe&Flut gesucht
-
Habe jetzt auf der Fritzbox die Provide IP erneuert und die Abfrage auf 8h gestellt. Funktioniert!
-
@hg6806 sagte in Parser-Ausdruck für Ebbe&Flut gesucht:
Funktioniert!
noch
ich hatte vorhin noch in den Nutzungsbedingungen gesucht.
Viele Webseiten verbieten eine automatisierte Auslesung.Hier habe ich nichts gefunden
-
Den Agent id evtl auch anpassen
-
du meinst diesen agent ?
axios.get('https://de.tideschart.com/Spain/Canary-Islands/Provincia-de-Las-Palmas/Playa-de-Costa-Calma/Weekly/', { headers: { 'User-Agent':`Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36` } }).then((result) => { log(result.data) return result.data }).catch((error) => { return error; })
-
habe mal ein neues script gemacht
- hat variable zeit - zufallstahl zwischen 10 sek und 300 sekunden bei jedem aufruf - im bezug zum schedule
- anderen user-agent (hoffe, dass ist so richtig - @OliverIO könntest du bitte mal nachsehen)
- umstellung auf axios (im setting der javascript instanz "axios" eintragen (so wie bei "cheerio")
- in zeile 5 deinen datenpunkt eintragen - der das json beinhalten soll
// @liv-in-sky 1.10.21 Forum: https://forum.iobroker.net/topic/47295/parser-ausdruck-f%C3%BCr-ebbe-flut-gesucht/58 // axios user-agent cheerio tabelle const cheerio = require('cheerio'); const request = require('request'); const axios=require('axios'); let myDPunkt="0_userdata.0.CONTROL-OWN.TABELLEN.GezeitenInSpanien" let mySchedule1=" 33 */8 * * * "; // alle 8 stunden bei minute 33 schedule(mySchedule1, function () { let myVarVar=mathRandomInt(10, 300); // log("startet "); setTimeout(function() { // log("jetzt "+myVarVar); holeDaten(); }, myVarVar*1000); }); function mathRandomInt(a, b) { if (a > b) { // Swap a and b to ensure a is smaller. var c = a; a = b; b = c; } return Math.floor(Math.random() * (b - a + 1) + a); } async function holeDaten() { await axios.get('https://de.tideschart.com/Spain/Canary-Islands/Provincia-de-Las-Palmas/Playa-de-Costa-Calma/Weekly/', { headers: { 'User-Agent':`Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36` } }).then((result) => { // log(result.data) const $ = cheerio.load(result.data) const list5 = $('*') .find('td:not(.sun)') .toArray() .map(element => { return $(element).text()}); //log(list5.length +"---"+list5) let dayArr=['Mo','Di','Mi','Do','Fr','Sa','So']; let jsonArr=[]; for(let i=0;i<list5.length;i++) {//log(list5[i]) for (let day=0;day<dayArr.length;day++) { if (list5[i].includes(dayArr[day])) { jsonArr.push({ "day": list5[i], "erste": list5[i+1], "zweite": list5[i+2], "dritte": list5[i+3], "vierte": list5[i+4] }) }} } //log(JSON.stringify(jsonArr)) //hier in dp schreiben //log("jetzt "+myVarVar); setState(myDPunkt,JSON.stringify(jsonArr)) }).catch((error) => { return error; })}
-
@liv-in-sky
ja.
ich weiß nicht was node da standardmäßig reinschreibt.
aber daran kann man es evtl erkennen, das da kein browser sondern eine programm zugreift. -
-
@liv-in-sky
ja da siehsts: axios
kein browser -
-
ja
mit krönchen wäre jetzt noch ein dynamischer user-agent service
hier gibt es immer eine liste aktueller user-agent ids
https://raw.githubusercontent.com/Kikobeats/top-user-agents/master/index.json
https://github.com/Kikobeats/top-user-agents -
-
ja - das wäre auch ein krönchen - jetzt testen wie erstmal das neue script - mal sehen, ob es dann funktioniert