• 締切
  • 困ってます

Ruby初学者です。

  • 質問No.9603539
  • 閲覧数45
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 61% (81/132)

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でそのまま表示する方法)があれば教えてください。

回答 (全1件)

  • 回答No.1

ベストアンサー率 48% (4454/9220)

>Nokogiriだとputsを使うとDOM?html?がそのまま文字通り表示されてくれるのですが。。
>Capybaraだと何らかの変換を行うような処理がされてしまっているのですかね。(というかputsでコードを表示するような目的のものではない?)

いやいや、逆です。Nokogiriが、テキスト化するようなメソッドを定義しているので見て分かるように表示され、Capybaraでは定義していないから、そのまま出てきます。

Capybaraは使ったことないですが、textメソッドで、innerHTMLを取得できるようですよ。
お礼コメント
ont_rt

お礼率 61% (81/132)

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

兎に角、textメソッドを使ってみたいと思います。ありがとうございます
投稿日時:2019/04/05 09:34
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ