Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HtmlAlityPack找不到节点_C#_Xpath_Html Agility Pack - Fatal编程技术网

C# HtmlAlityPack找不到节点

C# HtmlAlityPack找不到节点,c#,xpath,html-agility-pack,C#,Xpath,Html Agility Pack,我正试着从span开始 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();

我正试着从span开始

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

不要使用来自Chrome的xpath。改为在HtmlAgilityPack中使用LINQ。例如 .DegeneratsDiv将为您提供1个html节点下的所有div。每个html节点都有元数据,比如id、AttributeClasses…,您可以从那里查询想要的div。 这是检查HtmlNode是否有类的一种简便方法

    public static bool HasClass(this HtmlNode node, params string[] classValueArray)
    {
        var classValue = node.GetAttributeValue("class", "");
        var classValues = classValue.Split(' ');
        return classValueArray.All(c => classValues.Contains(c));
    }

那么我将如何获得数据呢?我没弄明白。你知道你期望的div在哪里吗?它有类名或id吗?它的父类有一个名为item title的类。我会试试看。guide-pages>div.col-left>div.guide-head.self-clear.mb10>div>div:nth-child1>div>div>div.build-wrap>div>div.self-clear.mb10>div.nth-child3>div>div:nth-child1>a>div.item-title>span是span的选择器。所以,我按照你的建议做了,但没有得到span;所以我得到了它的xPath;这个xPath有效:/html[1]/body[1]/div[9]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]/div[1]/div[6]/div[1]/div[2]/a[1]/div[2]/span