通过PHP-PhantomJS将脚本传递给PhantomJS的正确方法?

时间:2017-03-03 21:39:59

标签: web-scraping phantomjs php-phantomjs

我正在学习PhantomJS和PHP-PhantomJS。我想将脚本传递给PhantomJS。

目前我正在尝试这个:

   $client->getEngine()->addOption('/Applications/myWebApp/js/phantomtest.js');
    $request = $client->getMessageFactory()->createRequest('http://www.jonnyw.me/', 'GET');

    $response = $client->getMessageFactory()->createResponse();
    $client->send($request, $response);
    if ($response->getStatus() === 200) {
        echo $response->getContent();
    }

我在调用$response后收到一个空$client->send($request, $response)个对象。

Here's the contents of my test script ('phantomtest.js'):

var page = require('webpage').create();
page.open('http://www.jonnyw.me', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('example.png');
  }
  phantom.exit();
});

1 个答案:

答案 0 :(得分:1)

我认为这必须是文档中的相关页面:http://jonnnnyw.github.io/php-phantomjs/4.0/4-custom-scripts/

以下代码正在运行:

在PHP中:

a

在proc文件中 $location = '/Applications/myWebApp/js/'; $serviceContainer = ServiceContainer::getInstance(); $procedureLoader = $serviceContainer->get('procedure_loader_factory') ->createProcedureLoader($location); $client->getProcedureLoader()->addLoader($procedureLoader); $request = $client->getMessageFactory()->createRequest(); $client->setProcedure('phantomJStest'); $response = $client->getMessageFactory()->createResponse(); $client->send($request, $response); if (($response->getStatus() === 200) || ($response->getStatus() == 'success')){ // Dump the requested page content echo $response->getContent(); }

phantomJStest.proc