Проблема с извлечением данных Html Agility Pack

#c# #html-agility-pack

#c# #html-agility-pack

Вопрос:

Я пытаюсь проанализировать данные с веб-страницы http://www.bbb.org/kitchener/accredited-business-directory?letter=a

я хочу получить все категории, такие как

Бухгалтеры — сертифицированные общественные организации (2)

Бухгалтерские службы (1) и т.д. Но проблема в том, что когда я получаю узел, тогда тег a равен null, я не знаю почему, но HTMLagility pack не получает эти теги. Проверка в watch показывает, что div содержит только теги с комментариями, а не тег, в котором, как мы видим в исходном коде страницы, он есть

 doc.DocumentNode.SelectNodes("//tr/td/table/tr/td/div/div")[0].OuterHtml    "<div style="font-size: 12px;line-height: 16px;"><!--<br />-->rn<!--<br />-->rn</div>"    
  

вот начало этого div
Обратите внимание, что я включил только 2 тега из HTML

 <div style="float: left; width: 305px;"> 
  <h5 style="margin: 0px; margin-bottom: 5px; border-bottom: 1px solid #cccccc; padding-bottom: 5px; font-size: 12px;">Categories Starting with letter 'a'</h5> 
   <div style="font-size: 12px;line-height: 16px;">
     <!--<br />-->
     <!--<br />-->       
     <a class="listingName" href="/kitchener/accredited-business-directory/accountants">Accountants (11)</a><br />   
     <a class="listingName" href="/kitchener/accredited-business-directory/accountants-certified-public">Accountants - Certified Public (2)</a><br /> 
   </div> 
</div>
  

как я могу получить данные

Даже при вводе ссылки не отображаются

 foreach (var test in doc.DocumentNode.SelectNodes("//a[@href]")) 
{ MessageBox.Show(test.InnerText "n" test.InnerHtml); }
  

Ответ №1:

У меня это отлично сработало, используя следующий пример:

 HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.bbb.org/kitchener/accredited-business-directory?letter=a");

foreach (var link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    Console.WriteLine(link.InnerText);
}
  

Вывод (сокращенный):

 BBB
Home
Accredited Business Directory
Accountants (11)
Accountants - Certified Public (2)
Accounting Services (1)
Advertising - Direct Mail (3)
Advertising Agencies amp; Counselors (3)
Advertising Specialties (3)
...