繁体   English   中英

爬取价格给出null,HtmlAgilityPack(C#)

[英]crawling price gives null , HtmlAgilityPack (C#)

我试图从一个带有 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 代码中传递,

在此处输入图像描述

顶部突出显示我的名字来源,第二个是我想要的“跨度”。 我想要 -4.70

在使用我的代码获取数据时,我有点困惑。 我尝试了一切。 我的 changeInPercent 属性是一个字符串。

它必须以某种方式成为代码......

select 单个属性/节点可能比您现在执行此操作的方式更容易:

如果您知道确切的 XPath 表达式到 select 您要查找的节点,那么您可以执行以下操作:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM