C# & HTML 敏捷包 - 返回空值
C# & HTML Agility Pack - Returning Null
我想制作一个控制台应用程序,当我输入他们的频道时,returns 他们有多少订阅者。我目前从 Console.ReadLine() 下载搜索页面 html。此 returns 一个 html 页面成功,因为我添加了一个 .Save 以查看下载是否有任何输出。但是,当使用 xcode 抓取 html 时,它 returns 为空。我已经尝试过多次使用 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();
}
如有任何帮助建议,我们将不胜感激! :)
这就是你需要的:
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));
}
我想制作一个控制台应用程序,当我输入他们的频道时,returns 他们有多少订阅者。我目前从 Console.ReadLine() 下载搜索页面 html。此 returns 一个 html 页面成功,因为我添加了一个 .Save 以查看下载是否有任何输出。但是,当使用 xcode 抓取 html 时,它 returns 为空。我已经尝试过多次使用 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();
}
如有任何帮助建议,我们将不胜感激! :)
这就是你需要的:
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));
}