Kleines Powershell Skript für Webseitenalarm

GermanGhettos

Lt. Commander
Registriert
Apr. 2011
Beiträge
1.106
Hi,

hab einige Zeit nichts mehr programmiert und mit Powershell gar nicht.
Ich möchte mit Powershell eine Webseite aufrufen und durchgehend prüfen lassen, ob ein bestimmter Textbaustein oder ein Wort vorhanden ist, oder nicht. Sollte dieser Satz oder das Wort von der Webseite verschwinden, soll das Skript eine Info ausgeben. Im besten Fall ein Geräusch von Windows oder sowas :D. Oder eine Reaktion als Text.

Gibt es da was kleines fertiges?
Also rufe Seite X auf, schaue ob Wort oder Satz Y noch angezeigt werden. Wenn nicht, dann mache dies oder jenes.

VG
 
Browsererweiterung Distill könnte das.
 
  • Gefällt mir
Reaktionen: piepenkorn und GermanGhettos
Danke hab ich zwischenzeitlich auch schon entdeckt. Geht ganz gut damit :-)
Bin mir nur immer unsicher mit solchen Add Ons zwecks Datenklau wenn man sieht worauf die Zugriff haben wollen >.<... muss ich vorübergehend durch ^^
 
Oder halt drei Minuten Suchen im Netz und ein PS-Skript zusammen basteln
Code:
$site = Invoke-WebRequest 'https://www.computerbase.de'
if (($site.Content -match "2022") -eq $true) {
  [console]::beep(500,300)
}

Das ganze dann noch in einen unendlich laufende Schleife und nach dem Web-Aufruf so lange gewartet wie Du das zwischen den Abfragen möchtest oder wie es die Seite erfordert.
Code:
while ($true) {
# ..... hier irgendwas tun, aber den Webserver nicht zu sehr damit nerven
Start-Sleep -Seconds 10
}

-match ist case insensitive, also unabhängig von Groß-/Kleinschreibung

Das klappt aber natürlich nicht, wenn die Seite ihren Ihhalt dynamisch per JS generiert, also z.B. nicht (oder mit Glück nur sehr eingeschränkt) bei YT.

Ach so, ob insb. der Beep nur unter Winodws funktioniert oder auch mit Linux, ist mir persönlich egal und ist mir damit auch nicht bekannt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: GermanGhettos
Danke! Funzt leider nicht wie ich es brauche. Er soll sich melden, wenn ein Text, dass ein Event ausgebucht ist verschwindet. Hab dazu Match mit nomatch und eq mit ne vertauscht. Problem ist, dass er dann trotzdem piept, auch wenn auf der Seite die Nachricht nicht steht. Wahrscheinlich ist diese Nachricht im Quelltext immer drin und wird von der Seiten API einfach ein- oder ausgeblendet. Dann scheint das Skript den Seitenquelltext zu lesen.
 
GermanGhettos schrieb:
auch wenn auf der Seite die Nachricht nicht steht. Wahrscheinlich ist diese Nachricht im Quelltext immer drin und wird von der Seiten API einfach ein- oder ausgeblendet. Dann scheint das Skript den Seitenquelltext zu lesen.
Einfach den Quelltext ansehen und mit dem Texteditor darin suchen. Wenn das nicht so eine chaotische und sich alle zwei Tage ändernde Seite wie YT ist (da habe ich sowas früher mal versucht und schnell wieder aufgegeben), dann wird sich der Begriff auch finden und meist auch eindeutig lokalisiren lassen.

Mit Pech muss man halt die HTML-Tags analysiren. Die liefert einem die PS schon freihaus mit
$site.ParsedHtml
wo man dann u.U. das passende Element mit "getElementById" oder "getElementByName" finden kann.
Ergänzung ()

CitroenDsVier schrieb:
Dann brauchst du eher eine Library, die die Webseite virtuell auch rendert. In Python habe ich da schon viele Beispiele gesehen, die das wohl können.
Würde mich mal interessieren, welche Library das (ohne einen zusätzlichen headless Chrome oder Firefox) vollständig und inkl. dynamischem Javascript auf der Seite kann. Bei der man also wirklich den Quelltext erhält, den der Browser nach dem Nachladen von dynamischen Elementen zur Darstellung nutzt. Selbst mit GreaseMonkey wird sowas extrem schwierig bis (anscheinend) unmöglich.
 
Zuletzt bearbeitet:
gymfan schrieb:
Würde mich mal interessieren, welche Library das (ohne einen zusätzlichen headless Chrome oder Firefox) vollständig und inkl. dynamischem Javascript auf der Seite kann.
Ein Stück BrowserEngine wird schon in der Lib stecken müssen, aber das beißt sich ja nicht mit seinem Satz :)
Aber dein CodeSchnipsel ist viel effizienter wenn man es damit hinbekommt, als was ich ohne PS kenne.
 
Zuletzt bearbeitet:
Zurück
Oben