【问题标题】:Find second div with same class查找具有相同类的第二个 div
【发布时间】:2015-09-18 13:19:01
【问题描述】:

试图在页面上找到具有相同类的第二个 div。我只在获取数据时检索第一个,不知道如何获取第二个或第三个等。

HtmlAgilityPack.HtmlDocument data = web.Load(URL);
var res = data.DocumentNode.SelectSingleNode("//div[@class='col-sm-5']");

另外我在开始时使用了两个斜线符号,我不知道为什么,但它起作用了。我见过很多不同的解决方案("/", "./" "//" ".//").有人可以解释一下区别吗?

提前致谢, xolo

【问题讨论】:

    标签: c# html-agility-pack


    【解决方案1】:

    试试这个命令:

    var res = data.DocumentNode.SelectNodes("//div[@class='col-sm-5']");
    

    这是单斜杠和双斜杠的区别:

    /

    1. 从文档节点开始选择
    2. 允许您创建“绝对”路径表达式
    3. 例如“/html/body/p”匹配所有段落元素

    //

    1. 在文档中的任意位置开始选择匹配
    2. 允许您创建“相对”路径表达式
    3. 例如“//p”匹配所有段落元素

    【讨论】:

    • 谢谢,但是现在我已经选择了该类的所有 div,如何只选择第二个,就像我对 var res = data.DocumentNode.SelectNodes("//table[2]"); 这样的表所做的那样,我似乎无法弄清楚它..就像var res = data.DocumentNode.SelectNodes("//div[@class='col-sm-5'][X]");??
    • SelectNodes 返回节点“HtmlNodeCollection”的集合。这是你的情况。所以要访问第二个节点,你可以简单地以 res[1] 的形式访问它。 1 因为第一个元素被寻址为 res[0] ;)
    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多