为了账号安全,请及时绑定邮箱和手机立即绑定

HTML Agility包-解析表

HTML Agility包-解析表

拉丁的传说 2019-11-07 11:12:09
我想使用HTML敏捷性包来解析复杂网页中的表,但是我迷失在对象模型中。我看了链接示例,但没有以这种方式找到任何表数据。我可以使用XPath获取表吗?在加载有关如何获取表的数据之后,我基本上迷失了。我之前在Perl中已经做到这一点,虽然有点笨拙,但是可以工作。(HTML::TableParser)。我也很高兴,如果可以只是洒合适的对象为使解析上的一盏灯。
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

我发现为特定元素获取XPath的最简单方法是为Firefox安装FireBug扩展,请转到网站/网页,按F12弹出firebug。正确的选择并右键单击页面上的元素要查询,然后选择“检查元素”萤火虫将选择在IDE中的元素,然后右键单击该元素在Firebug中,选择“复制XPath”这个功能会给你确切的XPath使用HTML Agility Library查询您需要的元素。


查看完整回答
反对 回复 2019-11-07
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

我知道这是一个非常老的问题,但这是我的解决方案,有助于可视化表格,因此您可以创建类结构。这也正在使用HTML Agility Pack


HtmlDocument doc = new HtmlDocument();

doc.LoadHtml(@"<html><body><p><table id=""foo""><tr><th>hello</th></tr><tr><td>world</td></tr></table></body></html>");

var table = doc.DocumentNode.SelectSingleNode("//table");

var tableRows = table.SelectNodes("tr");

var columns = tableRows[0].SelectNodes("th/text()");

for (int i = 1; i < tableRows.Count; i++)

{

    for (int e = 0; e < columns.Count; e++)

    {

        var value = tableRows[i].SelectSingleNode($"td[{e + 1}]");

        Console.Write(columns[e].InnerText + ":" + value.InnerText);

    }

Console.WriteLine();

}


查看完整回答
反对 回复 2019-11-07
  • 3 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信