#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)
...