كيفية استخدام كاسبيرجس في العقدة.شبيبة?

StackOverflow https://stackoverflow.com/questions/9459097

  •  13-11-2019
  •  | 
  •  

سؤال

وأود أن استخدام كاسبيرجس في عقدة.شبيبة.

لقد أشرت إلى عنوان ورل التالي لاستخدام كاسبيرجس في العقدة.شبيبة:

مع مساعدة من عناوين المواقع أعلاه كنت قد كتبت التعليمات البرمجية التالية:

//DISPLAY=:0 node test2.js
var phantom = require('phantom');
console.log('Hello, world!');
phantom.create(function (ph) {
    ph.casperPath = '/opt/libs/casperjs'
    ph.injectJs('/opt/libs/casperjs/bin/bootstrap.js');
    var casper = require('casper').create();
    casper.start('http://google.fr/');

    casper.thenEvaluate(function (term) {
        document.querySelector('input[name="q"]').setAttribute('value', term);
        document.querySelector('form[name="f"]').submit();
    }, {
        term: 'CasperJS'
    });

    casper.then(function () {
        // Click on 1st result link
        this.click('h3.r a');
    });

    casper.then(function () {
        console.log('clicked ok, new location is ' + this.getCurrentUrl());
    });

    casper.run();
});

عند تشغيل هذا الرمز ، حصلت على الخطأ التالي:

خطأ جي اس:

tz@tz-ubuntu:/opt/workspaces/TestPhantomjs$ DISPLAY=:0 node test2.js 
Hello, world!
Error: Cannot find module 'casper'
    at Function._resolveFilename (module.js:332:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:354:17)
    at require (module.js:370:17)
    at /opt/workspaces/TestPhantomjs/test2.js:6:14
    at Object.<anonymous> (/opt/workspaces/TestPhantomjs/node_modules/phantom/phantom.js:82:43)
    at EventEmitter.<anonymous> (/opt/workspaces/TestPhantomjs/node_modules/phantom/node_modules/dnode/index.js:215:30)
    at EventEmitter.emit (events.js:67:17)
    at handleMethods (/opt/workspaces/TestPhantomjs/node_modules/phantom/node_modules/dnode-protocol/index.js:138:14)
    at EventEmitter.handle (/opt/workspaces/TestPhantomjs/node_modules/phantom/node_modules/dnode-protocol/index.js:98:13)
phantom stdout: Unable to load casper environment: Error: Failed to resolve module fs, tried fs
هل كانت مفيدة؟

المحلول 2

https://groups.google.com/group/casperjs/browse_thread/thread/641e9e6dff50fb0a/e67aaef5ab4ec918?hl=zh-CN#e67aaef5ab4ec918

نيكولاس بيريولت
2012/2/27 天猪 蓝虫.:

أنا وان لاستخدام كاسبيرجس في نوديجس.و الحكام إلى: https://github.com/sgentle/phantomjs-node و http://casperjs.org/index.html#faq-executable

لا يمكنك تشغيل كاسبيرج بهذه الطريقة;كيوبكيت و في 8 لا يشتركان في نفس الشيء بيئة شبيبة (وحلقة الحدث) ، لذلك عقدة الخاص بك.سوف شبيبة التطبيق لن تكون قادرة على تحميل واستخدام وحدة كاسبيرجس.لديك لتشغيل البرنامج النصي كاسبيرجس الخاص بك بشكل منفصل باستخدام استدعاء عملية فرعية, مثل هذا واحد على جيثب.I لا تخطط لجعل كاسبيرجس متوافقة مع فانتومجس عقدة لأنه الاستخدامات alert()- المأجورون القذرة مقرها أنا لست سهلة مع.

في صحتك, -- نيكولاس بيريولت

نصائح أخرى

يمكنك استخدام spookyjs لدفع casperjs من العقدة.

كاسبيرجس يتضمن خادم ويب للتحدث إلى العالم الخارجي.عقدة (باستخدام request, superagent الخ) يمكن الآن التحدث إلى كاسبر عبر هتب.

في scraper.js:

#!/usr/bin/env casperjs

// I AM NOT NODEJS
// I AM CASPER JS
// I RUN IN QTWEBKIT, NOT V8

var casper = require('casper').create();
var server = require('webserver').create();
var ipAndPort = '127.0.0.1:8585';

server.listen(ipAndPort, function(request, response) {

    casper.start('https://connect.data.com/login');
    casper.userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36");
    casper.then(function(){
        // lots of code here, and a few more cassper.then()s
    });

    casper.run(function(){
        console.log('\n\nFinished')
        response.statusCode = 200;
        var body = JSON.stringify({
            phoneNumber: '1800-YOLO-SWAG'
        })

        response.write(body);
        response.close();
    });
});

يمكنك الآن تشغيل scraper.js كخادم ويب:

chmod +x scraper.js
./scraper.js

يجب عليك تشغيله كخدمة لينكس تماما كما تفعل مع التطبيق عقدة.

حل واحد (الذي عمل بالنسبة لي) هو البدء وإيقاف الخادم الخاص بك على أساس لكل اختبار.على سبيل المثال، لدي GuardaceticeTagCode التي تبدو: giveacodicetagpre.

واختبارات Casperjs الخاصة بي في runtests.coffee تبدو وكأنها: giveacodicetagpre.

يعني أساسا أن البرنامج النصي الخاص بك لا يمكن العثور على كاسبر؛هل راجعت المسار وتأكد من giveacodicetagpre.

و: giveacodicetagpre. يمكن الوصول إلى

من قبل مستخدم موقع الويب؟النظر في الموقع ربما غير المرجح. / POLT هو مسار UNIX، ولكن الموقع سوف يبحث في {websiterootpath} / opt.

قمت بإنشاء مجلد فرعي "Casperjs" في المجلد الجذر لموقع الويب الخاص بك ونسخ محتويات giveacodicetagpre.

إلى هناك. ثم قم بتغيير مساراتك من giveacodicetagpre.

إلى giveacodicetagpre.

حاولت تشغيل كاسبر بواسطة وظيفة عقدة كرون أيضا، ها هو الحل الخاص بي

في casper.js صدى ردكم: giveacodicetagpre.

استخدم Node-cmd في ملف العقدة Casper_Wrapper.js: giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top