using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

// need to add these
using System.Net;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

public partial class ScrapeHeadings : System.Web.UI.Page
{
   /// <summary>
   /// Przy każdym załadowaniu strony skasować zawartość kontrolki Literal
   /// </summary>
   protected void Page_Load(object sender, EventArgs e)
   {
     litContent.Text = "";
   }

   /// <summary>
   /// Procedura obsługi przycisku wyszukiwania
   /// </summary>
   protected void btnSearch_Click(object sender, EventArgs e)
   {
      // Należy przechwycić błędy nie odpowiadających adresów URL
      try
      {
         // użycie klasy WebClient do pobrania zawartości adresu URL
         WebClient client = new WebClient();
         string content = client.DownloadString(txtUrl.Text);

         // Dopasowanie wszystkich znaczników H?
         Regex reg = new Regex(@"<h\d.+</h\d>", RegexOptions.IgnoreCase);

         // pobranie kolekcji wszystkich dopasowań
         MatchCollection mc = reg.Matches(content);

         // przeglądanie kolekcji dopasowań
         foreach (Match m in mc)
         {
            // kodowanie znaczników i wyświetlanie w literale
            litContent.Text += HttpUtility.HtmlEncode(m.Value) + "<br/>";
         }
      }
      catch
      {
         litContent.Text = "Nie można się podłączyć do " + txtUrl.Text;
      }      
   }
}
