NEWS
Adapter für Webseitenüberwachung
-
@steimi Ich weiß, das war eigentlich nicht gefragt, doch es gibt Browser-Plugins die das machen.
-
@Dr-Bakterius sicher, aber einfach ein Update 1x am Tag/Woche und dann per Blockly/Pushover benachrichtigt reicht mir.
-
Könnte man mit dem Parser den Text einer Website auf Verschwinden hin überwachen?
Ich hätte gerne eine Nachricht wenn wenn ein bestimmter Text nicht mehr auf der Seite vorhanden ist.
-
@aiouh mit einem blockly request kannst du eine seite einlesen und nach einem textteil suchen - ist der text immer in eine feste html struktur eingebettet, kannst du das definieren und den inhalt (text) lesen, vergleichen.
bei einer änderung, könntest du dann eine message senden und dann den neuen text als neue variable nutzen, um eine weitere änderung festzustellen
-
für foscom ein kleines script
du mussst im javascript adapter setting den wert "cheerio" als zusatz npm eintragen
im log siehst du, was da so rauskommt - ist nur rudimentär - man muss sich halt überlegen, was man mit den daten machen will
const cheerio = require('cheerio'); const request = require('request'); let mySchedule1=" 12 */4 * * * "; // alle 4 stunden bei minute 12 //schedule(mySchedule1, function () { request('https://foscam.com/downloads/firmware_details.html?id=144',(error, response, html)=>{ if (response.statusCode==200){ //log(html) const $ = cheerio.load(html) const list5 = $('*') .find('td') .toArray() .map(element => { return $(element).text()}); log(list5.length +"---"+list5) log(list5[6]) }});
ein beispiel für weatherman
const cheerio = require('cheerio'); const request = require('request'); let mySchedule1=" 12 */4 * * * "; // alle 4 stunden bei minute 12 //schedule(mySchedule1, function () { request('https://www.stall.biz/project/weatherman-die-perfekte-wetterstation-fuer-die-hausautomation',(error, response, html)=>{ if (response.statusCode==200){ //log(html) const $ = cheerio.load(html) const list5 = $('*') .find('p') .toArray() .map(element => { return $(element).text()}); log(list5.length +"---"+list5) for(let i=0;i<list5.length;i++){ if (list5[i].includes("Update") && list5[i].includes("WEATHERMAN")) log(list5[i]) } }}); //});
wenn in der seite nur immer die eine zeile geändert wird mit einer neuen version funktioniert das
-
@liv-in-sky Danke für die Anregung, da werde ich mal grübeln. Ist für mich dann was für einen längeren Winterabend, aber die kommen ja bald
-
@aiouh kannst du mir eine seite sagen und welchen text du überwachen willst ?
-
@liv-in-sky aber gerne
https://fraenkel-ag.de/immobilien-angebote/wohnen/Und wenn der folgende Text sich ändert weiss ich dass es Angebote gibt
"Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden."Ist etwas irreführend, denn die Suchkriterien sind ja im System fix hinterlegt, man ruft also nur die Seite auf.
-
@aiouh sagte in Adapter für Webseitenüberwachung:
Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden
die arbeiten über iframes - daher muss ich übe immobilienscout seite gehen) aber versuche mal dieses script (du brauchst kein "cheerio" wie oben ! im log zeigt es , ob es angebote gibt - wäre interessant, ob die log ausgabe stimmt, wenn dann angebote da sind
const request = require('request'); let mySchedule1=" 12 */4 * * * "; // alle 4 stunden bei minute 12 //schedule(mySchedule1, function () { //request('https://fraenkel-ag.de/immobilien-angebote/wohnen/',(error, response, html)=>{ request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{ if (response.statusCode==200){ //log(html) if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} else {log("neue Angebote sind da")} }});
-
@liv-in-sky Wow, Vielen Dank. Ich lass das mal tuckern und bin gespannt
-
heute gab es ein neues angebot
habe das script so verändert, das eine nachricht auf alexa kommt, wenn neues angebot da ist und auch, wenn ein angebot verschwindet - ich hoffe, dass script macht alles richtig - werden wir dann sehen, wenn sich die angebote ändern bzw gelöscht bzw dazukommen
- du musst das mit dem cheerio - wie oben erklärt" machen
- du brauchst 2 datenpunkte, die du im script oben einträgst
- man kann auch eine benachrichtigung für telegram, whatsapp,email oder sowas dazufügn
- es ist jetzt ein schedule drin - dann läuft es automatisch
-
@liv-in-sky
Test läuft
-
@liv-in-sky Hi, scheinz zu klappen. Der DBP sieht bei mir jetzt so aus.
/expose/80909765/129468267
Wäre schick wenn das gleich eine URL wäre
Im "Alexa DP" steht
ein Angebote ist weg
-
habe es verfolgt - heute kam ein neues angebot und wurde mir gemeldet - etwas später kam dann, ein angebot ist weg und auch dies war richtig - das neue angebot wurde wieder gelöscht - hat schon mal gut funktioniert
bei der url war ich mir nicht sicher, ob du die brauchst - wie möchtest du das eigentlich ansehen - über die vis oder über eine nachricht?
-
@liv-in-sky Hey es ist schon Weihnachten. Nee mal im Ernst Vielen Dank dass Du Dich da so reinhängst.
Ich denke das Einfachste wäre es "einfach" eine URL als datapoint zu haben, den kann man ja auf Änderung prüfen und sich den Inhalt per mail/pushover schicken lassen. Oder in der vis verwenden., zumindest das krieg ich selbst mit Blockly hin -
habe mir das mal angeschaut - eigentlich wollte ich eine tabelle machen mit einem bild und das in der vis sichtbarmachen - leider geht das nicht so einfach, weil das alles ineinander verschachtelt ist - wäre ein zu großer aufwand
wegen der url teste ich gerade
-
hier- mit url - test - wird in den myAlarmDP geschrieben
vergiss nicht die dp wieder einzutragen - sind ja meine drin
zum testen, ob die url richtig ist, einfach den inhalt vom state mySavedDataDP unter dem objekte-tab im admin löschen - das script wird dann nach dem def. schedule ausgeführt und die url sollte dann drinstehen
EDIT - war fehler im script - muss ich erst ausbessern
-
-
@liv-in-sky Ich hab noch die e-mail Benachrichtigung gebastelt, scheint gut zu funktionieren.
Nochmals Vielen Dank