Foros del Web » Programación para mayores de 30 ;) » .NET »

Scraping en C#

Estas en el tema de Scraping en C# en el foro de .NET en Foros del Web. Hola gente, les comento...estoy haciendo scraping a ciertas paginas porque necesito valores en tiempo real para una base de datos que uso para calcular ciertos ...
  #1 (permalink)  
Antiguo 21/05/2008, 15:27
Avatar de iceman_cml  
Fecha de Ingreso: diciembre-2005
Ubicación: Rosario
Mensajes: 63
Antigüedad: 18 años, 5 meses
Puntos: 0
Scraping en C#

Hola gente, les comento...estoy haciendo scraping a ciertas paginas porque necesito valores en tiempo real para una base de datos que uso para calcular ciertos valores.

Resulta que necesito los valores de esta página:

http://www.bolsar.com/NET/Cotizacion...?indice=MERVAL

pero cuando hago scraping usando los metodos mas conocidos no logro obtener el codigo html de la misma.

El codigo q utilizo y con el cual obtengo en el 99 % de los casos el html es el siguiente:
Cita:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Timeout = 6000;
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream responseStream = webResponse.GetResponseStream();

string responseEncoding = webResponse.ContentEncoding.Trim();

if (responseEncoding.Length == 0)
responseEncoding="us-ascii";

StreamReader responseReader = new StreamReader(responseStream, System.Text.Encoding.GetEncoding(responseEncoding) );

sText = responseReader.ReadToEnd();
Donde url es un string con la direccion web de la pagina.

Desde ya muchas gracias.
__________________
www.nimbosolutions.com.ar
  #2 (permalink)  
Antiguo 21/05/2008, 15:46
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Scraping en C#

Pero que error te ocurre , te da un timeout de la conexion o q pasa?? digo si no te entrega el html algo debio haber saltado
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 21/05/2008, 15:52
Avatar de iceman_cml  
Fecha de Ingreso: diciembre-2005
Ubicación: Rosario
Mensajes: 63
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Scraping en C#

Cita:
Iniciado por Peterpay Ver Mensaje
Pero que error te ocurre , te da un timeout de la conexion o q pasa?? digo si no te entrega el html algo debio haber saltado

Lo que hace es devolverme la pagina de error de la web a la que estoy accediendo.

http://www.bolsar.com/NET/error.html

Gracias por la pronta respuesta.
__________________
www.nimbosolutions.com.ar
  #4 (permalink)  
Antiguo 21/05/2008, 15:59
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Scraping en C#

ok estas iterando sobre una lista de stocks , entonces verifica q ese simbolo este correcto si no esta incorrecto entonces checa

request.AllowAutoRedirect = false; para q no te redireccion y no se muera con el timeout de tu transaccion.

y si no te funciona revisa antes

if response.StatusCode != HttpStatusCode.Found

entonces fallo

else

continuar.

pero primero revisa q tu dato de entrada no sea incorrecto
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 22/05/2008, 14:11
Avatar de iceman_cml  
Fecha de Ingreso: diciembre-2005
Ubicación: Rosario
Mensajes: 63
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Scraping en C#

Cita:
Iniciado por Peterpay Ver Mensaje
ok estas iterando sobre una lista de stocks , entonces verifica q ese simbolo este correcto si no esta incorrecto entonces checa

request.AllowAutoRedirect = false; para q no te redireccion y no se muera con el timeout de tu transaccion.

y si no te funciona revisa antes

if response.StatusCode != HttpStatusCode.Found

entonces fallo

else

continuar.

pero primero revisa q tu dato de entrada no sea incorrecto
Gracias por la ayuda, te comento. Le saque el timeout, le subi el tiempo a muchisimo. Agregue la linea request.AllowAutoRedirect = false; y lo que sucede ahora es que me devuelve un codigo html con un link que me redirecciona a la pagina de error. Mi pregunta es posible que exista algun metodo anti-scraping.
__________________
www.nimbosolutions.com.ar
  #6 (permalink)  
Antiguo 22/05/2008, 15:01
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Scraping en C#

claro q los hay y tan los hay q tienes al bendito ajax q vino a complicarlas cosas tu haces un requeste en el tiempo n y el ajax carga algun contenido mas en el tiempo n + 1 pero tu estas un paso atras. te recomeindo q le des una vuelta a perl porq para esto es buenisimo y no tiene tantos problemas con render asincrono.

yo he visto este tipo de comportamieto en sitios como imdb.com, yahoo.com google.com y otros como money.com la opcion es hacer multiples requests en tiempos distintos para poder checar q tus datos son iguales pero uno nunca sabe cuanto puede llegar a tardar un dato.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #7 (permalink)  
Antiguo 22/05/2008, 16:40
Avatar de iceman_cml  
Fecha de Ingreso: diciembre-2005
Ubicación: Rosario
Mensajes: 63
Antigüedad: 18 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Scraping en C#

Bueno encontre la solucion:

Cita:
webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14";
Hay que agregar esa linea de codigo para que el iis sea bueno y te de el codigo. Saludos.
__________________
www.nimbosolutions.com.ar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:15.