.net 爬行价格为空,HtmlAgilityPack(C#)

xkftehaa  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(134)

我试图从一个网站的股票数据与webcrawler作为一个爱好项目。我得到了工作的链接,我得到了股票的名称,但我不能得到价格...我不知道如何处理的html代码。这里是我的代码,

var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(html);

            var divs = htmlDocument.DocumentNode.Descendants("div").Where(n => n.GetAttributeValue("class", "").Equals("Flexbox__StyledFlexbox-sc-1ob4g1e-0 eYavUv Row__StyledRow-sc-1iamenj-0 foFHXj Rows__AlignedRow-sc-1udgki9-0 dnLFDN")).ToList();
            var stocks = new List<Stock>();

            foreach (var div in divs)
            { 
                var stock = new Stock()
                {
                    Name = div.Descendants("a").Where(a=>a.GetAttributeValue("class","").Equals("Link__StyledLink-sc-apj04t-0 foCaAq NameCell__StyledLink-sc-qgec4s-0 hZYbiE")).FirstOrDefault().InnerText,
                    changeInPercent = div.Descendants("span").Where((a)=>a.GetAttributeValue("class", "").Equals("Development__StyledDevelopment-sc-hnn1ri-0 kJLDzW")).FirstOrDefault()?.InnerText  
                };
                stocks.Add(stock);
            }

            foreach (var stock in stocks)
            {
                Console.WriteLine(stock.Name + " ");
                

            }

我得到了正确的名称,但我真的不知道如何获得ChangeInPercent...我将在下面的HTML代码过去,

顶部突出显示的是我从哪里得到这个名字的,第二个是我想要的“span”。
当我用代码获取数据时,我有点困惑。我尝试了所有方法。我的changeInPercent属性是一个字符串。
一定是密码的问题。

lmvvr0a8

lmvvr0a81#

选择单个属性/节点可能比您现在使用的方法更容易:
如果您知道用于选择要查找的节点的确切XPath表达式,则可以执行以下操作:

var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);

var changeInPercent = htmlDocument.DocumentNode
    .SelectSingleNode("//foo/bar")
    .InnerText;

获得正确的XPath表达式(上面的//foo/bar示例)是一个棘手的部分。但是使用浏览器的开发工具可以很容易地找到。您可以导航到所需的元素,然后复制它的XPath表达式-就这么简单!有关如何复制表达式的示例,请参见here

相关问题