我试图从Here获得 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 回答
不要使用Chrome中的xpath . 请改用HtmlAgilityPack中的LINQ . 例如
.Descendants("div")
将为您提供1 html节点下的所有div
. 每个html节点都有元数据,如id,attributes(classes ...),你可以从那里查询你想要的div . 这是检查HtmlNode
是否具有类的一种方便方法 .