googl1をwebスクレイピングしたいのですが
:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require': :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/timeout.rb:74: syntax error, unexpected keyword_def, expecting keyword_end (SyntaxError) ...ent_alias = 'Windows IE 9' def timeout(sec, klass = nil) ... ... ^ from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/net/protocol.rb:22:in `<top (required)>' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/net/http.rb:22:in `<top (required)>' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/net-http-digest_auth-1.4/lib/net/http/digest_auth.rb:4:in `<top (required)>' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/mechanize-2.7.4/lib/mechanize.rb:5:in `<top (required)>' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:127:in `require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:127:in `rescue in require' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:40:in `require' from :/Users/ファイル場所/:in:2 `<main>'
エラーの場所は上から
return gem_original_require(path)
agent.user_agent_alias = 'Windows IE 9' def
return gem_original_require(path)
require 'timeout'
return gem_original_require(path)
return gem_original_require(path)
return gem_original_require(path)
require 'robotex'
return gem_original_require(path)
return gem_original_require(path)
require 'anemone/core'
return gem_original_require(path)
return gem_original_require(path)
と表示されてしまいます。どうすればいいですか。コードは
下です。
ruby
1require 'rubygems' 2require 'mechanize' 3 4a = Mechanize.new { |agent| 5 agent.user_agent_alias = 'Mac Safari' 6} 7 8a.get('http://google.com/') do |page| 9 search_result = page.form_with(:name => 'gbqf') do |search| 10 search.q = 'Ruby' 11 end.submit 12 13 search_result.search(".//a[@class='l']").each_with_index.map do |link, i| 14 puts "#{i} #{link.content}" 15 end 16end 17 18
from :/Users/ファイル場所/:in `<main>'
でエラー発生の行数が出てるはずです。
こちらではエラーの再現ができませんでした。
ruby 2.0.0p645,mechanize (2.7.3)
atomでは表示されていません
エラーが発生した行はわかりますか?それがわからないと,原因究明が難しいです。
よく見たら表示されていました。...:rb:ここに行数が表示されている:in
うまく伝わらなかったようですみません。
エラーの発生箇所は,「ご自身が作ったコード上」でのことです。
例えば
test.rb:15:in `block (2 levels) in <main>': undefined method `q=' for nil:NilClass (NoMethodError)
from test.rb:13:in `<main>'
のようにtest.rbの(13行目から呼ばれている)15行目というようにエラーログからわかるのですが。
2行目のrequire 'mechanize'です。ファイル場所を消すときに同時に消してしまったようです。