Catturare il codice HTML da una pagina tramite la classe WebRequest

di Ugo Lattanzi, in ASP.NET 2.0, System.Net, System.IO,

Il .NET Framework ci mette a disposizione alcuni classi che ci permettono di effettuare delle richieste web e di analizzarne la risposta proprio come fa un browser web.

Questo tipo di implementazione normalmente viene utilizzata quando si ha la necessità di dover indicizzare in un proprio motore di ricerca delle pagine web che non sono accessibili direttamente da file, oppure sono generate dinamicamente tramite un engine server side proprio come avviene per le pagine ASP.NET.

Lo script seguente mostra come creare una richiesta web e leggere lo stream restituito dal server, mettendo il tutto in una variabile locale da utilizzare per i nostri scopi:

string html = string.Empty;
Uri uri = new Uri(@"http://www.tuosito.it");
System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
using (System.Net.WebResponse response = request.GetResponse())
{
  using (System.IO.Stream stream = response.GetResponseStream())
  {
    using (StreamReader sr = new StreamReader(stream))
    {
      html = sr.ReadToEnd();
    }
  }
}

Avendo la variabile popolata, possiamo utilizzare una regular expression per filtrarla o utilizzare il codice per quel che più preferiamo.

E' da tenere in considerazione l'idea che il server a cui si effettua la richiesta può non rispondere velocemente e può essere non raggiungile al momento della stessa, per cui è preferibile eseguire questa funzione in una chiamata asincrona in modo da evitare timeout o interfacce bloccate.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi