如何使用HtmlAlityPack解析HTML上没有id的表

如何使用HtmlAlityPack解析HTML上没有id的表,html,vb.net,html-agility-pack,Html,Vb.net,Html Agility Pack,我在HTML中获取表的值时遇到问题,因为它没有ids。我需要获取第二列上的所有值,并将它们保存到一个数组中。我正在使用HtmlAgilityPack,在选择节点时出现问题: Dim doc As HtmlDocument Dim web As New HtmlWeb() Dim str As String doc = Web.Load("http://www.dietas.net/tablas-y-calculadoras/tabla-de-composicion-nutricional-de

我在HTML中获取表的值时遇到问题,因为它没有
id
s。我需要获取第二列上的所有值,并将它们保存到一个数组中。我正在使用HtmlAgilityPack,在选择节点时出现问题:

Dim doc As HtmlDocument
Dim web As New HtmlWeb()
Dim str As String

doc = Web.Load("http://www.dietas.net/tablas-y-calculadoras/tabla-de-composicion-nutricional-de-los-alimentos/carnes-y-derivados/aves/pechuga-de-pollo.html#")

Dim nodes_filas As HtmlNode() = doc.DocumentNode.SelectNodes("//table[@id='']//tr").ToArray
Dim nodes_columnas As HtmlNode() = doc.DocumentNode.SelectNodes("//td").ToArray

For Each row As HtmlNode In nodes_filas
    For Each column As HtmlNode In nodes_columnas
        str = column.InnerHtml & vbCrLf
    Next
Next
这是表格:


阿珀特·波尔·拉西和奥卡蒂;N
Energí;a[千卡]
145,00
Proteí;na[g]
22,20
希德拉托斯碳纤维[g]
0,00
纤维[g]
0,00
格拉萨总计[g]
6,20
AGS[g]
1,91
年度股东大会[g]
1,92
AGP[g]
1,52
AGP/AGS
0,79
(AGP+AGM)/AGS
1,80
胆甾醇[mg]
62,00
酒精[g]
0,00
Agua[g]
71,60

很抱歉,我没有安装VB,但C版本应该足以让您了解情况。您有
td_right
类,您可以使用lambda或xpath查询它。 我更喜欢lambda/linq版本,因为我熟悉linq,并且不需要记住XPATH语法

拉姆达:

    public static bool HasClass(this HtmlNode node, params string[] classValueArray)
    {
        var classValue = node.GetAttributeValue("class", "");
        var classValues = classValue.Split(' ');
        return classValueArray.All(c => classValues.Contains(c));
    }

var url = "http://www.dietas.net/tablas-y-calculadoras/tabla-de-composicion-nutricional-de-los-alimentos/carnes-y-derivados/aves/pechuga-de-pollo.html#";
        var htmlWeb = new HtmlWeb();
        var htmlDoc = htmlWeb.Load(url);
        var nodes = htmlDoc.DocumentNode.Descendants("td").Where(_ => _.HasClass("td_right")).Select(_ => _.InnerText);
XPATH:

var nodes2 = htmlDoc.DocumentNode.SelectNodes("//td[@class='td_right']");

完美的解决方案!!非常感谢你!