前提・実現したいこと
現在、「selenium」を用いた簡易的なスクレイピングアプリを作成しております。
「index」ページに設置したフォームにキーワードを入力してボタンをクリックすることで、Googleを通して検索結果に表示された一番上のサイトの記事文字数を「show」ページに表示させる仕組みです。
しかし、キーワードを入力してボタンをクリックすると、タイトルの通り「NameError in AffiliatesController#show」が表示され、ここ数日全く前に進めていない状況です。
ちなみにcontrollerに記述する方法ではうまくいくのですが、処理コードはmodelに記述することが望ましいということを知り記述し直すも、うまくいきません...。
以下にエラー画像および該当ファイルのコードを添付いたしますので、解決策をご教授していただけますでしょうか...。
お手数をおかけしますが、どうかよろしくお願いいたします。
該当のソースコード
↓controller
ruby
1class AffiliatesController < ApplicationController 2 def index 3 @affiliate = Affiliate.new 4 end 5 6 def show 7 @affiliate = Affiliate.keyword_info 8 end 9 10 def create 11 @affiliate = Affiliate.create(affiliate_params) 12 if @affiliate.save 13 redirect_to affiliate_path(@affiliate) 14 end 15 end 16 17 private 18 def affiliate_params 19 params.require(:affiliate).permit(:keyword) 20 end 21end
↓model
ruby
1class Affiliate < ApplicationRecord 2 3 def self.keyword_info 4 affiliate = Affiliate.find(params[:id]) 5 affiliate = affiliate.keyword 6 driver = Selenium::WebDriver.for :chrome 7 8 driver.navigate.to "https://www.google.co.jp/" 9 inputElement = driver.find_element(:name, 'q') 10 inputElement.send_keys affiliate 11 inputElement.submit 12 13 search = driver.find_element(:css, "div.rc a") 14 search.click 15 16 content = driver.find_element(:css, "body") 17 affiliate_info = content.text.length 18 driver.quit 19 return affiliate_info 20 end 21 22end
その他
もし他に必要なファイルや情報がございましたら、お申し付けください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/07 08:15