Html Agility Pack при получении данных - PullRequest
0 голосов
/ 05 апреля 2011

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

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

Бухгалтеры - сертифицированные специалисты (2)

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

doc.DocumentNode.SelectNodes("//tr/td/table/tr/td/div/div")[0].OuterHtml    "<div style=\"font-size: 12px;line-height: 16px;\"><!--<br />-->\r\n<!--<br />-->\r\n</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 Ответ

2 голосов
/ 05 апреля 2011

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

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 & Counselors (3)
Advertising Specialties (3)
...
...