質問編集履歴

4

追記③

2017/11/27 07:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -226,6 +226,50 @@
226
226
 
227
227
  ```
228
228
 
229
+ ##追記③
230
+
231
+ jsファイルを下記のように修正することでiframe内のhtmlを取得できるようになりましたので報告いたします。
232
+
233
+ ```javascript
234
+
235
+ console.log('Hello, world!');
236
+
237
+ var page = require('webpage').create();
238
+
239
+ var fs = require('fs');
240
+
241
+ page.open('http://www.kaigokensaku.mhlw.go.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13', function(status) {
242
+
243
+ if (status === 'success') {
244
+
245
+ page.switchToFrame(0);
246
+
247
+ // HTML を書き出し
248
+
249
+ var html = page.evaluate(function() {
250
+
251
+ return document.getElementsByClassName('contents')[0].innerHTML;
252
+
253
+ });
254
+
255
+ fs.write('resources\kaigokensaku.blade.php', html, 'w');
256
+
257
+ }
258
+
259
+ // exit しないと終了しない
260
+
261
+ phantom.exit();
262
+
263
+ });
264
+
265
+
266
+
267
+ ```
268
+
269
+ settimeoutは不必要で「page.switchToFrame(0);」を記載することで出力できました。
270
+
271
+ ご協力ありがとうございました。
272
+
229
273
 
230
274
 
231
275
  何卒よろしくお願いいたします。

3

追記②

2017/11/27 07:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -172,7 +172,7 @@
172
172
 
173
173
  ```
174
174
 
175
- ###追記 11/27
175
+ ###追記 11/27
176
176
 
177
177
  11/25の追記のコードの原因ですが、setTimeoutができていないことが原因と考えています。
178
178
 
@@ -180,4 +180,52 @@
180
180
 
181
181
 
182
182
 
183
+ ###追記 11/27②
184
+
185
+ 次のようにjsファイルのコードを変更した結果setTimeoutはじっこうされましたが、iframe内のコードは取得できませんでした。
186
+
187
+ ```
188
+
189
+ console.log('Hello, world!');
190
+
191
+ var page = require('webpage').create();
192
+
193
+ var fs = require('fs');
194
+
195
+ page.open('http://www.kaigokensaku.mhlw.go.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13', function(status) {
196
+
197
+ window.setTimeout(function(){
198
+
199
+ if (status === 'success') {
200
+
201
+ // HTML を書き出し
202
+
203
+ var html = page.evaluate(function() {
204
+
205
+ return document.getElementsByClassName('main')[0].innerHTML;
206
+
207
+ });
208
+
209
+ fs.write('resources\kaigokensaku.blade.php', html, 'w');
210
+
211
+ }
212
+
213
+ // exit しないと終了しない
214
+
215
+ phantom.exit();
216
+
217
+ }, 20000);
218
+
219
+
220
+
221
+ });
222
+
223
+
224
+
225
+
226
+
227
+ ```
228
+
229
+
230
+
183
231
  何卒よろしくお願いいたします。

2

追記11/27

2017/11/27 01:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -172,6 +172,12 @@
172
172
 
173
173
  ```
174
174
 
175
+ ###追記 11/27
176
+
177
+ 11/25の追記のコードの原因ですが、setTimeoutができていないことが原因と考えています。
178
+
179
+ ただ、なぜsetTimeoutできていないのかがわかっておりません。
180
+
175
181
 
176
182
 
177
183
  何卒よろしくお願いいたします。

1

追記11/25

2017/11/27 00:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -78,4 +78,100 @@
78
78
 
79
79
 
80
80
 
81
+ ###追記 11/25
82
+
83
+ 下記のようにコードを変更し、phantomjs.exeでcrawler.jsを実行し、実行結果をkaigokensaku.blade.phpに書き込む処理を行い、iframe内も取得しようとしておりますがうまく言っておりません。
84
+
85
+ 原因はどこにあるのでしょうか。
86
+
87
+ ```php
88
+
89
+ use JonnyW\PhantomJs\Client as PClient;
90
+
91
+
92
+
93
+
94
+
95
+ $page = 5;
96
+
97
+ // PhantomJs
98
+
99
+ $client = PClient::getInstance();
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+ for($i = 1; $i <= 47; $i++) {
108
+
109
+ $request = $client->getMessageFactory()->createRequest();
110
+
111
+ if(strlen($i) === 1){
112
+
113
+ $prefId = '0'.$i;
114
+
115
+ } else {
116
+
117
+ $prefId = $i;
118
+
119
+ }
120
+
121
+
122
+
123
+ $pNum = $page - 5;
124
+
125
+ $projectListUrl = 'http://www.kaigokensaku.mhlw.go.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13&OriPrefCd=13&method=pager&p_sort_name=47&p_order_name=1&p_count='.$page.'&p_offset='.$pNum;
126
+
127
+ $client->isLazy(); rendering
128
+
129
+ $request = $client->getMessageFactory()->createRequest();
130
+
131
+ $request->setTimeout(20000);
132
+
133
+ $cli = exec('C:\X_DRIVE\asp\home\laravel\vendor\bin\phantomjs.exe C:\X_DRIVE\asp\home\laravel\public\js\crawler.js '.$projectListUrl);
134
+
135
+ var_dump($cli);dd();
136
+
137
+ }
138
+
139
+ ```
140
+
141
+ ```javascript
142
+
143
+ console.log('Hello, world!');
144
+
145
+ var page = require('webpage').create();
146
+
147
+ var fs = require('fs');
148
+
149
+ page.open('http://www.kaigokensaku.mhlw.go.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13', function(status) {
150
+
151
+ if (status === 'success') {
152
+
153
+ // HTML を書き出し
154
+
155
+ var html = page.evaluate(function() {
156
+
157
+ return document.getElementsByClassName('main')[0].innerHTML;
158
+
159
+ });
160
+
161
+ fs.write('resources\kaigokensaku.blade.php', html, 'w');
162
+
163
+ }
164
+
165
+ // exit しないと終了しない
166
+
167
+ phantom.exit();
168
+
169
+ });
170
+
171
+
172
+
173
+ ```
174
+
175
+
176
+
81
177
  何卒よろしくお願いいたします。