Ruby: スクレイピングで No method Errorが出たあなたに
はじめに
題名の通りです。
スクレイピングをしていて、あっている気がするけど、なぜかNoMethodError
がでるといった場合に見ていただければいいかなと思います。
自分の環境でそのエラーを再現して見ました。次のようなエラー文がおそらくでていることでしょう。
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を使ってしまいます。
しばらくは同じエラーを出さないとは思うのですが、同じようにつまずいた人にとって、参考になれば嬉しいです。
Author And Source
この問題について(Ruby: スクレイピングで No method Errorが出たあなたに), 我々は、より多くの情報をここで見つけました https://qiita.com/Atsuyoshi-N/items/ebb3e382daee5f02f1f1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .