【问题标题】:How to select a specific table cell using HTML Agility Pack如何使用 HTML Agility Pack 选择特定的表格单元格
【发布时间】:2012-01-18 04:48:54
【问题描述】:

我必须从 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]")

非常感谢。

【问题讨论】:

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


    【解决方案1】:

    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。它可能是返回空......
    猜你喜欢
    • 1970-01-01
    • 2013-05-04
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多