Paquete de agilidad html no carga url

c# html-agility-pack html-parsing

Pregunta

Tengo algo como esto:

class MyTask
{
    public MyTask(int id)
    {
        Id = id;
        IsBusy = false;
        Document = new HtmlDocument();
    }

    public HtmlDocument Document { get; set; }
    public int Id { get; set; }
    public bool IsBusy { get; set; }
}

class Program
{
    public static void Main()
    {
        var task = new MyTask(1);
        task.Document.LoadHtml("http://urltomysite");
        if (task.Document.DocumentNode.SelectNodes("//span[@class='some-class']").Count == 0)
        {
            task.IsBusy = false;
            return;
        }   
    }
}

Ahora, cuando inicio mi programa, arroja un error en la instrucción if , diciendo que la Object reference not set to an instance of an object. . ¿Por qué no está cargando mi página? ¿Qué estoy haciendo mal aquí?

Respuesta aceptada

Usted está buscando .Load() .

.LoadHtml() espera recibir un HTML físico. Usted está dando un sitio web para ir a:

HtmlWeb website = new HtmlWeb();
HtmlDocument rootDocument = website.Load("http://www.example.com");

Respuesta popular

Además de la respuesta de Arran.

Si .SelectNodes("//span[@class='some-class']") no devuelve ningún nodo y es null , al hacer un Count se dará esta excepción.

Tratar

if (task.Document.DocumentNode.SelectNodes("//span[@class='some-class']") != null && 
    task.Document.DocumentNode.SelectNodes("//span[@class='some-class']").Count == 0)
    {
        task.IsBusy = false;
        return;
    }   


Related

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é