scriptomania
Goto Top

Finaler Content aus scriptgenerierter Webseite auslesen

Hallo Community,

ich soll für meinen Chef eine automatisierte Auswertung erstellen. Als Datenquelle ist mir nur ein intranetseitig verfügbares Webdokument gegeben, welches auf KIBANA basiert.

Idealerweise sollte dies mittels Linux-Shell als Script realisiert werden, aber es muss nicht zwangsweise per Shell realisiert werden.

Leider aber erhalte ich bsi jetzt nicht, wie gewünscht, den HTML Code zuurück, der die Ergebnisseite produziert. Viel mehr sehe ich wie im HTML Code Scripts aufgerufen werden, die wohl den finalen Content erzeugen.

Allerdings würde ich eben gerne diesen finalen Content in eine Variable ziehen und nicht die content-generierenden Scriptaufrufe.

Bis jetzt habe ich folgendes vergeblich versucht:

links -dump -html-target-in-new-window 1 "https://x.yz" > result.txt   


<?php
$homepage = file_get_contents(https://x.yz") 
echo homepage
?>

Den eigentlichen HTML Code, der den sichtbaren Inhalt erzeugt, konnte ich bis jetzt nur mit dem FireFox PlugIn "Webdeveloper" sehen. Allerdings ist es keine Lösung diesen manuell abzukopieren. Man müsste diese Ansicht des Firefox per Befehl auslesen können, was wohl kaum möglich ist....

Da dies auf einer Windowsmaschine entwickelt wird (Linux Bash ist nur via CYGwin vorhanden), wäre zB auch Excel oder Powerscript eine mögliche Basis zur Umsetzung.

Vielleicht hat ja jemand einen Tip für mich.

Content-Key: 359904

Url: https://administrator.de/contentid/359904

Printed on: April 16, 2024 at 22:04 o'clock

Member: colinardo
colinardo Jan 04, 2018 updated at 13:11:40 (UTC)
Goto Top
Servus,
das ist möglich, doch dazu musst du eine Instanz her nehmen die den Inhalt also die Skripte ausführt und dann den generierten Inhalt der Seite auslesen.

Möglich ist das wie immer mit dem IE-COM-Object, simples Beispiel (Powershell):
# Neuen IE-Prozess erzeugen
$i = New-Object -Com InternetExplorer.Application
# Fenster sichtbar machen (kein Muss kann später unsichtbar laufen)
$i.Visible = $true
# Webseite aufrufen
$i.Navigate("http://site.de")  
while($i.Busy){sleep .3}
# Zusätzlichen sleep einbauen damit dynmaischer Content nachgeladen werden kann
sleep 1
# irgendein DOM-Object auslesen
$i.document.getElementById('global-login-field').value  
# Browser beenden
$i.Quit()
# COM ressourcen freigeben
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($i)
Von Mozilla gibt es auch noch eine Bibliothek die eine skriptbare Browserinstanz zur Verfügung stellt bei welcher nachträglich gerenderter Content abgerufen werden kann. Nennt sich GeckoFX.

Grüße Uwe
Member: colinardo
colinardo Jan 23, 2018 at 15:15:37 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.