5

私はこのようなものを持っています:

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ステートメントにエラーがスローされ、 Object reference not set to an instance of an object.. ページがロードされないのはなぜですか? ここで何が間違っていますか?

4

2 に答える 2

17

を探してい.Load()ます。

.LoadHtml()物理的な HTML が与えられることを期待しています。移動する Web サイトを指定しています:

HtmlWeb website = new HtmlWeb();
HtmlDocument rootDocument = website.Load("http://www.example.com");
于 2013-11-05T16:08:15.973 に答える
1

アランの答えに加えて

.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;
    }   
于 2013-11-05T16:14:26.520 に答える