Hallo zusammen,
ich würde gerne ein Programm schreiben, welches im Quelltext der Website nach einem String sucht. Folgende Methode habe ich dazu geschrieben, um den Quelltext zu bekommen:
public static string downloadWebPage(string URL)
{
WebClient client = new WebClient();
string s = client.DownloadString(URL);
//Schreibt den Quelltext noch in eine Textdatei auf dem Desktop
File.WriteAllText("C:\\Users\\Luca\\Desktop\\text.txt", s);
return s;
}
Wenn ich das nun beispielsweise auf die Seite der Sendungsverfolgung von DHL anwende sehe ich, dass das so nicht funktioniert. Wenn ich den Quelltext im Browser öffne, ist die Webseite auch nicht vollständig zu sehen. Ich würde gerne im Quelltext nach den Worten "zugestellt" suchen, um zu wissen, ob die Sendung zugestellt ist. (mithilfe von Contains())
Ich kenne mich mit HTML nicht sonderlich gut aus und weiß nicht, warum die der Quelltext nicht dem angezeigten entspricht. Evtl. könnt Ihr mir da weiter helfen.
Vielen Dank und beste Grüße
Wenn ich den Quelltext im Browser öffne, ist die Webseite auch nicht vollständig zu sehen.
Der Quelltext, den du im Browser siehst, passt also zum heruntergeladenen? Dann funktioniert das zumindest ohne Probleme.
Dass der Quellcode nicht alles zeigt, liegt an evtl. Skripten oder eingebundenen Dateien oder so (bin da kein Profi).
Genau, das Problem liegt am Quelltext an sich. Das downloaden mit C# funktioniert ganz normal. Ich denke auch, dass da vielleicht durch Javascript etwas noch hinzugefügt wird.
Ich weiß, das hier ist kein HTML Forum, aber vielleicht hat ja noch jemand eine Lösung.
Dann ist der Titel aber komplett falsch, das Downloaden funzt ja problemlos.
Und wenn der Quelltext nicht mehr hergibt, kann man da eher weniger machen, hat ja seine Gründe warum da nicht alles zu sehen ist (Stichwort: Sicherheit). Schau doch sonst mal, ob die Post bzw. DHL eine Api für deinen Anwendungsfall hat. Oder schaue nach einer App. =)
So wie ich dich verstehe, möchtest du nicht den Quellcode der Seite haben, sondern das DOM der Seite zu einem festgelegten Zeitpunkt (z.B. nachdem die Seite komplett gerendert wurde)
Dazu brauchst du irgendeine Renderengine (Webkit, Trident,...)
Das könntest du z.B. über das WebBrowser-Control realisieren.
Hi,
kurz und knackig: Hör bitte auf das so zu machen.
Warum?
a) HTML (das jederzeit geändert werden kann) auszulesen ist generell nicht der optimale Ansatz und eine Notfallösung
b) DHL bietet für Privat und Geschäftskunden extra eine API zur Sendungsverfolgung an
Erstell dir am besten ein Konto auf https://entwickler.dhl.de/ - lies dich ein - und bau was gescheites 😉
LG
Das könntest du z.B. über das WebBrowser-Control realisieren.
Das WebBrowser-Control vom Framework ist obsolet.
Es kann modernes JavaScript nicht ausführen.
Der einzig legitime Weg ist hier der von Taipi genannte über die API.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Vielen Dank für die ganzen Antworten.
Dass dies ein absolut unschöner Weg ist, ist mir absolut bewusst. Ich bin momentan nur dabei C# zu lernen und dachte, das ist doch vielleicht eine ganz interessante Aufgabe.
Dann versuche ich mal mein Glück über die API. Vielen Dank!