teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

追記③

2017/11/27 07:41

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -112,5 +112,27 @@
112
112
 
113
113
 
114
114
  ```
115
+ ##追記③
116
+ jsファイルを下記のように修正することでiframe内のhtmlを取得できるようになりましたので報告いたします。
117
+ ```javascript
118
+ console.log('Hello, world!');
119
+ var page = require('webpage').create();
120
+ var fs = require('fs');
121
+ page.open('http://www.kaigokensaku.mhlw.go.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13', function(status) {
122
+ if (status === 'success') {
123
+ page.switchToFrame(0);
124
+ // HTML を書き出し
125
+ var html = page.evaluate(function() {
126
+ return document.getElementsByClassName('contents')[0].innerHTML;
127
+ });
128
+ fs.write('resources\kaigokensaku.blade.php', html, 'w');
129
+ }
130
+ // exit しないと終了しない
131
+ phantom.exit();
132
+ });
115
133
 
134
+ ```
135
+ settimeoutは不必要で「page.switchToFrame(0);」を記載することで出力できました。
136
+ ご協力ありがとうございました。
137
+
116
138
  何卒よろしくお願いいたします。

3

追記②

2017/11/27 07:41

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -85,8 +85,32 @@
85
85
  });
86
86
 
87
87
  ```
88
- ###追記 11/27
88
+ ###追記 11/27
89
89
  11/25の追記のコードの原因ですが、setTimeoutができていないことが原因と考えています。
90
90
  ただ、なぜsetTimeoutできていないのかがわかっておりません。
91
91
 
92
+ ###追記 11/27②
93
+ 次のようにjsファイルのコードを変更した結果setTimeoutはじっこうされましたが、iframe内のコードは取得できませんでした。
94
+ ```
95
+ console.log('Hello, world!');
96
+ var page = require('webpage').create();
97
+ var fs = require('fs');
98
+ page.open('http://www.kaigokensaku.mhlw.go.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13', function(status) {
99
+ window.setTimeout(function(){
100
+ if (status === 'success') {
101
+ // HTML を書き出し
102
+ var html = page.evaluate(function() {
103
+ return document.getElementsByClassName('main')[0].innerHTML;
104
+ });
105
+ fs.write('resources\kaigokensaku.blade.php', html, 'w');
106
+ }
107
+ // exit しないと終了しない
108
+ phantom.exit();
109
+ }, 20000);
110
+
111
+ });
112
+
113
+
114
+ ```
115
+
92
116
  何卒よろしくお願いいたします。

2

追記11/27

2017/11/27 01:48

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -85,5 +85,8 @@
85
85
  });
86
86
 
87
87
  ```
88
+ ###追記 11/27
89
+ 11/25の追記のコードの原因ですが、setTimeoutができていないことが原因と考えています。
90
+ ただ、なぜsetTimeoutできていないのかがわかっておりません。
88
91
 
89
92
  何卒よろしくお願いいたします。

1

追記11/25

2017/11/27 00:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,52 @@
38
38
  $xml = simplexml_import_dom($dom);
39
39
  ```
40
40
 
41
+ ###追記 11/25
42
+ 下記のようにコードを変更し、phantomjs.exeでcrawler.jsを実行し、実行結果をkaigokensaku.blade.phpに書き込む処理を行い、iframe内も取得しようとしておりますがうまく言っておりません。
43
+ 原因はどこにあるのでしょうか。
44
+ ```php
45
+ use JonnyW\PhantomJs\Client as PClient;
46
+
47
+
48
+ $page = 5;
49
+ // PhantomJs
50
+ $client = PClient::getInstance();
51
+
52
+
53
+
54
+ for($i = 1; $i <= 47; $i++) {
55
+ $request = $client->getMessageFactory()->createRequest();
56
+ if(strlen($i) === 1){
57
+ $prefId = '0'.$i;
58
+ } else {
59
+ $prefId = $i;
60
+ }
61
+
62
+ $pNum = $page - 5;
63
+ $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;
64
+ $client->isLazy(); rendering
65
+ $request = $client->getMessageFactory()->createRequest();
66
+ $request->setTimeout(20000);
67
+ $cli = exec('C:\X_DRIVE\asp\home\laravel\vendor\bin\phantomjs.exe C:\X_DRIVE\asp\home\laravel\public\js\crawler.js '.$projectListUrl);
68
+ var_dump($cli);dd();
69
+ }
70
+ ```
71
+ ```javascript
72
+ console.log('Hello, world!');
73
+ var page = require('webpage').create();
74
+ var fs = require('fs');
75
+ page.open('http://www.kaigokensaku.mhlw.go.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13', function(status) {
76
+ if (status === 'success') {
77
+ // HTML を書き出し
78
+ var html = page.evaluate(function() {
79
+ return document.getElementsByClassName('main')[0].innerHTML;
80
+ });
81
+ fs.write('resources\kaigokensaku.blade.php', html, 'w');
82
+ }
83
+ // exit しないと終了しない
84
+ phantom.exit();
85
+ });
86
+
87
+ ```
88
+
41
89
  何卒よろしくお願いいたします。