更新: ActiveResource も XML パーサーではありません。これは、ActiveRecord モデルと同様の方法でリモート リソースと対話できるようにする REST コンシューマーです。内部で XML パーサーを使用します (以下に示す ActiveSupport の XmlMini を使用していると想定しています)。
ActiveResource には、XML コンテンツの構造に関するいくつかの厳密な要件があり、別の Rails アプリケーションの REST API とやり取りするときに最適に機能します。HTML ページの一般的なスクリーン スクレイピングを行うことは意図されていません。そのためには、ノコギリを直接使用してください。
ActiveSupport は XML パーサーではなく、便利な Ruby メソッドとクラスのさまざまなコレクションです。ただし、多くの異なる XML パーサーのラッパーを提供し、一貫したインターフェイスを提供します。
どの XML パーサーが使用されているかを確認し、別の XML パーサーに切り替えることができます。でこれを試してくださいscript/console
。
ActiveSupport::XmlMini.backend # => ActiveSupport::XmlMini_REXML
ActiveSupport::XmlMini.backend = 'Nokogiri'
ActiveSupport::XmlMini.backend # => ActiveSupport::XmlMini_Nokogiri
# it will now use Nokogiri
ただし、厳密で有効なマークアップを前提とする Nokogiri の XML パーサーは引き続き使用されます。ほとんどの HTML ページはこの厳格な要件に適合しないため、ActiveSupport を使用する代わりに Nokogiri の HTML パーサーを直接使用することをお勧めします。
doc = Nokogiri::HTML(...)