Laden...

C# Webseite auslesen und in Variablen speichern

Erstellt von sippzhn vor 13 Jahren Letzter Beitrag vor 13 Jahren 27.234 Views
S
sippzhn Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren
C# Webseite auslesen und in Variablen speichern

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.

I
302 Beiträge seit 2008
vor 13 Jahren

Über Xml oder was meinst du?
XDocument

Wie hast du die Webseite denn eingelesen?

S
sippzhn Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren

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.

I
302 Beiträge seit 2008
vor 13 Jahren

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.

B
293 Beiträge seit 2008
vor 13 Jahren

Zum Thema Regex findest du hier ein wunderschönes Tutorial... 😉

Wenn ich nicht hier bin, findest du mich auf code-bude.net.

M
368 Beiträge seit 2006
vor 13 Jahren

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 😉

C
3 Beiträge seit 2010
vor 13 Jahren
RegEX Teile aus Html Code schneiden

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

1.044 Beiträge seit 2008
vor 13 Jahren

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

C
3 Beiträge seit 2010
vor 13 Jahren

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

C
3 Beiträge seit 2010
vor 13 Jahren

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