首页 > 解决方案 > HTMLAgilityPack SelectSingleNode 在网页抓取天才时返回 null

问题描述

我正在尝试使用 HTMLAgilityPack 从天才那里抓取一些简单的歌词,有时一切都很好,但其他节点只是空的,我通过分析 Genius.com 的 html 知道每个歌词页面都有一个带有“歌词”类的 div " 但有时当我尝试使用 HTMLAgilityPack 选择该节点时,即使使用相同的歌曲,它也会返回 null:我尝试使用相同的 html 执行程序 10 次,实际加载它 2 次,而其他 8 次它没有。我知道我可以添加一个while循环来检查节点是否为空,但没有更好的方法吗?

这是代码:

            HtmlWeb web = new HtmlWeb();
            HtmlDocument doc = web.Load("https://genius.com/song");
            var node = doc.DocumentNode.SelectSingleNode("//div[@class='lyrics']");
            if (node != null)
            {
                string lyrics = node.InnerText.Trim();
                Console.WriteLine(lyrics);
            }
            Console.ReadLine();

标签: c#htmlhtml-agility-pack

解决方案


推荐阅读