質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

366閲覧

phantomjs, casperjs, spookyを利用してNode.jsサーバー側でクローリングする方法

to2836

総合スコア16

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/01/22 08:21

編集2019/01/22 08:24

目標としていること

Node.jsでサーバーを構築しphantomjs, casperjs, spookyを利用してウェブクローリングしたデータをDBに保存させたいです。
###環境
Windows10
###やってみたこと
phantomjs, casperjsの設置は以下のように行いました。

cmd

1npm install -g phantomjs casperjs

versionはphantomjs@2.1.7casperjs@1.1.0-beta3です。

spookyの設置はプロジェクトフォルダ内で以下のように行いました。

cmd

1npm install spooky

versionはspooky@0.2.5です。
設置後、試しにspookyモデュールのフォルダ内のexampleファイル(hello.js)

js

1try { 2 var Spooky = require('spooky'); 3 4} catch (e) { 5 6 var Spooky = require('../lib/spooky'); 7} 8 9var spooky = new Spooky({ 10 child: { 11 12 transport: 'http' 13 }, 14 casper: { 15 logLevel: 'info', 16 verbose: true 17 }}, 18 19 function (err) { 20 21 if (err) { 22 var e=new Error('Fail'); 23 e.details=err; 24 throw e; 25 26 } 27 28 spooky.on('error',function(e){console.log(e);}); 29 spooky.on('console',function(line){console.log(line);}) 30 31 spooky.start('https://www.naver.com/'); 32 spooky.then(function(){ 33 this.capture('naver.png'); 34 }); 35 spooky.runn(); 36 } 37); 38 39 40spooky.on('error', function (e, stack) { 41 console.error(e); 42 43 if (stack) { 44 console.log(stack); 45 } 46});

の実行を以下のように

node hello.js

してみたところ、エラーが出ました。

error

1{ Error: Child terminated with non-zero exit code 1 2 at Spooky.<anonymous> (D:\中間経路…\node_modules\spooky\lib\spooky.js:210:17) 3 at ChildProcess.emit (events.js:182:13) 4 at Process.ChildProcess._handle.onexit (internal/child_process.js:237:12) details: { code: 1, signal: null } }

環境変数にphantomjs.exeの経路を指定した結果エラーは無くなりましたが次は以下のようなエラーが出ました。

error

1events.js:167 2 throw er; // Unhandled 'error' event 3 ^ 4 5Error: spawn casperjs ENOENT 6 at Process.ChildProcess._handle.onexit (internal/child_process.js:229:19) 7 at onErrorNT (internal/child_process.js:406:16) 8 at process._tickCallback (internal/process/next_tick.js:63:19) 9 at Function.Module.runMain (internal/modules/cjs/loader.js:746:11) 10 at startup (internal/bootstrap/node.js:238:19) 11 at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3) 12Emitted 'error' event at: 13 at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12) 14 at onErrorNT (internal/child_process.js:406:16) 15 [... lines matching original stack trace ...] 16 at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3) 17

こちらも環境変数にcasperjs.exeの経路を指定した結果エラーは無くなりました。
しかしそれ以上エラーは吐き出さないのですがnode hello.jsで実行してもなにも起こらず終わってしまいます。解決方法をご存知な方がいらっしゃいましたら教えてください。お願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PhantomJSの開発が終了しリポジトリがアーカイブ化された - JSer.info

QtWebKitをベースにしたヘッドレスブラウザであるPhantomJSの開発が終了され、2018年6月2日にリポジトリもアーカイブされました。

ariya/phantomjs: Scriptable Headless Browser

というわけでそもそもオワコンです。
ですのでPhantomJS系のエラーを解決するための回答を書き込むのは無駄なので控えます。

どのマシンにもChromeやFirefoxは入ってると思うので、そちらのヘッドレスモードへ移行してみて下さいね。
(でも、ローカルのWindows10ならともかく本番環境で使うかもしれないLinuxのWebサーバで質問文の要望満たすの大変そうだけどChromeとかってインストールできるのかな?)
ちょっと懸念は残りますが頑張ってみてください。

投稿2019/01/22 08:28

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

to2836

2019/01/22 22:42

回答ありがとうございます!別の方法を探して見ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問