Pass parameter from php to casperjs/phantomjs

孤者浪人 提交于 2019-11-30 16:04:50

问题


Edit: I answered my own question, see edit below.

ORIGINAL: I have phantomjs and casperjs installed on my web server and they both run fine. The script I am planning on creating relise on a user input from my website, which is then passed on to the casperjs script. After fiddling around a bit, I noticed that I am stuck on the very basic task of the user input. How would pass the variable from php to casperjs?

Please note, the following are just test scripts.

My php script

$user_input = $_POST['user_input'];

putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs");
exec('/usr/local/bin/casperjs hello.js 2>&1',$output);
print_r($output);

hello.js

var user_input = "http://example.com/";
var casper = require('casper').create({
  verbose: true,
  logLevel: 'error',
  pageSettings: {
    loadImages: false,
    loadPlugins: false
  }
});

casper.start(user_input, function() {
    this.echo(this.getTitle());
});

casper.run();

So how would I pass the $user_input to the hello.js. My goal is that the user can input a url which is then being scraped.


回答1:


I found the answer myself.

It seems phantomjs and casperjs support command line arguments http://phantomjs.org/api/system/property/args.html

My script now looks like this.

test.php

$user_input = $_POST['user_input'];

putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs");
exec('/usr/local/bin/casperjs hello.js $user_input 2>&1',$output);

print_r($output);

hello.js

var system = require('system');
var args = system.args;
var address = args[4]; //In my case 4 was the argument for $user_input, yours might be different, depending on your server setup.

var casper = require('casper').create({
  verbose: true,
  logLevel: 'error',
  pageSettings: {
    loadImages: false,
    loadPlugins: false
  }
});

casper.start(address, function() {
    this.echo(this.getTitle());
});

casper.run();


来源:https://stackoverflow.com/questions/23141628/pass-parameter-from-php-to-casperjs-phantomjs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!