我有一个网页,我不知道其 DOM 结构......但我知道我需要在该特定网页中找到的文本......所以为了获得它的 xpath,我要做的是:
doc = Nokogiri::HTML(webpage)
doc.traverse { |node|
if node.text?
if node.content == "my text"
path << node.path
end
end
}
puts path
现在假设我得到一个像 ::
html/body/div[4]/div[8]/div/div[38]/div/p/text()
这样以后当我再次访问该网页时,我可以这样做::
doc.xpath("#{path[0]}")
而不是每次我想要文本时都遍历整个 DOM 树
我想做一些进一步的处理,因为我需要知道上述 xpath 输出中的哪些元素节点具有与之关联的属性以及它们的属性值是什么。我将如何实现这一目标?我想要的输出是
#=> output desired
{ p => p_attr_value , div => div_attr_value , div[38] => div[38]_attr_value.....so on }
我在搜索“我的文本”所在的节点时没有遇到问题..我想拥有“我的文本”节点的完整 xpath..这就是为什么我做了整个遍历......现在在找到完整的 xpath 之后我想要与我在到达“我的文本”节点时遇到的每个元素节点关联的属性
限制是 ::我无法使用 Web 浏览器中可用的任何开发人员工具
PS :: 我是 ruby 和 nokogiri 的新手。