【问题标题】:Get instance no of a tag in nokogiri在 nokogiri 中获取标签的实例编号
【发布时间】:2021-10-30 14:58:47
【问题描述】:

我想获得实例编号。一个标签,即 - 给定节点是否是给定标签的第一个、第二个或第三个等实例。

例如,如果我在一个节点上调用node.path,我会得到以下输出:

/html/head/base/link/body/div/br/form/hr/chapter[1]/section[1]/ul/li[1]/a

如何在section 旁边获得那个 1?

【问题讨论】:

  • 也请点赞

标签: ruby web-scraping nokogiri


【解决方案1】:
require 'nokogiri'

html_string=<<END
<html>
  <body>
    <div>
      <span></span>
      <span></span>
      <span></span>
      <span>
        <h1></h1>
      </span>
      <span></span>
      <span>
        <strong></strong>
      </span>
      <span></span>
      <span></span>
    </div>
  </body>
</html>
END
doc = Nokogiri::HTML(html_string)
h1 = doc.xpath("/html/body/div/span/h1")[0]
puts h1.path         # output => /html/body/div/span[4]/h1
puts h1.parent.xpath("preceding-sibling::*").size + 1         # output => 4

strong = doc.xpath("/html/body/div/span/strong")[0]
puts strong.path     # output => /html/body/div/span[6]/strong
puts strong.parent.xpath("preceding-sibling::*").size + 1     # output => 6

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2014-08-16
    • 2014-07-20
    • 2017-02-23
    相关资源
    最近更新 更多