检索数据的Html Agility Pack问题

时间:2011-04-05 03:26:24

标签: c# html-agility-pack

我正在尝试解析网页http://www.bbb.org/kitchener/accredited-business-directory?letter=a

中的数据

我希望获得所有类别

会计师 - 公众认证(2)

会计服务(1)  等问题是当我转到节点然后标记a为空我不知道为什么但HTMLagility包没有得到这些标签。检查看它说div只包含最注释的breakline标签而不是标签,当我们在页面源中看到它时,它就在那里

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的开头 请注意,我只包含HTML中的2个标签

<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 个答案:

答案 0 :(得分:2)

使用以下示例对我的工作正常:

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