HtmlAgilityPack找不到节点

时间:2017-06-01 12:57:43

标签: c# xpath html-agility-pack

我正试图从Here

获取名为span Start

Chrome为我提供了此xPath://*[@id="guide-pages"]/div[2]/div[1]/div/div[1]/div/div/div[2]/div/div[3]/div[2]/div[1]/h2

但是HtmlAgilityPack在我尝试逐个删除之后返回null;这有效://*[@id="guide-pages"]/div[2]/div[1],但不是其他人。

我的完整代码:

HtmlDocument doc = new HtmlDocument();
var text = await ReadUrl();
doc.LoadHtml(text);
Console.WriteLine($"Getting Data From: {doc.DocumentNode.SelectSingleNode("//head/title").InnerText}"); //Works fine
Console.WriteLine(doc.DocumentNode.SelectSingleNode("//*[@id='guide-pages']/div[2]/div[1]/div/div[1]/div/div/div[2]/div/div[3]/div[2]/div[1]/h2") == null);

输出:

Getting Data From: Miss Fortune Build Guide : [7.11] KOREAN MF Build - Destroy the Carry! [Added Support] :: League of Legends Strategy Builds
True

1 个答案:

答案 0 :(得分:1)

请勿使用Chrome中的xpath。请改用HtmlAgilityPack中的LINQ。例如 console.log(ThinObj); // Causes an error and therefore complies with the specification for ES2015 classes var t = new ThinObj('thing'); // Fails because var is `undefined` before initialization var ThinObj = (function ThinObj() { function ThinObj(thing) { this.thing = thing; } return ThinObj; }());将为您提供1个html节点下的所有.Descendants("div")。每个html节点都有元数据,如id,attributes(classes ...),你可以从那里查询你想要的div。 这是检查div是否有类的一种方便方法。

HtmlNode