情景:
我有一个目标网站,我需要抓取并截取个人帐户Feed的屏幕截图。
需要:
代码:
require 'vendor/autoload.php';
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
$client->getEngine()->setPath('C:\xampp\htdocs\phantomjs\bin\phantomjs.exe');
$client->getProcedureCompiler()->clearCache();
$client->isLazy();
$delay = 15; // 5 seconds
$width = 1366;
$height = 768;
$top = 0;
$left = 0;
$request = $client->getMessageFactory()->createCaptureRequest();
$response = $client->getMessageFactory()->createResponse();
$request->setDelay($delay);
$request->setTimeout(10000);
$data = array(
'login' => '***',
'password' => '***',
);
$request->setMethod('POST');
$request->setUrl('login-url');
$request->setRequestData($data); // Set post data
$request->setOutputFile('screenshot.jpg');
$request->setViewportSize($width, $height);
$request->setCaptureDimensions($width, $height, $top, $left);
$client->send($request, $response);
$file = fopen("1.txt","a");
fwrite($file,$response->getContent());
fclose($file);
问题:
如何在不丢失cookie和会话的情况下浏览个人页面URL?
我已经尝试过只在同一个请求上再次更改setUrl,但它无效。
$request->setMethod('GET');
$request->setUrl('personal-page-url');
$request->setOutputFile('screenshot1.jpg');
$client->send($request, $response);
$file = fopen("2.txt","a");
fwrite($file,$response->getContent());
fclose($file);
答案 0 :(得分:1)
根据这个issue on github ,cookies还有一个不确定的问题。你可以关注它。
Cookie和php-phantomjs#124 Open lucl22于10月1日开启此问题, 2016年·3条评论
如果您的目标网页没有像以下那样多的ajax数据传输,您可以使用其他方式进行报废:
如果你真的需要运行js,你可以使用其他web驱动程序来运行php