[英]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.