elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Votaciones, mejor proyecto de Abril Negro 2017!


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderadores: Novlucker, seba123neo, kub0x, Eleкtro)
| | | |-+  Problema al leer codigo html de una web
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al leer codigo html de una web  (Leído 262 veces)
s_azazel

Desconectado Desconectado

Mensajes: 91



Ver Perfil
Problema al leer codigo html de una web
« en: 26 Abril 2017, 11:20 »

Buenos dias estoy intentando sacar el codigo de una web pero me tira error todo el rato y la verdad no se por que... con otras webs si funciona correctamente no se si estara protegida o algo

Sin embargo al usar el control WebBrowser si que me deja leer el codigo html pero necesito mas velocidad para no ir mostrando todas las paginas :D

Os dejo el codigo que tengo: con el nombre de la web inculida

Código
  1. Dim URl As String = "https://es.magiccardmarket.eu/"
  2.  
  3.        Try
  4.            Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(URl)
  5.            Dim response As System.Net.HttpWebResponse = request.GetResponse()
  6.  
  7.            Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
  8.            Dim sourcecode As String = sr.ReadToEnd()
  9.            TextBox1.Text = sourcecode
  10.        Catch ex As Exception
  11.            MessageBox.Show("Invalid Url")
  12.            Return
  13.        End Try

Mil gracias!!!!


« Última modificación: 26 Abril 2017, 15:14 por Eleкtro » En línea

Eleкtro
Novato Astral y
Moderador Global
***
Desconectado Desconectado

Mensajes: 8.994


El sentido común es el menos común de los sentidos


Ver Perfil
Re: Problema al leer codigo html de una web
« Respuesta #1 en: 26 Abril 2017, 15:13 »

Para solucionarlo, simplemente asígnale un user-agent conocido a la petición http y listo. Aparte de eso, tienes una fuga de recursos sin liberar, puedes mejorar el código. Ten presente la importancia de llamar al método Object.Dispose() o en su defecto decorar un bloque de código con la sentencia Using:

Código
  1. Dim uri As New Uri("https://es.magiccardmarket.eu/")
  2. Dim html As String
  3.  
  4. Try
  5.    Dim req As HttpWebRequest = HttpWebRequest.Create(uri)
  6.    With req
  7.        .Method = "GET"
  8.        .Accept = "text/html"
  9.        .UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"
  10.    End With
  11.  
  12.    Using res As HttpWebResponse = req.GetResponse(),
  13.          sr As New StreamReader(res.GetResponseStream(), Encoding.UTF8)
  14.        html = sr.ReadToEnd()
  15.    End Using
  16.    TextBox1.Text = html
  17.  
  18. Catch ex As WebException
  19.    Debug.WriteLine(String.Format("Response Status: {0}", ex.Status.ToString()))
  20.    Throw
  21.  
  22. Catch ex As Exception
  23.    Throw
  24.  
  25. End Try

Por último, recuerda que también puedes utilizar la clase WebClient, la cual es un wrapper/abstracción de la clase HttpWebRequest y eso es lo que deberías utilizar preferiblemente para peticiones simples como ésta:
Código
  1. Dim uri As New Uri("https://es.magiccardmarket.eu/")
  2. Dim html As String
  3.  
  4. Using wc As New WebClient
  5.    wc.Encoding = Encoding.UTF8
  6.    wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
  7.  
  8.    Try
  9.        html = wc.DownloadString(uri)
  10.        TextBox1.Text = html
  11.  
  12.    Catch ex As WebException
  13.        Debug.WriteLine(String.Format("Response Status: {0}", ex.Status.ToString()))
  14.        Throw
  15.  
  16.    Catch ex As Exception
  17.        Throw
  18.  
  19.    End Try
  20.  
  21. End Using

PD: La diferencia de tiempo total de ejecución entra uno y el otro, se mide en milisegundos.

¡Saludos!


« Última modificación: 26 Abril 2017, 17:21 por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines