CasperJS将数据传回PHP(CasperJS passing data back to PHP

2019-08-20 01:15发布

CasperJS被PHP使用称为exec()命令。 之后CasperJS不工作如检索网页的部分,怎么能检索到的数据被返回到PHP?

Answer 1:

您可以从标准输出输出重定向到一个数组。

在这个页面,它说,你可以这样做:

string exec ( string $command [, array &$output [, int &$return_var ]] )

它接着说:

如果输出参数存在,则该指定的数组将被填充来自指令输出的每一行。

因此,基本上可以做到EXEC('casperjs指挥这里,$ array_here);



Answer 2:

我认为最好的方式将数据从CasperJS如PHP运行CasperJS脚本作为服务转移到另一种语言。 由于CasperJS已被写入了PhantomJS,CasperJS可以使用PhantomJS称为猫鼬的嵌入式web服务器模块。

有关如何工作的嵌入式Web服务器的信息看这里

这里大约CasperJS脚本如何启动Web服务器的例子。

//define ip and port to web service
var ip_server = '127.0.0.1:8585';

//includes web server modules
var server = require('webserver').create();

//start web server
var service = server.listen(ip_server, function(request, response) {

    var links = [];
    var casper = require('casper').create();

    function getLinks() {
        var links = document.querySelectorAll('h3.r a');
        return Array.prototype.map.call(links, function(e) {
            return e.getAttribute('href')
        });
    }

    casper.start('http://google.fr/', function() {
        // search for 'casperjs' from google form
        this.fill('form[action="/search"]', { q: 'casperjs' }, true);
    });

    casper.then(function() {
        // aggregate results for the 'casperjs' search
        links = this.evaluate(getLinks);
        // now search for 'phantomjs' by filling the form again
        this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
    });

    casper.then(function() {
        // aggregate results for the 'phantomjs' search
        links = links.concat(this.evaluate(getLinks));
    });

    //
    casper.run(function() {
            response.statusCode = 200;
            //sends results as JSON object
            response.write(JSON.stringify(links, null, null));
            response.close();              
    });

});
console.log('Server running at http://' + ip_server+'/');


文章来源: CasperJS passing data back to PHP