http://msdn.microsoft.com/zh-tw/ee787055
簡單範例:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(targetHTML); HtmlNode n = doc.DocumentNode.SelectSingleNode("/html[1]/body[1]/table[1]/tr[1]/td[2]/font[1]"); string activity = HtmlEntity.DeEntitize(n.InnerHtml).Trim(); HtmlNode node; if (key == "sex") node = doc.DocumentNode.SelectSingleNode("//input[@name='" + key + "' and @checked]"); else node = doc.DocumentNode.SelectSingleNode("//input[@name='" + key + "' ]"); if (node != null) signData.Add(key, node.Attributes["value"].Value); else if ((signData.ContainsKey("chkmeal") && signData["chkmeal"] == "1") && key == "meal") { if (foodDic.ContainsKey(food)) signData.Add(key, foodDic[food]); else signData.Add(key, foodDic["不用餐"]); }
不過不知道為甚麼.. 它用XPath分析出來的的東西跟我想的有點差距
因為這樣我還用了Firefox的xpath checker去看,出來的東西果然不一樣
分享一個我的解決辦法~
先設定中斷點在 SelectNodes 方法* 後,然後直接下需要的XPath的Html tag (EX: //input)
之後在每個 HtmlNode 都會有它的絕對XPath路徑,直接去看那邊吧
* SelectSingleNode 是取單一個tag,傳回HtmlNodeCollection
SelectNodes 是取多個符合的,傳回HtmlNode
沒有留言:
張貼留言