はじめに
題名の通りです。
スクレイピングをしていて、あっている気がするけど、なぜかNoMethodError
がでるといった場合に見ていただければいいかなと思います。
自分の環境でそのエラーを再現して見ました。次のようなエラー文がおそらくでていることでしょう。
Scraping.rb
scraping.rb:36:in `<main>`: undefined method `get_attribute` for #<Nokogiri::XML::NodeSet:0x007fa32bc11710> (NoMethodError)
get_attributeの部分は、もしかしたらinner_textや、textかもしれません。
解決策
~~.search() の部分を **~~.at()**に変更して見ましょう。
コードベースで見ると、
elements = page.search()
この部分を
↓↓↓↓↓
element = page.at()
こうです
単数・複数は、返り値が一つしかないか、複数ある可能性があるかによって変更しています。
searchは、 配列が返り値
として返ってくる為に、eachや**(配列オブジェクト)[0]**などを使って、配列の中の要素にアクセスしないといけないからです。
どんな時に起こるの?
自分がよくこのエラーに遭遇するときは、nextボタンを押すときです。
ついつい癖でsearchを使ってしまいます。
しばらくは同じエラーを出さないとは思うのですが、同じようにつまずいた人にとって、参考になれば嬉しいです。