Пакет html agility не загружает URL-адрес

c# html-agility-pack html-parsing

Вопрос

У меня есть что-то вроде этого:

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;
        }   
    }
}

Теперь , когда я начинаю свою программу, он выдает ошибку на if sttement, говоря , что Object reference not set to an instance of an object. на Object reference not set to an instance of an object. , Почему он не загружает мою страницу? Что я здесь делаю неправильно?

Принятый ответ

Вы ищете .Load() .

.LoadHtml() ожидает получения физического HTML. Вы предоставляете сайт, чтобы перейти к:

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

Популярные ответы

В дополнение к ответу Аррана

Если .SelectNodes("//span[@class='some-class']") не возвращает ни одного узла и имеет значение null то выполнение Count на нем даст это исключение.

Пытаться

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

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow