Rubyによるクローラー開発技法のサンプルプログラムが動かない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 3,570

dlrowolleh

score 118

前提・実現したいこと→プログラムを動作させたい

Rubyによるクローラー開発技法
を参考にUbuntu15.10環境でプログラムを作成しています。
プログラムは一字一句写し間違えていないはずなのですが、
実行しようとしたところ、エラーが発生しました。

試したこと

$ ruby login.rb 
DEPRECATED: #default_wait_time= is deprecated, please use #default_max_wait_time= instead
/home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/firefox.rb:58:in `driver_path':         Unable to find Mozilla geckodriver. Please download the server from        https://github.com/mozilla/geckodriver/releases and place it        somewhere on your PATH. More info at https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver. (Selenium::WebDriver::Error::WebDriverError)
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/firefox/w3c_bridge.rb:30:in `initialize'
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/common/driver.rb:49:in `new'
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver/common/driver.rb:49:in `for'
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.0.0/lib/selenium/webdriver.rb:82:in `for'
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/selenium/driver.rb:20:in `browser'
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/selenium/driver.rb:53:in `visit'
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/session.rb:240:in `visit'
    from /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/capybara-2.10.1/lib/capybara/dsl.rb:52:in `block (2 levels) in <module:DSL>'
    from login.rb:15:in `login'
    from login.rb:26:in `<main>'


課題に対してアプローチしたことを記載してください

該当のソースコード

# -*- coding: utf-8 -*-
require 'capybara'
require 'capybara/dsl'
require 'selenium-webdriver'

Capybara.current_driver = :selenium
Capybara.app_host = "https://affiliate.amazon.co.jp/"
Capybara.default_wait_time = 5

module Crawler
    class Amazon
        include Capybara::DSL

        def login
            visit('')
            fill_in "username",
            :with => 'YOUR_AMAZON_USER_ID'
            fill_in "password",
            :with => 'YOUR_AMAZON_PASSWORD'
            click_button "$B%5%$%s%$%s(B"
        end
    end
end

crawler = Crawler::Amazon.new
crawler.login

補足情報(言語/FW/ツール等のバージョンなど)

$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
$ gem -v
2.4.5.1
$ gem list

*** LOCAL GEMS ***

addressable (2.4.0)
bigdecimal (1.2.6)
capybara (2.10.1)
childprocess (0.5.9)
cliver (0.3.2)
ffi (1.9.14)
io-console (0.4.3)
jar_wrapper (0.1.8)
json (1.8.1)
mime-types (3.1)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.4.3)
nokogiri (1.6.8.1)
poltergeist (1.11.0)
power_assert (0.2.2)
psych (2.0.8)
rack (2.0.1)
rack-test (0.6.3)
rake (10.4.2)
rdoc (4.2.0)
rubyzip (1.2.0)
selenium (0.2.11)
selenium-webdriver (3.0.0)
test-unit (3.0.8)
websocket (1.2.3)
websocket-driver (0.6.4)
websocket-extensions (0.1.2)
xpath (2.0.0)
zip (2.0.2)
$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.5.1
  - RUBY VERSION: 2.2.4 (2015-12-16 patchlevel 230) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0
  - RUBY EXECUTABLE: /home/pc/.rbenv/versions/2.2.4/bin/ruby
  - EXECUTABLE DIRECTORY: /home/pc/.rbenv/versions/2.2.4/bin
  - SPEC CACHE DIRECTORY: /home/pc/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/pc/.rbenv/versions/2.2.4/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0
     - /home/pc/.gem/ruby/2.2.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/pc/.rbenv/versions/2.2.4/bin
     - /usr/lib/rbenv/libexec
     - /home/pc/.rbenv/plugins/ruby-build/bin
     - /home/pc/.rbenv/shims
     - /home/pc/.rbenv/bin
     - /home/pc/.rbenv/shims
     - /home/pc/.rbenv/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /usr/local/games


です。

追記

いろいろと調べているのですが、やり方がさっぱり分かりませんでした。
ひとまず、
https://developer.mozilla.org/ja/docs/Mozilla/QA/Marionette/WebDriver
Rubyの項目に書いてある、

$ gem install selenium-webdriver


は実行しています。
https://github.com/mozilla/geckodriver/releasesから
geckodriver-v0.11.1-linux64.tar.gzをダウンロードして、
ファイルマネージャから
右クリックで展開しました。
すると、
geckodriverという実行ファイルが出てきたので、
端末を開き、geckodriverがある場所で

$ ./geckodriver


と実行してみたところ、

1478251811427    geckodriver    INFO    Listening on 127.0.0.1:4444


と表示されます。

また、[新卒向け] Linux開発環境の基礎知識
を参考に

$ tar zxvf geckodriver-v0.11.1-linux64.tar.gz
geckodriver
$ ./configure
bash: ./configure: そのようなファイルやディレクトリはありません


となりました。
このあと、どのようにすればいいのか分かりませんでした。
また、どのような情報を提供すれば良いのかも分からず、困っております。
何卒よろしくお願いします。

となりました。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2016/11/04 20:56

    パスの通ったディレクトリに geckodriver を置いて、ruby login.rb を実行した結果はどうなりましたか?

    キャンセル

  • dlrowolleh

    2016/11/04 21:31

    ありがとうございます。firefoxが起動して、プログラムが動作しました。しかし、ログアウトするとやり直さないといけないようです。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2016/11/04 21:36

    あとは環境変数関連ですね。コメントしておきましたので、頑張ってください。

    キャンセル

回答 2

checkベストアンサー

+3

Please download the server from https://github.com/mozilla/geckodriver/releases

この説明のように geckodriver をダウンロードしたようですので、その次の

place it somewhere on your PATH.

を実行しましょう。Linux で bash だと思うのですが

set | grep PATH

を実行してみましょう。そうすると

PATH=/usr/local/sbin:/usr/local/heroku/bin:/Users/BSDmad/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

のように PATH 環境変数に設定されているパスが表示されると思います。

  1. 表示されたいずれかのディレクトリに geckodriver をコピー
  2. 自分の .bash_profile の PATH 変数に $HOME/bin を追加し、mkdir ~/bin を実行後、~bin/ 下に geckodriver をコピー

のいずれかをやってから、もう一度 ruby login.rb を実行してみて下さい。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/07 11:37

    訳も分からないクセして環境設定などをいじくり回してしまっていたようなので、
    別のUbuntu環境のパソコンでもやってみたいと思います。
    貴重なお時間を奪ってしまい、大変申し訳ありませんでした。
    心より謝罪及びお礼申し上げます。

    キャンセル

  • 2016/11/07 20:27

    おお、上手く行ってよかったですね! 私も説明がよろしくない所が多々ありましたので、お互い様ということで :)。

    なお、PATH 環境変数への設定はわかりやすくするつもりで /home/pc/bin を追記するように書いたのですが、実際には $HOME/bin と書くのが一般的です。今考えればこちらを先に教えるべきでした…

    コレに懲りず、また色々と質問してみて下さい。お役に立てるようであれば、また回答させて頂きます。

    キャンセル

  • 2016/11/08 16:14

    ご親切にご教授いただきましてありがとうございました!
    勉強になりました!
    本当に助かりました!

    キャンセル

+2

Unable to find Mozilla geckodriver.
Please download the server from https://github.com/mozilla/geckodriver/releases and place it somewhere on your PATH.
More info at https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver.

と出てますが、これは済という事でよろしいでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/04 17:01

    hana-da 様
    度々ご回答いただき、恐縮です。

    済ではないです。

    $ ruby login.rb を実行したときにエラーが出て、
    firefoxにgeckodriverを入れてくださいとの旨の内容だと思うのですが、
    どのようにすればいいのか分からず質問いたしました。

    キャンセル

  • 2016/11/04 17:55

    せめてどういう対応をとったのかぐらい書かないと「丸投げ」が付けられてしまいそうな気がします。今の質問内容は「エラーが出ました何とかしてください」ぐらいの情報量しかありません。

    キャンセル

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

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る