如何使用HTML Agility Pack选择特定的表格单元格

时间:2012-01-18 04:48:55

标签: vb.net xpath html-agility-pack

我必须从HTML表格中的单元格中提取特定字段。使用Firebug我能够获得我需要的细胞的确切XPath(不幸的是,细胞没有id标签)。我以为我可以使用DocumentNode.SelectSingleNode并传入该路径,但它似乎没有正常工作。我究竟做错了什么?还是有一个更好的方法,而不是我这样做?不幸的是,我没有XPath的经验,所以这比我预期的更难。这是我到目前为止所知道的(我知道HTML特别混乱,但我无法控制改变):

Dim page As New HtmlAgilityPack.HtmlDocument
Dim node As HtmlAgilityPack.HtmlNode
page.LoadHtml(fileContents)
node = page.DocumentNode.SelectSingleNode("/html/body/form/div[6]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[2]")

非常感谢。

1 个答案:

答案 0 :(得分:1)

Firebug可能修复了破坏的html标签。 如果你想选择和Html节点,建议使用class或id。 例如:

//div[@class='content']//table//tr[1]/td[2]

缩短路径,并使用类或id选择器。

如果表格中有自己的ID,您可以使用:

//table[@id='tableid']/tr[1]/td[2]
尝试一下,你会发现XPATH很有趣。