C # - Html Agility Pack - no se puede leer desde la web

c# html-agility-pack

Pregunta

Estoy tratando de hacer un pequeño programa para leer el contenido de una página de wikipedia, y para obtener el html, encontré este código en otra parte en SO

        HtmlDocument doc = new HtmlDocument();
        StringBuilder output = new StringBuilder();

        doc.LoadHtml("http://en.wikipedia.org/wiki/The Metamorphosis of Prime Intellect");
        var text = doc.DocumentNode.SelectNodes("//body//text()").Select(node => node.InnerText);

        foreach (string line in text)
            output.AppendLine(line);

        string textOnly = HttpUtility.HtmlDecode(output.ToString());

        Console.WriteLine(textOnly);

Sin embargo, recibo un error de tiempo de ejecución "ArgumentNullException no fue manejado", y esta línea está resaltada:

        var text = doc.DocumentNode.SelectNodes("//body//text()").Select(node => node.InnerText);

¿Alguien ve el problema?

Respuesta popular

doc.LoadHtml toma una cadena html no url . Para descargar esa página puedes usar la clase HtmlAgilityPack.HtmlWeb

var web = new HtmlAgilityPack.HtmlWeb();
var doc = web.Load("http://en.wikipedia.org/wiki/The Metamorphosis of Prime Intellect");

var text = doc.DocumentNode.SelectNodes("//body//text()").Select(node => node.InnerText);
var output = String.Join("\n", text);

SelectNodes devuelve 622 artículos en mi prueba.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué