【问题标题】:C# & HTML Agility Pack - Returning NullC# & HTML 敏捷包 - 返回 Null
【发布时间】:2017-06-15 04:34:57
【问题描述】:

我想制作一个控制台应用程序,当我输入他们的频道时​​,它会返回他们有多少订阅者。我目前让它从 Console.ReadLine() 以 html 格式下载搜索页面。这将返回一个成功的 html 页面,因为我添加了一个 .Save 以查看下载是否有任何输出。但是,当使用 xcode 抓取 html 时,它会返回 null。我曾多次尝试使用 Google Chrome 复制 xcode,但都没有成功。

这是我目前的代码:

    public static void GetYoutubeSubscriptions2()
    {
        string url = "https://www.youtube.com/results?search_query=" + Regex.Replace(Console.ReadLine(), @"\s+", "+");

        Console.WriteLine(url);

        HtmlWeb web = new HtmlWeb();
        HtmlDocument document = web.Load(url);
        //document.Save(path1);

        var htmlNodes = document.DocumentNode.SelectNodes(@"//*[@id=""section - list - 231763""]/li[3]/div/div[2]/div[3]/span/span[1]");

        foreach (var node in htmlNodes)
        {
            Console.WriteLine(node.InnerText);
        }

        Console.ReadLine();
    }

感谢任何帮助建议! :)

【问题讨论】:

    标签: c# html xcode select html-agility-pack


    【解决方案1】:

    这是你需要的:

    var htmlNodes = document.DocumentNode.Descendants("span").FirstOrDefault(_ => _.HasClass("yt-subscriber-count"));
    

    这是HasClass 扩展名

    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));
    }
    

    【讨论】:

    • 感谢您的回答!对于使用此解决方案的其他任何人,请确保将 HasClass 放在静态类中!
    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2014-03-26
    • 1970-01-01
    • 2011-03-04
    • 2011-04-18
    • 2011-07-16
    相关资源
    最近更新 更多