我试图从一个网站的股票数据与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属性是一个字符串。
一定是密码的问题。
1条答案
按热度按时间lmvvr0a81#
选择单个属性/节点可能比您现在使用的方法更容易:
如果您知道用于选择要查找的节点的确切XPath表达式,则可以执行以下操作:
获得正确的XPath表达式(上面的
//foo/bar
示例)是一个棘手的部分。但是使用浏览器的开发工具可以很容易地找到。您可以导航到所需的元素,然后复制它的XPath表达式-就这么简单!有关如何复制表达式的示例,请参见here。