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-ID: 359904

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

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

colinardo
colinardo 04.01.2018 aktualisiert um 14:11:40 Uhr
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
colinardo
colinardo 23.01.2018 um 16:15:37 Uhr
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.