質問編集履歴

2

質問内容の変更

2020/10/06 09:19

投稿

Kanade_JoinT
Kanade_JoinT

スコア4

test CHANGED
@@ -1 +1 @@
1
- 【Rails】スクレイピング結果ビュー出力したい
1
+ 【Rails】seleniumによるスクレイピングで取得した情報画面表示させたい
test CHANGED
@@ -1,14 +1,26 @@
1
1
  ### 前提・実現したいこと
2
+
3
+ ・seleniumを用いたスクレイピングによってサイト記事の文字数を取得し、取得結果を画面に表示させたい。
4
+
5
+ ・controllerファイルに記述するのは好ましくないということで、modelファイルに記述することにした。
6
+
7
+ ・Formオブジェクトを用いて表示させようとしているが、うまくいかない。
2
8
 
3
9
 
4
10
 
5
- スクレイピングいた簡易的なアプリを作っており、ブラウザ(ローカル)にスクレイピングで取得したデータを表示させたいと思っております。
11
+ どのように変更すればいのかご教授いだけますと幸いです
6
12
 
7
- ただ、そのためにcontroller.rbに記述したスクレイピングコードをmodel.rbファイルに記述直したつもりなのでが、うまくいきません
13
+ どうかよろくお願いいたしす。
8
14
 
9
15
 
10
16
 
17
+ ### 発生している問題・エラーメッセージ
18
+
19
+
20
+
11
- ※該当ソースコードの状の挙動は確認済みで
21
+ 以下画像のように、IDだけが表示されているです
22
+
23
+ ![イメージ説明](3b4f54d854ab2551095a8487c6b7c9d7.png)
12
24
 
13
25
 
14
26
 
@@ -32,7 +44,65 @@
32
44
 
33
45
  def show
34
46
 
47
+ @affiliate_keyword = KeywordForm.new
48
+
49
+ end
50
+
51
+
52
+
53
+ def create
54
+
55
+ @affiliate = KeywordForm.new(affiliate_params)
56
+
57
+ @affiliate.save
58
+
59
+ redirect_to affiliate_path(@affiliate.keyword)
60
+
61
+ end
62
+
63
+
64
+
65
+ private
66
+
67
+ def affiliate_params
68
+
69
+ params.require(:affiliate).permit(:keyword)
70
+
71
+ end
72
+
73
+ end
74
+
75
+ ```
76
+
77
+
78
+
79
+ ↓model(Formオブジェクト)
80
+
81
+ ```ruby
82
+
83
+ require "selenium-webdriver"
84
+
85
+ require 'pry'
86
+
87
+
88
+
89
+ class KeywordForm
90
+
91
+ include ActiveModel::Model
92
+
93
+
94
+
95
+ attr_accessor :keyword
96
+
97
+
98
+
99
+ def save
100
+
101
+ Affiliate.create(keyword: keyword)
102
+
103
+
104
+
35
- affiliate_keyword = Affiliate.find(params[:id]).keyword
105
+ affiliate_keyword = Affiliate.new(keyword: keyword).keyword
36
106
 
37
107
  driver = Selenium::WebDriver.for :chrome
38
108
 
@@ -56,169 +126,7 @@
56
126
 
57
127
 
58
128
 
59
- content = driver.find_element(:css, "article")
129
+ content = driver.find_element(:css, "body")
60
-
61
- @affiliate_keyword = content.text.length
62
-
63
- driver.quit
64
-
65
- end
66
-
67
-
68
-
69
- def create
70
-
71
- @affiliate = Affiliate.new(affiliate_params)
72
-
73
- @affiliate.save
74
-
75
- redirect_to affiliate_path(@affiliate)
76
-
77
- end
78
-
79
-
80
-
81
- private
82
-
83
- def affiliate_params
84
-
85
- params.require(:affiliate).permit(:keyword)
86
-
87
- end
88
-
89
- end
90
-
91
- ```
92
-
93
-
94
-
95
- ↓model
96
-
97
- ```ruby
98
-
99
- class AffiliateKeyword
100
-
101
- end
102
-
103
- ```
104
-
105
-
106
-
107
- ### 発生している問題・エラーメッセージ
108
-
109
-
110
-
111
- 以下の画像のように、IDだけが表示されている状況です。
112
-
113
- ![イメージ説明](3b4f54d854ab2551095a8487c6b7c9d7.png)
114
-
115
-
116
-
117
- ### 試したこと
118
-
119
-
120
-
121
- 以下のようにコードを記述したのですが、どうもうまく反映されないので、どうかご教授いただけますと幸いです。
122
-
123
- よろしくお願いいたします。
124
-
125
-
126
-
127
- ↓controller
128
-
129
- ```ruby
130
-
131
- class AffiliatesController < ApplicationController
132
-
133
- def index
134
-
135
- @affiliate = Affiliate.new
136
-
137
- end
138
-
139
-
140
-
141
- def show
142
-
143
- @affiliate_keyword = AffiliateKeyword.new(params[:keyword])
144
-
145
- end
146
-
147
-
148
-
149
- def create
150
-
151
- @affiliate = Affiliate.new(affiliate_params)
152
-
153
- @affiliate.save
154
-
155
- redirect_to affiliate_path(@affiliate)
156
-
157
- end
158
-
159
-
160
-
161
- private
162
-
163
- def affiliate_params
164
-
165
- params.require(:affiliate).permit(:keyword)
166
-
167
- end
168
-
169
- end
170
-
171
- ```
172
-
173
-
174
-
175
- ↓model
176
-
177
- ```ruby
178
-
179
- require "selenium-webdriver"
180
-
181
- require 'pry'
182
-
183
-
184
-
185
- class AffiliateKeyword
186
-
187
- include ActiveModel::Model
188
-
189
-
190
-
191
- attr_accessor :keyword
192
-
193
-
194
-
195
- def affiliate_info
196
-
197
- affiliate_keyword = Affiliate.find(params[:id]).keyword
198
-
199
- driver = Selenium::WebDriver.for :chrome
200
-
201
-
202
-
203
- driver.navigate.to "https://www.google.co.jp/"
204
-
205
- inputElement = driver.find_element(:name, 'q')
206
-
207
- inputElement.send_keys affiliate_keyword
208
-
209
-
210
-
211
- inputElement.submit
212
-
213
-
214
-
215
- search = driver.find_element(:css, "div.rc a")
216
-
217
- search.click
218
-
219
-
220
-
221
- content = driver.find_element(:css, "article")
222
130
 
223
131
  @affiliate_keyword = content.text.length
224
132
 
@@ -243,13 +151,3 @@
243
151
  </div>
244
152
 
245
153
  ```
246
-
247
-
248
-
249
-
250
-
251
- ### 現段階のアプリの挙動
252
-
253
-
254
-
255
- ブラウザ(ローカル)に表示されている入力フォームにキーワードを入力後にボタンを押すと「selenium」が発動し、入力されたキーワードがGoogleで検索され、検索結果の一番上の記事をクリックしてページに進み、記事内の文字数を習得した後に閉じる...といった感じです。

1

「前提・実現したいこと」の項目を変更しました。

2020/10/06 09:19

投稿

Kanade_JoinT
Kanade_JoinT

スコア4

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,17 @@
2
2
 
3
3
 
4
4
 
5
+ スクレイピングを用いた簡易的なアプリを作っており、ブラウザ(ローカル)にスクレイピングで取得したデータを表示させたいと思っております。
6
+
5
- スクレイピングを用い簡易的なアプリを作っているですが、コントローラーに記述したスクレイピングコードをモデルファイルに記述し、コントローラーで使おうとているのですが、うまくいきません。
7
+ だ、そためcontroller.rbに記述したスクレイピングコードをmodel.rbファイルに記述したつもりなのですが、うまくいきません。
8
+
9
+
10
+
6
-
11
+ ※該当ソースコードの状態での挙動は確認済みです
7
-
8
-
12
+
13
+
14
+
9
- ### 該当ソースコード
15
+ ### 該当ソースコード
10
16
 
11
17
 
12
18