jueves, 13 de marzo de 2008

ASP.NET - Recuperar contenido HTML de otra pagina web - II

Desde el previo post estamos analizando las distintas formas que conocemos para recuperar el
contenido de otra página web...
Le toca el turno a las clases HttpWebRequest y HttpWebResponse.
Así es, estas clases también permiten recuperar el contenido de otra pagina consultada.
WebResponse.- Recupera el contenido proveniente de una uri.
WebRequest.- Hace una consulta a una uri.

Vamos por partes (como dijo Jack el destripador jeje...)
Empezaremos a analizar estas dos clases ante el método GET.

vamos a examinar la uri
http://www.modeladvisor.com/info_data/search.php?search_txt=auditing,
observen que tiene un parámetro GET que se llama search_txt.... y el valor que tiene es "auditing" ....
la página que estamos analizando, es una página de búsqueda de productos... osea, si yo le paso el
texto "auditing" ... me buscará productos relacionados con auditoría...
Antes de pasar al código .NET... hagan la prueba directamente con la página web:
copien y peguen la url de arriba en la barra de direcciones...
veran que se lista una serie de productos relacionados con auditoría... esa es la idea:
automatizar ese proceso de entrar en cada página y buscar el contenido...
para qué consultar página por página? si lo puedo programar!!!

Pero, para qué me serviría una funcionalidad como ésta?
Cómo te atreves a preguntar eso? 

escucha... con esta funcionalidad podrías por ejemplo:
-consultar el valor del dolar desde una página externa... y mostrarlo en tu aplicación
-consultar a cuánto ascienden las acciones de IBM
-consultar a una agencia de viajes... qué pasajes están disponibles, a qué lugares y a qué precio
-etc, etc, etc

el código VB.NET sería este:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Dim _Output As String
Dim _sr As StreamReader
Dim _request As HttpWebRequest
Dim _response As HttpWebResponse

_request = WebRequest.Create( _
"http://www.modeladvisor.com/info_data/search.php?search_txt=auditing")
_request.Method = "GET"

_response = _request.GetResponse
_sr = New StreamReader(_response.GetResponseStream)
_Output = _sr.ReadToEnd.Trim
_sr.Close()

Response.Write(_Output)

End Sub

Hemos analizado cómo recuperar información de otra página web... pasándole parámetros por el método GET.
El próximo post haremos lo mismo, pero mediante el método POST.

3 comentarios:

Unknown dijo...

Hola, me parece interesante.. tengo un acaso sismilar que quisiera resolver, recuperar los archivos JPG creados en al ingresar los parametros (X location, Y location) en la web http://weather.msfc.nasa.gov/GOES/goeseastfullir.html

espero puedas ayudarme

Saludos

Carlos Eche

Segundo Serrano dijo...

Hola Carlos,

Voy a hacer un post sobre este tema apenas pueda... pero por mientras espero que este ejemplo pueda ayudarte:

protected void Page_Load(object sender, EventArgs e)
{ System.Net.WebClient wc = new System.Net.WebClient();

byte[] b = wc.DownloadData("http://www.google.com/intl/en_ALL/images/logo.gif");
System.Drawing.Image newImage;

using (System.IO.MemoryStream ms = new System.IO.MemoryStream(b, 0, b.Length))
{ ms.Write(b, 0, b.Length);

newImage = System.Drawing.Image.FromStream(ms, true);

newImage.Save( Server.MapPath("images/myimage.gif"));
}

}

Unknown dijo...

Hola Segundo,

He leído los artículos sobre como recuperar los datos de una página html.
La duda que tengo es que no se como extraer los datos que están contenidos en una tabla del código html que nos descargamos.
He intentado hacerlo con expresiones regulares pero no consigo llegar a todos los datos.
¿Sabés de alguna forma para poder extraerlos?

Por lo que he leido en google se trata de parsear, no?

Gracias y saludos,

Roberto.