Hallo,
ich versuch gerade eine Webseite auszulesen, das ist mir auch gelungen, allerdings möchte ich jetzt bestimmte Werte in versch. Variablen speichern.
Die Ausgabe der Seite sieht z.B. so aus:
<tr class="even">
<th>Time:</th>
<td>28h 37m </td>
</tr>
Wie kann ich jetzt den Wert "28h 37m" speichern?
Hab dazu leider nichts gefunden.
Die Webseite hab ich so eingelesen:
(Als Beispiel hab ich Google gewählt)
private void btnAnzeigen_Click(object sender, EventArgs e)
{
string url = "http://google.de";
WebClient c = new WebClient();
byte[] response = c.DownloadData(url);
string test = Encoding.ASCII.GetString(response);
tbAnzeige.AppendText(test);
tbAnzeige.ScrollBars = ScrollBars.Vertical;
}
Danach wird mir der Quelltext in der Textbox angezeigt. Und bestimmte Teile davon will ich in Variablen speichern.
Du musst dich entweder mit Regulären Ausdrücken an die HTML-Tags heften oder du verwendest eine LINQ - HTML Erweiterung um direkt die Tags auszulesen.
Zum Thema Regex findest du hier ein wunderschönes Tutorial... 😉
Wenn ich nicht hier bin, findest du mich auf code-bude.net.
Regex und HTML ist so eine Sache: Artikel bei Stackoverflow (bei einem überschaubaren Beispiel mag das ok sein, aber wer weiss...). Weiters könnte man einen HTML Parser verwenden: Codeproject, HTML Parser
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉
Guten Morgen allerseits
Ich arbeite gerade an einem Projekt das mir Informationen zu einem Produkt liefert.
Jedoch habe ich ein kleines Problem. Ich möchte aus einer Webseite einen Teil des Quellcodes ausschneiden.
Um den Quellcode in einem String zu speichern verwende ich die Webclient funktion.
WebClient wClient = new WebClient();
string strSource = wClient.DownloadString("http://www.xmatik.ch");
string pat = @"<b>Aktuelle Informationen</b>(.*)<!-- End ""content"" -->";
Regex bodyfilter = new Regex(pat,RegexOptions.IgnoreCase);
Match m = bodyfilter.Match(strSource);
textBox1.Text = m.ToString();
label1.Text = strSource;
Ich versuche mit diesem Code alles was zwischen dem Tag <b>Aktuelle Informationen</b> und <!-- End "content" --> liegt in einer Textbox auszugeben.
Jedoch liefert es kein Ergebnis.
Wenn ich aber Manuell in den String strSource:
<b>Aktuelle Informationen</b>asdfalö290340 <!-- End \"content\" -->"
schreibe, wird mir ein Ergebnis zurückgeliefert.
Wieso kriege ich kein Ergebnis zurück wenn ich den Quelltext der Website benutze?
Vielen Dank für eure Hilfe
Lg Carsten
Hallo Carjac,
die, die vor mir gepostet haben, haben einige Links gepostet. Hast du dir mal die Links abgeschaut? Dir sollten dir auf jeden Fall weiterhelfen.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hallo zero_x
ich habe die links oben angeschaut und damit auch diesen Code geschrieben, komme aber bei diesem Problem nicht weiter. Ich verstehe nicht wieso er keine Übereinstimmung mit dem Quellcode findet.
Könnte es vielleicht an einigen Sonderzeichen liegen?
lg Carsten
so 😄 habe das Problem herausgefunden!
Es liegt an den Zeilenschaltungen und den Tabulatoren im Quellcode usw.
Habe es mit diesem RegEx Code gelöst:
string pat = @"<b>Aktuelle Informationen</b>([\n\t\r]|.)*<!-- End ""content"" -->";
lg Carsten