Estoy intentando descargar los contenidos de un sitio web. Sin embargo, para una página web determinada, la cadena devuelta contiene datos confusos, que contienen muchos caracteres.C# Descargar el sitio web en cadena usando C# WebClient o HttpWebRequest
Aquí está el código que estaba usando originalmente.
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "GET";
req.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))";
string source;
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
{
source = reader.ReadToEnd();
}
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(source);
También probé implementaciones alternativas con el cliente Web, pero sigue siendo el mismo resultado:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
using (WebClient client = new WebClient())
using (var read = client.OpenRead(url))
{
doc.Load(read, true);
}
partir de la búsqueda supongo que esto podría ser un problema con la codificación, así que intenté tanto las soluciones publican a continuación, pero aún no puedo hacer que esto funcione
- http://blogs.msdn.com/b/feroze_daud/archive/2004/03/30/104440.aspx
- http://bytes.com/topic/c-sharp/answers/653250-webclient-encoding
El sitio infractor que me parece que no puede descargar es el artículo Estados_Unidos en la versión de Inglés de la Wikipedia (en. Wikipedia. Org/wiki/Estados_Unidos). Aunque he intentado varios otros artículos de wikipedia y no he visto este problema.
Nunca debes hacer esto manualmente, esto ya está incorporado, es decir, mira esta respuesta : http://stackoverflow.com/questions/2973208/automatically-decompress-gzip-response-via-webclient-downloaddata – BrokenGlass
@BrokenGlass Gracias por la pista. Ya me preguntaba por qué nunca tuve problemas con la codificación gzip antes. – Peter
¡Gracias, esto funcionó para mí! – EnISeeK