前提・実現したいこと
HTML中の要素が判明(探し出せている)ときに、その要素を示すXPathをフルパスで取得したい。(またはCSSでのフルパスでもよい)
ruby
1irb > require 'nokogiri' 2irb > require 'open-uri' 3irb > doc = Nokogiri::HTML(open("https://www.yahoo.co.jp").read) 4irb > elem = doc.at("//input[@name='p']")
そういったことができるメソッドなりライブラリなりはあるでしょうか?
試したこと
irb > p = elem.ancestors.map{|i| i.name}.reverse.join("/") rib > p.delete_prefix!("document") irb > p += "/input" => "/html/body/div/div/header/section/div/form/fieldset/span/input"
これだと、section[1]
にならず、特定できない場合がでてくる。
例えば、
ruby
1doc.search("//input").each do |elem| 2 p = elem.... 3end
などのように、それぞれのinput
フィールドについてフルパスを得ようとしても同じパスになってしまう可能性がある(位置情報がない?)
補足情報(FW/ツールのバージョンなど)
ruby 2.7.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。