DOM構造がわからないWebページがあります...しかし、その特定のWebページで見つける必要があるテキストは知っています..だから、その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を見つけた後、私は「my text」ノードにたどり着くときに遭遇した各要素ノードに関連付けられた属性が必要です
制約は::Webブラウザで利用可能な開発者ツールを使用できません
PS :: ruby と nokogiri の初心者です。