Вернуть null в HtmlAgilityPack

c# html-agility-pack

Вопрос

Я хочу использовать этот код, но он возвращает NULL во всех этих параметрах! не могли бы вы помочь, как исправить это или в чем проблема?

нажмите здесь, чтобы посмотреть, что произошло.

код:

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

            }
        }

Принятый ответ

Человек, похоже, у вас есть опечатка в вашем селекторе xpath, см.

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

Здесь используется //a[@class='metatag-topi metatag-keywords'] выражение , которое выбирает все <a> тегов с class значений атрибутов metatag-topi metatag-keywords . Но дело в том, что страница, которую вы пытаетесь применить к вашему выражению, не содержит таких элементов, но имеет некоторые <a class="metatag-topic metatag-keywords"> (отсутствие буквы c в конце topic слова) ,

Просто измените эту строку на:

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

и он должен работать.


Популярные ответы

DocumentNode.SelectNodes может возвращать значение null, если узлы не найдены.

Вы можете проверить это, почему DocumentNode.SelectNodes возвращает значение null



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему