Htmlの敏捷性パックは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;
        }   
    }
}

今私は私のプログラムを起動すると、 Object reference not set to an instance of an object.Object reference not set to an instance of an object.と言って、 ifステートメントにエラーを投げ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;
    }   



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ