Ruby言語でエラーがでて解決できないので、教えてください。


HTMLをクロールして必要データーをCSVに書き出しするプログラムのテストしてます。

http://memo-sasaki0605.blogspot.jp/2009/11/ruby.html 

上記URLで紹介されてるソースコードを参考にしましたが、

hpricot/parse.rb:14:in 'parse':wrong number of arguments(3 for 2) (ArgumentError)
mechanize/page.rb:120:in 'block in parser'
mechanize/page.rb:119:in 'reverse_each'
mechanize/page.rb:119:in 'parser'
mechanize/page.rb:328:in 'block in links'
mechanize/page.rb:327:in 'map'
mechanize/page.rb:327:in 'links'

7つのエラーがでて解決できません。

環境はWin7 
Ruby on Rails 1.9 (ruby 1.9.3p194)
gems 1.9.1
mechanize 2.5.1

また書き出しにCSVファイルから直接SQLServer へ書き込みに変更したいのですが、参考コード教えていただけますか。
SqlServerには接続できています。

宜しくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/09/16 07:19:11
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:gizmo5 No.2

回答回数504ベストアンサー獲得回数141

ポイント250pt

現在インストールしている
バージョンは

ruby 1.9.3p194

Rails 3.2.8

失礼しました。

もちょっと近そうなやつを見つけました。
http://homepage2.nifty.com/takaaki024/tips/programs/ruby/ruby.html

Q. 次のようなエラーが出るようになった
> /usr/lib/ruby/gems/1.9.1/gems/hpricot-0.8.5/lib/hpricot/parse.rb:14:in `parse': wrong number of arguments (3 for 2) (ArgumentError)

A.
次のように hpricot を強制していたのだが、それをやめたら出なくなった。

require 'hpricot'
WWW::Mechanize.html_parser = Hpricot


多分、原因は、

# v0.9 ぐらいからバックエンド? が Hpricot から Nokogiri というのに変わったので

ということだと思います。

その他の回答1件)

id:gizmo5 No.1

回答回数504ベストアンサー獲得回数141

ポイント250pt

質問に

Ruby on Rails 1.9

と書かれているのは、Ruby on Rails のバージョンではなく、Ruby のバージョンだと思いますが、

http://mechanize.rubyforge.org/index.html

Dependencies

  • ruby 1.8.7, 1.9.2, or 1.9.3
  • nokogiri

とありますから、1.9.2 か 1.9.3 にあげる必要があると思います。

ちなみにエラーはひとつだけで、どこでエラーが出ているかをしめす行が複数あるだけです。

id:yato12

現在インストールしている

バージョンは

ruby 1.9.3p194

Rails 3.2.8

gem 1.8.24 です。

id:yato12

質問文を編集しました。詳細はこちら

id:gizmo5 No.2

回答回数504ベストアンサー獲得回数141ここでベストアンサー

ポイント250pt

現在インストールしている
バージョンは

ruby 1.9.3p194

Rails 3.2.8

失礼しました。

もちょっと近そうなやつを見つけました。
http://homepage2.nifty.com/takaaki024/tips/programs/ruby/ruby.html

Q. 次のようなエラーが出るようになった
> /usr/lib/ruby/gems/1.9.1/gems/hpricot-0.8.5/lib/hpricot/parse.rb:14:in `parse': wrong number of arguments (3 for 2) (ArgumentError)

A.
次のように hpricot を強制していたのだが、それをやめたら出なくなった。

require 'hpricot'
WWW::Mechanize.html_parser = Hpricot


多分、原因は、

# v0.9 ぐらいからバックエンド? が Hpricot から Nokogiri というのに変わったので

ということだと思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません