选择已指定子节点的节点

时间:2015-11-25 10:14:16

标签: c# html-agility-pack

我必须写一个网络刮刀。我的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()

但它不起作用。

1 个答案:

答案 0 :(得分:1)

您的XPath表达式会在div个标记中选择具有指定类的a个标记。 但你想要的是带有a标签的div标签和指定的类。您应该使用此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标签