C#: Beschreibung einer Webseite auslesen

Ich habe ein Programm. Es soll für einen Script den ich entwickelt habe von verschiedenen Web-Seiten folgene Informationen herauslesen:
-Title
-BEschreibung

Den Title kann ich mit webbrowser1.DocumentTitle herausfinden doch wie komme ich an die beschreibung? Ich habe Google gefragt odch nur mist bekommen.

Dir wird nichts anderes übrigbleiben, als das HTML-Dokument einen Parser zu schreiben, da das webbrowser-Objekt meines Wissens diesen Wert nicht liefert. Zumindest ist das in VB 2008 Express so.

Gruß thuemmy

ja?

Wenn mir noch jemand sagen könnte wie ich das mache (oder wo es eine GUTE anleitung gibt) fände ich das schonmal gutt

PS: Benutze 2008 Version

  1. Google ist dein Freund kannste suchen nach „C# - Download von Internetseiten“
  2. Regular Expressions

er muss die seite doch garnicht komplett auslesen, das währe schwachsinnig.

mit nem einfachen socket einfach so lange die seite auslesen bis in dem text den du empfängst steht und dann einfach mit nem regulären ausdruck nach „<title>(.*?)</title>“ suchen

wenn du nu noch mehr fragen hast z.b. was ein socket ist dann such lieber in der jobboerse :wink:

Slibbo,

dein Weg wäre wahrscheinlich die optimalste Lösung in Punkto Perfomence. Aber extra Sockets benutzen für sowas wenn du schon vorgefertigete Klassen etc. hast, unötig komplexisieren ist auch schwachsinn. Man nimmt immer den einfachsten Weg zur Lösung.

du redest davon das es unnötig ist ein socket zu verwenden da du ja eine klasse benutzen kannst die allerdings auch ein socket benutzt… naja

also lieber 3 zeilen zum initialisieren, angeben der domain und dann auslesen des head tags
anstadt 5 zeilen socket öffnen 2 zeilen für das auslesen bis zum tag und eine weitere zeile um das in einer variable zu speichern…

also denk bitte nicht so wirtschaftlich sonst kann später keiner mehr coden… :smiley:

Also Slibbo, lieber wirtschaftlich als immer alles unnötig komplexisieren… :smiley:

Außerdem ist der Code den ich mir vorstelle nicht so lang wie du denkst… ich brauche nur 2 Zeilen um an den Code ranzukommen…

Hier mal nen Beispiel:

// Initalisieren
WebClient wClient = new WebClient();
string source = wClient.DownloadString("http://www.google.de");

// Filtern
string pattern = "<head name=\"(.*?)\" content=\"(.*?)\">";
MatchCollection matches = Regex.Matches(source, pattern, RegexOptions.SingleLine);
List<string> contents = new List<string>();
foreach(Match match in matches)
{
           contens.Add(match.value);
}

// Weitere Verarbeitung.-

Garantie das das funktioniert kann ich nich geben, war jetzt auf die schnelle…

joa meins ist ein bisschen länger dafür aber auch besser :stuck_out_tongue:

string host = "www.deine-seite.de"; IPHostEntry hE = Dns.GetHostEntry(host); IPAddress[] ip = hE.AddressList; IPEndPoint ipEp = new IPEndPoint(ip[0], 80); Socket s = new Socket(ipEp.AddressFamily, SocketType.Stream, ProtocolType.Tcp); s.Connect(ipEp); if (s.Connected) { Byte[] buf = new Byte[32]; s.Send(Encoding.ASCII.GetBytes("GET / HTTP/1.1\r\nHost: " + host + "\r\nConnection: Close\r\n\r\n")); string page = ""; int bytes = 0; do { bytes = s.Receive(buf, buf.Length, SocketFlags.None); page = page + Encoding.ASCII.GetString(buf, 0, bytes); } while (page.IndexOf("</title>") == -1); page = page.Substring(page.IndexOf("<title>") + 7, page.IndexOf("</title>") - page.IndexOf("<title>") - 7); Console.WriteLine(page); } else { Console.WriteLine("Konnte keine Verbindung aufbauen."); } s.Close(); Console.ReadKey();

sogar getestet und es läuft… :stuck_out_tongue:

da sag ich doch mal bitteschön liebe modem nutzer ^^