5 Stimmen

Html-Agility-Pack lädt die URL nicht.

Ich habe so etwas:

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

Jetzt, wenn ich mein Programm starte, wirft es einen Fehler auf der if-Anweisung, der besagt, dass Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.. Warum lädt es meine Seite nicht? Was mache ich hier falsch?

17voto

Arran Punkte 24050

Sie suchen nach .Load().

.LoadHtml() erwartet physisches HTML. Sie geben eine Website an, zu der Sie gehen möchten:

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

1voto

Harrison Punkte 3823

Zusätzlich zu Arrans Antwort

Wenn .SelectNodes("//span[@class='some-class']") keine Knoten zurückgibt und null ist, führt das Aufrufen von Count zu dieser Ausnahme.

Versuchen Sie es

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X