Restituisce null in HtmlAgilityPack

c# html-agility-pack

Domanda

Voglio usare questo codice ma restituisce NULL in tutti questi parametri! per favore aiutatemi a risolverlo o qual è il problema?

clicca qui per un'immagine che mostra cosa è successo.

codice :

    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']");

            }
        }

Risposta accettata

Man, sembra che tu abbia un refuso nel tuo selettore xpath, vedi:

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

Qui si usa //a[@class='metatag-topi metatag-keywords'] espressione che seleziona tutti i tag <a> con valore di attributo di class metatag-topi metatag-keywords . Ma la cosa è, la pagina che stai cercando di applicare la tua espressione non contiene tali elementi, ma ha alcuni <a class="metatag-topic metatag-keywords"> (lettera c mancante alla fine della parola topic ) .

Basta cambiare quella linea per:

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

e dovrebbe funzionare.


Risposta popolare

Il DocumentNode.SelectNodes potrebbe restituire null se non viene trovato alcun nodo.

È possibile controllare questo correlato Why DocumentNode.SelectNodes restituisce null




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché