¿Cómo puedo obtener el contenido de la página web utilizando ASP.NET? Necesito escribir un programa para obtener el HTML de una página web y almacenarlo en una variable de cadena.Cómo puedo obtener el contenido de la página web y guardarlo en la variable de cadena
Respuesta
Puede utilizar el WebClient
WebClient client = new WebClient();
string downloadString = client.DownloadString("http://www.gooogle.com");
Webclient client = new Webclient();
string content = client.DownloadString(url);
Pase la URL de la página que desea obtener. Puede analizar el resultado usando htmlagilitypack.
me he topado con problemas con Webclient.Downloadstring antes. Si lo hace, puede intentar esto:
WebRequest request = WebRequest.Create("http://www.google.com");
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
html = sr.ReadToEnd();
}
¿Puede explicar el problema que tenía? – Greg
@Greg, era un problema relacionado con el rendimiento. Nunca lo resolví realmente, pero WebClient.DownloadString tardaría de 5 a 10 segundos en desplegar el HTML, mientras que WebRequest/WebResponse era casi inmediato. Solo quería proponer otra solución alternativa en caso de que el OP tuviese problemas similares o deseara un poco más de control sobre la solicitud/respuesta. – Scott
@Scott - +1 para encontrar esto. Solo ejecuta algunas pruebas. DownloadString tardó mucho más tiempo en el primer uso (5299ms de cadenas de descarga frente a 200ms de WebRequest). Lo probó en un bucle de más de 50 x BBC, 50 x CNN y 50 x Otra URL de alimentación Urls, utilizando diferentes URL para evitar el almacenamiento en caché. Después de la carga inicial, DownloadString salió 20 ms más rápido para BBC, 300 ms más rápido para CNN. Para la otra fuente RSS, WebRequest fue 3 ms más rápido. En general, creo que usaré WebRequest para solteros y DownloadString para recorrer las URL. – HockeyJ
recomiendo no usando WebClient.DownloadString
. Esto es porque (al menos en .NET 3.5) DownloadString no es lo suficientemente inteligente como para usar/eliminar la lista de materiales, en caso de que estuviera presente. Esto puede provocar que la lista de materiales (
) aparezca incorrectamente como parte de la cadena cuando se devuelven datos UTF-8 (al menos sin un juego de caracteres) - ick!
En cambio, esta ligera variación funcionará correctamente con listas de materiales:
string ReadTextFromUrl(string url) {
// WebClient is still convenient
// Assume UTF8, but detect BOM - could also honor response charset I suppose
using (var client = new WebClient())
using (var stream = client.OpenRead(url))
using (var textReader = new StreamReader(stream, Encoding.UTF8, true)) {
return textReader.ReadToEnd();
}
}
- 1. ¿Cómo puedo obtener el contenido de la página web
- 2. Cargue el contenido de la página a la variable
- 3. PHP: ¿cómo puedo cargar el contenido de una página web en una variable?
- 4. ¿Cómo puedo analizar el contenido dinámico de una página web?
- 5. Obtener contenido de la página web con Ruby - Tengo problemas
- 6. ¿Cómo puedo obtener la clave pública de una página web?
- 7. Contenido central de la página web
- 8. Cómo establecer el título de la página desde una página de contenido web en ASP.NET 3.5
- 9. cómo dibujar algo con el dedo en una aplicación de Android .... y guardarlo en la web
- 10. Copiar el contenido de la página web - y pegar contenido + enlace
- 11. Obtener contenido de la página de Apache Commons Solicitud HTTP
- 12. Contenido ActiveX en una página web local, y "la marca de la web"
- 13. ¿Cómo obtener el valor de la variable global en jquery?
- 14. ¿Cómo puedo leer y analizar el contenido de una página web en I
- 15. ¿Cómo obtener los contenidos de una página web en una variable de shell?
- 16. Obtener URL y guardarlo | Extensión de Chrome
- 17. Ajax/jQuery - Cargar el contenido de la página web en un div en la carga de la página?
- 18. Centrar el contenido de la página verticalmente
- 19. ¿Cómo obtener y configurar la posición de desplazamiento de la página web actual?
- 20. Obtener la URL base de la página web y en el mundo de pasarlo al ramita en Symfony 2
- 21. ¿Cómo puedo serializar - deserializar un hash para guardarlo en la base de datos?
- 22. Web scraping - cómo identificar contenido principal en una página web
- 23. Ajustar el contenido de la página web dentro de una vista web (Android)
- 24. ¿Cómo ejecutar y obtener el contenido de un archivo .php en una variable?
- 25. t-sql obtener el valor de la variable de la cadena con nombre de variable
- 26. Cómo obtener el contenido html de nutch
- 27. Obtener la variable de sesión magento en otra página
- 28. Cualquier primavera como web push como notificación, donde puedo obtener notificaciones actualizadas en la página web sin actualizar la página?
- 29. ¿Cómo puedo obtener el valor de cadena completo de la variable en la ventana del reloj VC6?
- 30. ¿Cómo manejar el evento de botón de página maestra en la página de contenido?
Desafortunadamente DownloadString (a partir de .NET 3.5) no es lo suficientemente inteligente como para trabajar con listas de materiales. He incluido una alternativa en mi respuesta. – user2246674
Sin voto porque sin uso (cliente WebClient = nuevo WebClient()) {} :) –
Esto es equivalente a la respuesta de Steven Spielberg, publicada 3 minutos antes, por lo que no hay +1. – BalinKingOfMoria