选择具有指定子节点的节点
本文关键字:子节点 节点 选择 | 更新日期: 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标记