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

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

ただいまの
回答率

90.49%

  • JavaScript

    20903questions

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

  • Node.js

    2418questions

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

  • Webサーバー

    504questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 199

to2836

score 4

目標としていること

Node.jsでサーバーを構築しphantomjs, casperjs, spookyを利用してウェブクローリングしたデータをDBに保存させたいです。

環境

Windows10

やってみたこと

phantomjs, casperjsの設置は以下のように行いました。

npm install -g phantomjs casperjs


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

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

npm install spooky


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

try {
    var Spooky = require('spooky');

} catch (e) {

   var Spooky = require('../lib/spooky');
}

var spooky = new Spooky({
    child: {

        transport: 'http'
    },
    casper: {
        logLevel: 'info',
        verbose: true
    }},

    function (err) {

        if (err) {
            var e=new Error('Fail');
            e.details=err;
            throw e;

        }

        spooky.on('error',function(e){console.log(e);});
        spooky.on('console',function(line){console.log(line);})

        spooky.start('https://www.naver.com/');
        spooky.then(function(){
            this.capture('naver.png');
        });
        spooky.runn();
    }
);


spooky.on('error', function (e, stack) {
    console.error(e);

    if (stack) {
        console.log(stack);
    }
});


の実行を以下のように

node hello.js


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

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


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

events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: spawn casperjs ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:229:19)
    at onErrorNT (internal/child_process.js:406:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:746:11)
    at startup (internal/bootstrap/node.js:238:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)
Emitted 'error' event at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12)
    at onErrorNT (internal/child_process.js:406:16)
    [... lines matching original stack trace ...]
    at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)


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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/23 07:42

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

    キャンセル

同じタグがついた質問を見る

  • JavaScript

    20903questions

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

  • Node.js

    2418questions

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

  • Webサーバー

    504questions

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