如何使用HTML Agility Pack選擇特定的表格單元格

html-agility-pack vb.net xpath

我必須從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]")

非常感激。

一般承認的答案

Firebug可能修復了破壞的html標籤。如果你想選擇和Html節點,建議使用class或id。例如:

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

縮短路徑,並使用類或id選擇器。

如果表有自己的id,你可以使用:

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

嘗試一下,你會發現XPATH很有趣。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因