19

我想在本地主机上从 PHP 执行 PhantomJS。

任何人都可以解释如何从 PHP 执行 PhantomJS 以及我应该从 phantomjs.org 下载什么包?

4

3 回答 3

29
  • 下载PhantomJS 二进制文件,将其上传到某处并使其可执行(chmod +x
  • 如果您要制作屏幕截图,请设置fontconfig(这对我的配置非常具体,但目标是确保您的系统上至少有一些字体)
  • 在 PHP 中运行以下命令:
    $response = exec('/path/to/phantomjs myscript.js');
于 2013-11-26T11:46:11.060 回答
10

实际上有一个名为PHP PhantomJS的库,旨在让您更轻松!

PHP PhantomJS 是一个灵活的 PHP 库,通过 PhantomJS 无头浏览器加载页面并返回页面响应。它对于测试需要 javascript 支持并且还支持屏幕截图的网站非常方便。

完整的文档

功能列表:

  • 通过 PhantomJS 无头浏览器加载网页
  • 查看详细的响应数据,包括页面内容、标题、状态代码等。
  • 处理重定向
  • 查看 javascript 控制台错误
  • 查看详细的 PhantomJS 调试信息
  • 将屏幕截图保存到本地磁盘
  • 设置视口大小
  • 定义屏幕截图 x、y、宽度和高度参数
  • 延迟页面渲染指定时间
  • 使用命令行选项执行 PhantomJS
  • 轻松构建和运行自定义 PhantomJS 脚本

不过,请确保您的PhantomJS版本与您的PHP PhantomJS版本兼容:

请注意:这个库的 4.0 版目前正在等待 PhantomJS 2.0 未解决的问题。

于 2015-07-29T18:29:31.017 回答
3

我最近发布了一个让 PHP 访问浏览器的项目。在这里获取:https ://github.com/merlinthemagic/MTS 。在底层它依赖于 PhantomJS。

下载和设置后,您只需使用以下代码:

$myUrl          = "http://www.example.com";
$windowObj      = \MTS\Factories::getDevices()->getLocalHost()->getBrowser('phantomjs')->getNewWindow($myUrl);

//now you can either retrive the DOM and parse it, like this:
$domData    = $windowObj->getDom();

//or take screen shots
$imageData    = $windowObj->screenshot();

//or use the mouse to click buttons:
$windowObj->mouseEventOnElement("[id=searchInput]", 'leftclick');

//or type with the keyboard :
$windowObj->sendKeyPresses("my search words");

//or load and execute custom javascript, fill forms etc, etc.
于 2016-06-11T17:56:13.313 回答