lunes, 22 de octubre de 2007

Acceso al código de una página web

Vamos a empezar con el primer tip del blog. Supongo que alguna vez habreis necesitado leer el código fuente de alguna página web para poder sacar algo de ella mediante programación.

Gracias a .Net esta acción es muy facil y tienes muchas utilidades. Lo primero que necesitamos es un WebClient para abrir la página.

WebClient client = new WebClient();

A continuación creamos un stream para almacenar la página. Para rellenar el stream usamos el WebClient.

Stream data= cliente.OpenRead(url); // Donde url es la dirección de la web

Luego simplemente debemos leer todas las líneas con un stream reader y cada vez que leemos una línea hacemos lo que queramos con ella.

StreamReader reader = new StreamReader(data);

Declaramos una cadena para pasar cada línea leida y leemos líneas hasta llegar al final.

strig str = "";

str = reader.ReadLine();

while (str != null)
{
//Hacemos lo que queramos con la línea leida
str = reader.ReadLine();
}

Ya hemos leído todo el código de la página web por lo que solo nos queda cerrar el stream y ya hemos terminado. Dejarme comentarios si os parecen tips muy básicos, malos o si os gustan xD. Así sabré por donde ir para que os sea lo mas útil posible.

data.Close();

Aquí os dejo una función entera para que se vea más claro, espero que os haya servido de ayuda.

private void ReadWeb(string url)
{
WebClient client = new WebClient();
Stream data= client.OpenRead(url);
StreamReader reader = new StreamReader(data);
string str = "";

str = reader.ReadLine();

while (str != null)
{
//Hacemos lo que queramos con la línea leida
str = reader.ReadLine();
}
data.Close();
}

8 comentarios:

Ricardo Ruano dijo...

excelente blog , muy interesante lo del webclient

Pintamono dijo...

se agradece!!!

Anónimo dijo...

Muchas gracias, justo lo que andaba necesitando!!

Jorge dijo...

Me gustaría saber si hay alguna forma de aparte de leer el codigo fuente, ir a otras páginas como si fueras un explorador. Es decir, yo kiero obtener información de unas páginas web, que previamente te has tenido que loogear. Yo kiero acceder a esa página web con el logeo que yo haga desde la propia apliación...

Anónimo dijo...

gracias, por si a alguno le vale, para usar esto tienen que poner using system.net; arriba(soy novato y me ha costado descubrirlo)

de todos modos gracias

Kolep dijo...

Exelente...,pero como le paso un parametro a la pagina, puesto que la pagina que necesito leer tiene un parametro pasado como POST

Anónimo dijo...

Pues como comentario extra+extra a los ya mencionados hay que agregar "using System.IO;" para tener acceso a la clase Stream.

Muy interesante el ejemplo.

Saludos!

Armando H. Tovar Aragón

Anónimo dijo...

Gracias! Me sirvió muchísimo tu información. Era lo que estaba necesitando hacer. Mil gracias.
Saludos