Pack d'agilité HTML ne charge pas l'URL

c# html-agility-pack html-parsing

Question

J'ai quelque chose comme ça:

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

Maintenant, lorsque je lance mon programme, une erreur if renvoyée sur l'élément if , indiquant que la Object reference not set to an instance of an object. . Pourquoi ne charge-t-il pas ma page? Qu'est-ce que je fais mal ici?

Réponse acceptée

Vous recherchez .Load() .

.LoadHtml() s'attend à recevoir du code HTML physique. Vous donnez un site Web pour aller à:

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

Réponse populaire

En plus de la réponse d' Arran

Si .SelectNodes("//span[@class='some-class']") ne renvoie aucun nœud et est null exécution de Count sur cette exception donnera cette exception.

Essayer

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi