NEWS
[gelöst] Link von Webseite heraus parsen. Vertretungsplan Schule
-
Hallo zusammen,
die Schule meine Kindes bietet die Information an, ob was ausfällt und welche Unterrichtsstunde wie vertreten wird.
Das schreit quasi danach im Vis dargestellt zu werden. :mrgreen:
Leider ist das ein PDF Dokument und der Link dahin verändert sich bei jeder Aktualisierung.
Zum Glück steht dieser aber auf der selben Stelle auf deren Webseite.
Ich habe zwei Fragen weil mein Erfahrungen mit NodeJs überschaubar sind.
Damit ich das PDF Laden kann brauch ich die URL in einem JS Objekt damit Vis da drauf zugreifen kann.
Daher die erste Frage:
Wie bzw. mit was sollte ich die Webseite nach dem Link parsen? Habe was gelesen von htmlparser2 aber eventuell gibt es ja auch noch andere vorhandene Boardmittel.
Soweit bin ich bereits:
var request = require('request'); var url = 'http://wordpress.nibis.de/rsdelme/vertretungsplan-holbeinstrasse/'; function getLink() { request(url, function(err, stat, body) { if(err) log('Error: ' + err, error); log(body); }); } getLink();Die zweite Frage betrifft eher VIS, aber weil es dazu gehört :)
Die PDF Datei würde ich super gerne in einem Dialog darstellen.
Quasi Button welcher ein Dialog öffnet wo dann sofort das PDF dargestellt wird.
Dazu jemand eine Idee?
-
Ich habe jetzt noch mal ein wenig experimentiert.
Leider komme ich nicht weiter.
Gefunden habe ich cheerio basiert auf htmlparser2.
Allerdings kann ich das in iobroker Javascript nicht nutzen.
var request = require('request'); var cheerio = require('cheerio'); var url = 'http://wordpress.nibis.de/rsdelme/vertretungsplan-holbeinstrasse/'; function Test() { request(url, function(err, stat, body) { if(err) log('Error: ' + err, error); $ = cheerio.load(body); log($('#post-3317').html()); }); } // Start bei Skriptstart Test();Führt aber zu einem :
javascript.0 script.js.Vertretung: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/node_modules/cheerio
Ich habe das Installiert in /opt/iobroker mit "npm install cheerio" sowie "npm install htmlparser2"
Ich habe da wohl noch das eine oder andere Verständnis Problem. Kann mir jemand bitte auf die Sprünge helfen?
-
> Npm module kann man auch installieren in dem man in der JavaScript Adapter Konfiguration den Namen des Moduls einträgt.
Ich glaube das muss man wohl genau so machen. Klappt super. Danke!var request = require('request'); var cheerio = require('cheerio'); var url = 'http://wordpress.nibis.de/rsdelme/vertretungsplan-holbeinstrasse/'; function Test() { request(url, function(err, stat, body) { if(err) log('Error: ' + err, error); $ = cheerio.load(body); log($('#post-3317 a').attr('href')); }); } // Start bei Skriptstart Test();Jetzt muss ich nur noch raus finden, wie ich die Datei in VIS darstellen könnte.
-
Wenn du den Link von der Seite geholt hast kannst du im VIS mit dem iFramewidget das PDF darstellen.
Als Quelle für das iFramewidget gibst du ein:
http://docs.google.com/gview?url=http://wordpress.nibis.de/rsdelme/files/2015/08/Vertretungsplan-12.09.2017-S-aktuell1.pdf&embedded=trueAchte dabei auf den Teil in der Mitte.. Da musst du die URL zu dem Vertretungsplan einfügen (ich habe ihn jetzt schon als Beispiel eingefügt)..
Gruß
-
http://docs.google.com/gview?url=http://wordpress.nibis.de/rsdelme/files/2015/08/Vertretungsplan-12.09.2017-S-aktuell1.pdf&embedded=trueGenau so was hatte ich gesucht. Super Danke.
So muss man das PDF nicht runterladen auf dem Tab.
Sehr sehr Nice. :)
-
Konnte es lösen, das Zauberwort heißt hier "Bindings"
https://github.com/ioBroker/ioBroker.vis
Als Quelle bei iFrame Widget habe ich jetzt folgendes hinterlegt.
{javascript.0.Status.agency.link}Und das funktioniert wie gewollt :)
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden