Načítanie HTML stránky v C#
public bool GetPage(String url) { page = string.Empty; try { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); WebResponse myResponse = myRequest.GetResponse(); StreamReader sr = new StreamReader(myResponse.GetResponseStream()); page = sr.ReadToEnd(); sr.Close(); myResponse.Close(); sB = new StringBuilder(page); return true; } catch (Exception e) { this.error = e.Message; return false; } }
Načítanie HTML stránky, ak stránka požaduje meno a heslo v C#
public bool GetPage(String url) { page = string.Empty; try { WebRequest request = WebRequest.Create(url); request.PreAuthenticate = true; NetworkCredential networkCredential = new NetworkCredential("Name", "password"); request.Credentials = networkCredential; HttpWebRequest myRequest = (HttpWebResponse)request.GetResponse(); WebResponse myResponse = myRequest.GetResponse(); StreamReader sr = new StreamReader(myResponse.GetResponseStream()); page = sr.ReadToEnd(); sr.Close(); myResponse.Close(); sB = new StringBuilder(page); return true; } catch (Exception e) { this.error = e.Message; return false; } }
A teraz konečne prejdeme k spomínanému parsovaniu HTML stránky. Na začiatok si vytvoríme veľmi jednoduchú stránku na ktorej si to ukážeme.
HTML
<html> <head> <title>www.projectik.eu</title> </head> <body> Nejaky text<br> Rok vyroby : <b>1999</b><br> Autor : <b>slonik</b><br> </body> </html>
Z danej stránky chceme vybrať: Title,Rok výroby a Autora.
Spravíme si metódu, ktorej vstupným parametrom bude načítaná stránka.
Kód v C#
private void parser(StringBuilder sB) { try { string pat; string title, rokVyroby, autor; Regex reg; Match match; //Title pat = @"<title>(.*?)</title>"; reg = new Regex(pat, RegexOptions.Singleline); match = reg.Match(sB.ToString()); title = match.Groups[1].Value; //Rok vyroby pat = @"Rok vyroby : <b>(.*?)</b>"; reg = new Regex(pat, RegexOptions.Singleline); match = reg.Match(sB.ToString()); rokVyroby = match.Groups[1].Value; //Autor pat = @"Autor : <b>(.*?)</b>"; reg = new Regex(pat, RegexOptions.Singleline); match = reg.Match(sB.ToString()); autor = match.Groups[1].Value; } catch (Exception e) { MessageBox.Show(e.Message); } }