PHP PhantomJS 是一个灵活的 PHP 库,让PHP通过很简单的代码来操作 PhantomJS 无头浏览器加载页面。 让PHP加载的网页地址执行JS/页面截图/导出PDF.
他可以非常方便的实现这些功能:
- 使用无头浏览器PhantomJS加载请求
- 查看详细的响应数据,包括页面内容、标题、状态 代码等
- 处理重定向
- 查看JS控制台输出报错
- 查看详细的PhantomJS调试信息
- 保存页面的截图
- 将页面导出为PDF
- 设置浏览窗口大小
- 为PDF导出设置页眉页脚
- 指定截图位置x,y和宽高
- 延迟页面渲染(等待页面加载完成)
- 轻松构建和运行PhantomJS脚本
PHP PhantomJS 只要求 PHP 5.4.0 或以上即可。
基本用法
使用phantomjs发起一个请求非常简单:
<?php
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
/**
* @see JonnyW\PhantomJs\Http\Request
**/
$request = $client->getMessageFactory()->createRequest('http://phpreturn.com', 'GET');
/**
* @see JonnyW\PhantomJs\Http\Response
**/
$response = $client->getMessageFactory()->createResponse();
// Send the request
$client->send($request, $response);
if($response->getStatus() === 200) {
// Dump the requested page content
echo $response->getContent();
}
将页面截图并保存:
<?php
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
$width = 800;
$height = 600;
$top = 0;
$left = 0;
/**
* @see JonnyW\PhantomJs\Http\CaptureRequest
**/
$request = $client->getMessageFactory()->createCaptureRequest('http://phpreturn.com', 'GET');
$request->setOutputFile('/path/to/save/capture/file.jpg');
$request->setViewportSize($width, $height);
$request->setCaptureDimensions($width, $height, $top, $left);
/**
* @see JonnyW\PhantomJs\Http\Response
**/
$response = $client->getMessageFactory()->createResponse();
// Send the request
$client->send($request, $response);
将页面导出为PDF:
<?php
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
/**
* @see JonnyW\PhantomJs\Http\PdfRequest
**/
$request = $client->getMessageFactory()->createPdfRequest('http://phpreturn.com', 'GET');
$request->setOutputFile('/path/to/save/pdf/document.pdf');
$request->setFormat('A4');
$request->setOrientation('landscape');
$request->setMargin('1cm');
/**
* @see JonnyW\PhantomJs\Http\Response
**/
$response = $client->getMessageFactory()->createResponse();
// Send the request
$client->send($request, $response);
自定义一个超时时间:
默认情况下每个请求超时时间为5秒,我们可以自定义一个超时时间.
<?php
...
$timeout = 10000; // 10 秒
$request = $client->getMessageFactory()->createRequest('http://phpreturn.com');
$request->setTimeout($timeout);
...
定义延迟渲染:
有时候我们希望等到页面加载完才进行其他操作,此时只要简单地设置一个延迟时间即可.
<?php
...
$delay = 5; // 5 seconds
$request = $client->getMessageFactory()->createCaptureRequest('http://phpreturn.com');
$request->setDelay($delay);
...
设置等待所有请求加载完成才进行操作:
<?php
...
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
$client->isLazy(); // 设置所有请求完成才渲染页面
$request = $client->getMessageFactory()->createRequest();
$request->setTimeout(5000); // 设置一个超时时间
...
并且提供了一个简单地设置方法,支持phantomjs所有的配置项:
$client = Client::getInstance();
$client->getEngine()->addOption('--config=/path/to/config.json');
原文标题:[jonnyw/php-phantomjs]让PHP灵活易用的操作无头浏览器PhantomJS
原文地址:https://phpreturn.com/index/a62234c708f3fb.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。