Gibt in HtmlAgilityPack null zurück

c# html-agility-pack

Frage

Ich möchte diesen Code verwenden, aber es gibt NULL in all diesen Parametern zurück! Würdest du bitte helfen, es zu reparieren oder was ist das Problem?

Klicken Sie hier, um ein Bild zu sehen, das gezeigt hat, was passiert ist.

Code:

    HtmlWeb hw = new HtmlWeb();

    private void button1_Click(object sender, EventArgs e)
        {
            Crawler("http://www.avval.ir/directory", 0);
        }

    public void Crawler(string url, int pid)
        {


            try
            {

                HtmlAgilityPack.HtmlDocument doc = hw.Load("http://www.avval.ir/directory");
                HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");
                HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//div[@class='pagination']/a[@href]");
                HtmlNodeCollection phone = doc.DocumentNode.SelectNodes("//p[@class='phone fRight ml10']");

            }
        }

Akzeptierte Antwort

Mann, es scheint, Sie haben einen Tippfehler in Ihrem Xpath-Selektor, siehe:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topi metatag-keywords']");

Hier verwenden Sie //a[@class='metatag-topi metatag-keywords'] Ausdruck, der alle <a> Tags mit dem class metatag-topi metatag-keywords . Aber die Sache ist, du versuchen , die Seite , die Sie Ihren Ausdruck gilt nicht solche Elemente enthalten, sondern hat einige <a class="metatag-topic metatag-keywords"> (fehlende c Buchstaben am Ende des Wortes topic ) .

Ändere einfach diese Zeile zu:

HtmlNodeCollection nodes = 
    doc.DocumentNode.SelectNodes("//a[@class='metatag-topic metatag-keywords']");

und es sollte funktionieren.


Beliebte Antwort

Die DocumentNode.SelectNodes können null zurückgeben, wenn keine Knoten gefunden werden.

Sie können dies überprüfen. Warum DocumentNode.SelectNodes null zurückgibt




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum