#889 - Catturare il codice HTML da una pagina tramite la classe WebRequest

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.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

haplo78 scrive:
#889 - Catturare il codice HTML da una pagina tramite la classe WebRequest

Ciao,se la pagina richiesta nell'url è solo una pagina di attesa che dopo un po' esegue un redirect ad un'altra pagina, è possibile catturare quest'...
martedì 5 agosto 2008
aspmau scrive:
#889 - Catturare il codice HTML da una pagina tramite la classe WebRequest

Ho provato ad utilizzare questo script, ma mi torna il seguente errore:CS0246: The type or namespace name 'StreamReader' could not be found (are you ...
lunedì 28 maggio 2007 | 2 risposte

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC