如何选择后代节点具有属性的节点

How to select node where descendant node has attribute

提问人:Greg Gum 提问时间:6/14/2023 更新时间:6/14/2023 访问量:24

问:

我正在解析一封 html 电子邮件。我需要从以下html中获取href属性:

 <a href="https://sample.com/us/en/suv-rental/united-states/orlando-fl/jeep/grand-cherokee/12345">
     <img class="m_3371787045960899181vehicle-image" width="360" height="216" src="https://images.sample.com/media/vehicle/images/12345.620x372.jpg" alt="Jeep Grand Cherokee" title="Jeep Grand Cherokee">
 </a>

选择它的唯一方法是找到具有图像的图像,该图像具有包含“https://images.sample.com”的 srca

我需要的是:https://sample.com/us/en/suv-rental/united-states/orlando-fl/jeep/grand-cherokee/12345

我正在努力让它工作。这是我目前所拥有的:

 HtmlNode vehicleNode = document.DocumentNode.SelectNodes("//a").Where(x => x.DescendantNodes.Attributes["src"].Value.Contains("images.sample.com")).First();

但这并不能编译,因为您不能使用,但我找不到正确的方法来执行此操作。x.DescendantNodes...

那么如何选择使用递减节点属性呢?

C# XPath HTML 敏捷包

评论


答:

1赞 Martin Honnen 6/14/2023 #1

看来,就 XPath 而言,您可以使用 .//a[img/@src[starts-with(., 'https://images.sample.com')]]

评论

0赞 Greg Gum 6/15/2023
这很完美。