选择具有指定子节点的节点

本文关键字:子节点 节点 选择 | 更新日期: 2023-09-27 18:24:20

我必须写一个web scraper。我的php页面是:

<a href="Something.php">
<div class="SPECIFIEDCLASS" title="other something">
</div>
</a>

到目前为止,我写的是:

var diiv = doc.DocumentNode.SelectNodes("//a/div[@class='SPECIFIEDCLASS']");
var hrefLiist = diiv.Select(q => q.GetAttributeValue("href", "not found")).ToList()

但它不起作用。

选择具有指定子节点的节点

您的XPath表达式在a标记中选择具有指定类的div标记。但是您想要的是具有指定类的div标记的a标记。您应该使用以下XPath表达式:

var diiv = doc.DocumentNode.SelectNodes("//a[div[@class='SPECIFIEDCLASS']]");

更直观的解释:

您的XPath对每个a标记执行以下操作:

  • 获取a标签
  • 获取子div标记
  • 使用Class = "SPECIFIEDCLASS"选择div标记因此,div标记本身最终会被选中

正确的XPath应该这样做:

  • 获取a标签
  • 选择a标记,其中:
    div标记具有Class = "SPECIFIEDCLASS"此处选择a标记