LoginSignup
0
0

Mechanize でXpathをメソッドチェーンしたら一回目のatで絞り込んだはずの範囲以外を二回目に検索していた

Last updated at Posted at 2023-11-01
qiita.rb
page.at("//node[@class='class']")
    .search(%(//*[text()="text"]))

みたいな文でスクレイピングしてたとき、どうしても参照範囲がおかしいのを検証して見つけたのが、基準が分からないけどatで指定した場所以外からもsearchする現象。
残念ながらgemを調べるほどの能力がないのでto_htmlしたものをnokogiriでパースした。

qiita.rb
node =page.at("//node[@class='class']").to_html

doc = Nokogiri::HTML(node)
doc.xpath('//*[text()="text"]').each do |link|
  puts link.content
end

NokogiriではなくてMechanizeに渡してもいいだろうがNokogiri単体のほうが軽いし良いだろう。
もっといいやり方募集

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0