Laden...

html-Quellcode wird nicht vollständig angezeigt

Erstellt von StingsC vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.141 Views
S
StingsC Themenstarter:in
2 Beiträge seit 2020
vor 4 Jahren
html-Quellcode wird nicht vollständig angezeigt

Hallo zusammen,

ich habe bereits im Forum ähnliche Themen gefunden, jedoch keine Lösung für mein spezifisches Problem.

Ich möchte gerne den html-Code von einer Website auslesen und in einen String speichern. Soweit so gut. Das funktioniert auch alles tadellos mit dem WebClient oder auch dem WebBrowser bei den meisten Seiten. Allerdings habe ich bei einer Seite seit Neuestem das Problem, dass nicht alle Informationen im heruntergeladenen html-Code stehen, welche auf der Website zu finden sind.

Wenn ich im Microsoft Edge-Browser den Quellcode von der Website untersuche, wird unter Debugger auch nur der Code angezeigt, welchen ich auch auslesen kann. Gehe ich jedoch auf Elemente komme ich auf die benötigten Informationen. (Anbei ist ein zip-Ordner mit Bilder)

Jetzt wäre meine Frage, wie ich auf den anderen Quellcode komme bzw. ob ich dazu noch Header, Cookies oder sonstiges dazubauen muss.

Zudem würde ich noch fragen, was ich benötige um auch beim WebBrowser-Steuerelement bzw. InternetExplorer-Steuerelement (ShDocVw) den kompletten Quellcode der Seite zu haben, damit ich auch automatische Eingaben benutzen kann.

Hier noch der C#-Code mit dem ich den html-Code von Websites herunterlade:

private string GetHtml(string url)
        {
            using (WebClient webClient = new WebClient())
            {   
                webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362");
                byte[] htmlByte = webClient.DownloadData(url);
                UTF8Encoding enc = new UTF8Encoding();
                string html = enc.GetString(htmlByte);
                return html;
            }
        }

Danke an alle, die sich die Zeit nehmen.

Hinweis von MrSparkle vor 4 Jahren

Zip-Datei entfernt. Bitte beachte [Hinweis] Wie poste ich richtig?, Punkt 6.1: Bitte Bilder _nicht _als ZIP o.ä. hochladen, sondern immer direkt als Bilddatei (GIF, JPG, PNG).

P
441 Beiträge seit 2014
vor 4 Jahren

Das könnte verschiedene Ursachen haben, z.B. könnte der HTML DOM durch JavaScript manipuliert werden, was der WebClient nicht mitbekommt, denn dieser kann lediglich HTTP Requests durchführen.

Vergleiche doch einmal den Output von curl auf die Zielseite mit dem, was der WebClient für dich herunterlädt.
Sollte das gleich sein liegt es nicht an deinem Code, sondern daran dass an der Website nachträglich der DOM geändert wird.

P.S.: WebClient gilt als veraltet. HttpClient ist sinnvoller zu nutzen

S
StingsC Themenstarter:in
2 Beiträge seit 2020
vor 4 Jahren

Hallo,

danke erstmal für die schnelle Antwort.

Mit curl bekomme ich zunächst einen leeren String, benutze ich allerdings curl -L bekomme ich genau denselben String wie von meinem WebClient.

Gibt es eine Möglichkeit das neue DOM auch auszulesen, sollte es nachträglich geändert werden?

16.842 Beiträge seit 2008
vor 4 Jahren

Der WebClient ist seit Jahren veraltet; die Empfehlung ist HttpClient.
Beide unterstützen aber keine Client-Side-Applications bzw. unterstützen sie einfach kein JavaScript - ist auch nicht deren Aufgabe.
Schau Dir dazu die Basics von HTTP und HTML an, denn das hast offenbar noch nicht ganz verinnerlicht.

Dazu müsstest Du zB den Headless Chrome Client ansteuern.
.NET hat nichts aktuelles an Board.

Wenn Deine Webseite sich über eine API automatisieren lässt, dann verwende die API.
Ansonsten riecht es danach, dass die Webseite sich nicht automatisieren lassen will, zB weil Du unerlaubt einen Bot entwickelst 😉