• 締切済み

Ruby初学者です。

Ruby初学者です。 スクレイピングをしています。 Capybara + PhantomJSを用いているのですが(動的要素も取得したいため)、 session.visit "sample.com" variable = session.find_all(:xpath,"//a[contains(text(), "なんとか")]") puts variable といったコードを書くと #<Capybara::Result:0x0325d6honyaefccf0f8> という風な表示がされてしまいます。 上記の例に限らず、xpathで抽出したものをputs等を用いて表示しようとすると、上述のようにわけのわからん表示が出てきて困ります。 Nokogiriだとputsを使うとDOM?html?がそのまま文字通り表示されてくれるのですが。。 Capybaraだと何らかの変換を行うような処理がされてしまっているのですかね。(というかputsでコードを表示するような目的のものではない?) 解決方法(抽出したコードをputsでそのまま表示する方法)があれば教えてください。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

>Nokogiriだとputsを使うとDOM?html?がそのまま文字通り表示されてくれるのですが。。 >Capybaraだと何らかの変換を行うような処理がされてしまっているのですかね。(というかputsでコードを表示するような目的のものではない?) いやいや、逆です。Nokogiriが、テキスト化するようなメソッドを定義しているので見て分かるように表示され、Capybaraでは定義していないから、そのまま出てきます。 Capybaraは使ったことないですが、textメソッドで、innerHTMLを取得できるようですよ。

ont_rt
質問者

お礼

なるほどです。 なんか直観には反してますが…ブラウザ側でもnokogiriと同じようにテキスト化するメソッドを定義しているのであって、本当はcapybaraと同じようなResult:0x0325d6honyaefccf0f8みたいな表示なんでしょうか? 兎に角、textメソッドを使ってみたいと思います。ありがとうございます

関連するQ&A