pondelok, 12 december 2011 12:00 Written by 5324 times
Rate this item
(2 votes)

C# - Parsovanie web stránky

V tomto článku  si ukážeme ako jednoducho rozparsovať HTML stránku. Jedným z spôsobov je použitie regulárnych výrazov. Spravíme si metódu, ktorá stránku načíta a potom pomocou druhej ju rozparsujeme.

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);
    }
}
Last modified on pondelok, 19 december 2016 21:34
Ing.Jaroslav Vadel

Som zakladateľom www.projectik.eu.

Hrám sa na programátora, ktorý ovláda:

c#,cpp,java,unity3d,php,html,NI testand,NI Vision Builder,Cognex In-Sight,NI LabView

"Naprogramovať program, ktorý funguje vie každy. Ale to, že program funguje ešte neznamena, že je napísany správne "

Website: www.projectik.eu