Webpage laden - Werte auslesen
-
Hallo Leute,
ich hätte da wiedermal ein Problem aber irgendwie fehlt mir die passende Idee zur umsetzung.
Also ich möchte ne Wegpage einlesen (zb Wetter oder Aktienkurs) und diese Werte dann speichern bzw. grafisch als Diagramm darstellen.
1. Wie lade ich am besten die webpage ?
Mit webrequest und webresponse? und den gesamten inhalt in einem string ablegen?
Oder macht da etwas anderes mehr sinn?2. Wie kann ich am besten die Werte aus der Page auslesen bzw. parsen?
hab da mal was mit regex gelesen, aber keine idee dazu.Oder wie würdet ihr das am einfachsten machen?
Vielen dank
lg Lara
-
Wieweit kannst Du Dich eigentlich verlassen, dass die Dokumentstruktur konstant bleibt? Gibt es XML oder andere fest definierte Dokumenttypen von dieser Seite?
-
Lara* schrieb:
1. Wie lade ich am besten die webpage ?
Mit webrequest und webresponse? und den gesamten inhalt in einem string ablegen?
Oder macht da etwas anderes mehr sinn?Kannst das hier verwenden, die Methode erfordert GET, sollte aber auch mit POST funktionieren:
private static string getContentFromSite(string url) { HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(url); hwr.Method = "GET"; hwr.Credentials = CredentialCache.DefaultCredentials; using(Stream s = hwr.GetResponse().GetResponseStream()) { using (StreamReader r = new StreamReader(s, Encoding.GetEncoding(1252))) { return r.ReadToEnd(); } } }
-
witte schrieb:
Wieweit kannst Du Dich eigentlich verlassen, dass die Dokumentstruktur konstant bleibt? Gibt es XML oder andere fest definierte Dokumenttypen von dieser Seite?
also ich hätte zb an diese Seite mit Aktienkursen gedacht:
http://www.ls-d.de/L-S-Aktien.100.0.htmlbasiert soweit ich das im Quelltext gesehn habe auf xml tags
wie macht man das am besten wenn ich jetzt nur die Werte von einer bestimmten Aktie auslesen will?
-
Ganz einfach geht der Download mit WebClient.
WebClient wc = new WebClient(); string DownLoadGet(string url,string parameter) { return wc.DownloadString(url +"?" + parameter); } string DownLoadPost(string url,string parameter) { return wc.UploadString(url,parameter); }
Tabellen zerlegt man gut mit Split zerlegen:
List<Aktie> Get_Aktien(string html) { List<Aktien> aktien_liste = new <List<Aktie>() string table_body = html.Substring(html.IndexOf("<tbody>")+7); table_body = table_body.Substring(0,table_body.IndexOf("</tbody>"); string[] aktien_strings = table_body.Split(new string[]{"</tr>"},StringSplitOptions.RemoveEmptyEntrys); foreach(string aktien_string in aktien_strings) { string[] daten = aktien_string.Split(new string[]{"</td>"},StringSplitRemoveEmptyEntrys); Aktie neue_aktie = new Aktie(); Aktie.WKN = daten[0].SubString(daten[0].IndexOf(">")); Aktie.Name = daten[1].SubString(daten[1].IndexOf(">")); ..... aktien_liste.Add(neue_aktie); } return aktien_liste; }
-
in welchem Header finde ich WebClient?
Danke schon im Vorraus
-
-
Der Seiten Quelltext (HTML) ist ja sogar mal 1A und Sauber
-
@Andorxor: danke, das funktioniert ja ausgezeichnet
ich hätte da noch eine andere frage: und zwar werden zb. bei der oben genannten Seite die Werte der Aktienkurse upgedatet (siehe gelbe darstellung). kann man irgendwie auf ne Webpage horchen, ob sich etwas ändert?
Oder hilft da nur das zyklische Pollen?Danke, Lg
-
Bietet WebService irgendein Subscriber Dienst wie rss feed an?
ja: Prüfen auf Verwendbarkeit
nein: Wird die Datenaktualisierung der Seite in den Headerdaten übermittelt? z.B. sowas wie Gültig bis?
ja: Prüfen auf Verwendbarkeit
nein: zyklisches Pollen (evtl reicht Abfrage des HTTP-Request HEAD aus.