Vb.net 如何使用HTML Agility Pack选择特定的表格单元格
我必须从HTML表格的单元格中提取特定字段。使用Firebug,我能够获得我需要的单元格的精确XPath。不幸的是,这些单元格没有id标记。我想我可以使用DocumentNode.SelectSingleNode并在该路径中传递,但它似乎工作不正常。我做错了什么?还是有比我现在做的更好的方法?不幸的是,我没有使用XPath的经验,所以这比我预期的要困难。到目前为止,我知道HTML非常混乱,但我无法控制改变:Vb.net 如何使用HTML Agility Pack选择特定的表格单元格,vb.net,xpath,html-agility-pack,Vb.net,Xpath,Html Agility Pack,我必须从HTML表格的单元格中提取特定字段。使用Firebug,我能够获得我需要的单元格的精确XPath。不幸的是,这些单元格没有id标记。我想我可以使用DocumentNode.SelectSingleNode并在该路径中传递,但它似乎工作不正常。我做错了什么?还是有比我现在做的更好的方法?不幸的是,我没有使用XPath的经验,所以这比我预期的要困难。到目前为止,我知道HTML非常混乱,但我无法控制改变: Dim page As New HtmlAgilityPack.HtmlDocument
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]")
非常感谢。Firebug可能修复了损坏的html标记。 如果要拾取和Html节点,建议使用class或id。 例如:
//div[@class='content']//table//tr[1]/td[2]
缩短路径,并使用类或id选择器
如果表有自己的id,则可以使用:
//table[@id='tableid']/tr[1]/td[2]
试试看,你会发现XPATH很有趣。谢谢!其中一个父表有一个id,使用这种方法,我能够深入到我需要的内容。HtmlAgilityPack在XPath选择器中有一些错误…可能是C中Xml组件的错误。有时您希望通过//table[@id='tableid']/tr[3]/td[2]选择第三个tr。它可能返回null。。。。