質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

1869閲覧

ruby webスクレイピングにてSyntaxError

LukeFukuda

総合スコア81

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/03/08 09:09

編集2022/01/12 10:55

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NCC1701

2016/03/08 10:12

from :/Users/ファイル場所/:in `<main>' でエラー発生の行数が出てるはずです。 こちらではエラーの再現ができませんでした。 ruby 2.0.0p645,mechanize (2.7.3)
LukeFukuda

2016/03/08 11:35

atomでは表示されていません
NCC1701

2016/03/08 14:58

エラーが発生した行はわかりますか?それがわからないと,原因究明が難しいです。
LukeFukuda

2016/03/09 08:39 編集

よく見たら表示されていました。...:rb:ここに行数が表示されている:in
NCC1701

2016/03/09 09:56

うまく伝わらなかったようですみません。 エラーの発生箇所は,「ご自身が作ったコード上」でのことです。 例えば 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行目というようにエラーログからわかるのですが。
LukeFukuda

2016/03/09 10:05 編集

2行目のrequire 'mechanize'です。ファイル場所を消すときに同時に消してしまったようです。
guest

回答1

0

agent.user_agent_alias = 'Mac Safari'

試しに上の行をコメントアウトしてユーザーエージェントを設定しないで実行してみてください。

投稿2016/03/09 09:57

NCC1701

総合スコア1680

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LukeFukuda

2016/03/09 10:15 編集

設定しないで実行してもエラーがでます。 エラー箇所は agent.user_agent_alias = 'Windows IE 9' require 'net/http' require 'net/http/digest_auth' RUBYGEMS_ACTIVATION_MONITOR.enter が新たに追加されました。
NCC1701

2016/03/09 10:19

mechanizeが正しくインストールされていない可能性があります。 アップデートするか,再インストール(gem uninstall後gem install)してみてください。
LukeFukuda

2016/03/09 10:48 編集

gem uninstall mechanizeを実行すると、 :/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/site_ruby/2.2.0/rubygems/command_manager.rb:97:in `initialize' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/command_manager.rb:75:in `new' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/command_manager.rb:75:in `instance' from :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/gem_runner.rb:42:in `run' from :/Ruby/RailsInstaller/Ruby2.2.0/bin/gem:21:in `<main>' と表示されてしまいます。
NCC1701

2016/03/09 14:03

require 'mechanize' 1行だけのスクリプトを実行してみてください。これでエラーが出るなら,「webスクレイピング」の問題ではありません。 ruby(railsなど)のインストールなどに問題が生じています。問題の所在が,質問とかけ離れますので,この質問は閉じて,改めて,質問をしなおした方が良いでしょう。 その際には,rubyそのもののインソールの経緯やmechanizeを始めgemのインストール,バージョン等のみならず,実行環境も記載すると良いでしょう。
LukeFukuda

2016/03/09 14:14 編集

require 'mechanize'のみで実行したらC:/Users/ファイル場所:1:in `<main>': undefined method `requre' for main:Object (NoMethodError)と表示されました。
NCC1701

2016/03/09 14:21

typoしてます。requreではなくrequire 焦らずに。
LukeFukuda

2016/03/09 14:31

requireにしたら :/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require': D:/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 D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/net/protocol.rb:22:in `<top (required)>' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/net/http.rb:22:in `<top (required)>' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from D:/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 D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/mechanize-2.7.4/lib/mechanize.rb:5:in `<top (required)>' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:127:in `require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:127:in `rescue in require' from D:/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:40:in `require' from C:/Users/���/1:in `<main>' と表示されました。
NCC1701

2016/03/09 15:26

/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/timeout.rbの74行目でsyntax errorになっています。 このライブラリを改変することはないので,エラー解消方法はとても厄介になるはずです。 timeout.rbのソースコード全文を載せるなどしないと,無理かもしれません。
LukeFukuda

2016/03/10 06:50

agent.user_agent_alias = 'Windows IE 9' def timeout(sec, klass = nil) が/Ruby/RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/timeout.rbの74行目です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問