我想从各种网站中提取信息。我正在使用HtmlAgilityPack和Linq来使用XML。到目前为止,我已经设法通过编写以下内容从网站中的单个节点中提取值:
var q = document.DocumentNode.DescendantNodes()
.Where(n => n.Name == "img" && n.Id == "GraphicalBoard001")
.FirstOrDefault();
但我真的对以“GraphicalBoard”开头的整个img集合感兴趣。我试过像:
var q2 = document.DocumentNode.DescendantNodes()
.Where(n => n.Name == "img" && n.Id.Contains("GraphicalBoard"))
.Select...
但似乎linq不喜欢Contains方法,因为我失去了intellisense中的Select选项。如何从“GraphicalBoard”中提取Id开头的所有img-tag?
答案 0 :(得分:1)
如何使用“GraphicalBoard”提取Id开头的所有img-tag?
你已经拥有它,只需停止拨打Where()
。 Where()
调用按满足谓词的项过滤集合。
虽然您应该编写它,以便过滤img
后代,而不是所有后代。
var query = doc.DocumentNode.Descendants("img")
.Where(img => img.Id.StartsWith("GraphicalBoard"));