Forum: PC-Programmierung C# HTML Code von "interaktiver" Webseite runterladen


von Dirac I. (dirac-impuls)


Lesenswert?

Hallo,

ich möchte von einer sehr langsamen Website per C# Forms Anwendung den 
HTML Code runterladen.

Nun habe ich relativ wenig Ahnung von Webseiten und deren Programmierung 
aber ich denke mir mal, dass auf der Seite die Daten per Javascript 
/Google API geladen werden.

Und damit scheint der WebClient nicht klarzukommen. Er fängt zwar an den 
Header runterzuladen, bricht dann aber ab.

Nun habe ich versucht, stattdessen den Forms.WebBrowser zu nehmen, und 
damit im Hintergrund irgendwie die Daten runterzuladen. Aber wenn man 
mit ihm die Webseite aufrufen möchte, heißt es auf der Seite, man solle 
den WebBrwoser aktualisieren.

Nach ein bisschen googeln habe ich rausgefunden, dass man sowas durch 
einen "Headless browser" lösen kann.

Dabei habe ich aber zwei Probleme: Einerseits muss man irgendeinen 
externen Kram runterladen und einbinden (wobei .NET 4.0 doch eigentlich 
ausreichend umfangreich für sowas sein sollte?), andererseits habe ich 
das Gefühl mit so einem Headless Browser mit Kanonen auf Spatzen zu 
schießen.

Bei der Seite handel es sich um die Profilseite bei chess.com 
(https://chess24.com/de/profile/maxmustermann). Dort ist es ähnlich wie 
auf der Hauptseite bei facebook: Die ersten Daten werden automatisch 
runtergeladen und erst wenn man runterscrollt werden weitere Daten 
hinzugeladen. Ich brauche nur die obersten Daten (das letzte gespielte 
Spiel), die beim Aufruf automatisch runtergeladen werden.

Brauche ich für mein Vorhaben wirklich so einen externen Headless 
Browser?

von bluppdidupp (Gast)


Lesenswert?

Die IE-Version, die System.Windows.Forms.WebBrowser verwendet, kann per 
Registry eingestellt werden:
https://msdn.microsoft.com/en-us/library/ee330730(VS.85).aspx
http://stackoverflow.com/questions/17922308/use-latest-version-of-ie-in-webbrowser-control
(...eine IE-Version, die die eingestellte Version unterstützt muss dazu 
natürlich installiert sein)

Mit WebClient dürfte man wohl das gleiche abrufen, wie die üblichen 
Browser als Quelltext anzeigen  (STRG+U) - Also den Seitenquelltext vor 
Ausführung von Javascripten.

von Dirac I. (dirac-impuls)


Lesenswert?

Super, vielen Dank! Ich werde es gleich mal ausprobieren!

Viele Grüße

von Frank L. (frank_l)


Lesenswert?

Hallo,
schau mal nach Watin http://watin.org/documentation/. Ist eigentlich ein 
Stücksoftware zum Test von Web Seiten kann aber auch noch ganz andere 
nützliche Dinge. Ich benutze das Teil um bei einer großen 
Krankenversicherung in Hause Informationen in Web Seiten einzutragen 
oder abzufragen.

Gruß
Frank

von Johnny B. (johnnyb)


Lesenswert?

Viele Websites sind heutzutage so gemacht, so wie Du das schon 
festgestellt hast, dass sie mittels JavaScript/AJAX solche Sachen "zur 
Laufzeit" nachladen. Als Übertragungsformat wir dann gerne JSON genutzt.

Mit ein wenig Reverse-Engineering der Website könntest Du dann eventuell 
relativ einfach etwas realisieren können, welches nur die relevanten 
Daten abruft und mittels eines Frameworks wie 
http://www.newtonsoft.com/json direkt in .NET Objekte umwandelt.

von Planlos (Gast)


Lesenswert?

Warum machst du dir das Leben so schwer?

Öffne die Webseite mit einem Debugger (in fast allen Browsern 
integriert) und schau nach, wie/wo/wann die Webseite die interessanten 
Daten Lädt.

Voila:

https://chess24.com/api/web/userProfileAPI/loadPinboard?permalink=maxmustermann&language=de

ist zwar auch nicht schön zu parsen (JSON in HTML in JSON), aber du 
kriegst die gewünschten Daten mit nur einem Request praktisch am 
Silbertablett...

von bluppdidupp (Gast)


Lesenswert?

Wo das bereits genannte https://www.nuget.org/packages/Newtonsoft.Json/ 
für JSON hilft (alternativ kann auch Json.Decode() aus dem 
System.Web.Helpers Namespace verwendet werden), ist für die 
HTML-Verarbeitung dann https://www.nuget.org/packages/HtmlAgilityPack 
gut geeignet.

von Dirac I. (dirac-impuls)


Lesenswert?

Hallo nochmal an alle! Vielen Dank an Euch! Die Lösung von Planlos 
gefällt mir bisher am besten. Ich brauche keine zusätzliche Software... 
und vor allem: Diese Geschwindigkeit! Das Öffnen der Originalseite 
dauert bei mir im Standardbrowser teilweise über 30 Sekunden. Die 
gedebuggte "wo kommen die Daten her?"-Seite etwa 2 bis 3 Sekunden.

Super! Vielen Dank nochmal!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.