用php保存网址截图

时间:2019-07-14 18:05:32

标签: php html css google-api screenshot

我每天都有一些网址,并且需要捕获这些网址的屏幕截图。 我想在主机中保存特定的网址screenShot。 现在,我想在localhost / wamp以及linux主机中尝试它。

我尝试了一些图书馆,但没有成功。 我想尝试使用google api pagespeed v5。

<?php
$url = 'mysite.com';
$response =     file_get_contents("https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=$url&screenshot=true");
$googlePagespeedObject = json_decode($response, true);
$screenshot = $googlePagespeedObject['screenshot']['data'];
$screenshot = str_replace(array('_','-'), array('/','+'), $screenshot);
echo "<img src=\"data:image/jpeg;base64,{$screenshot}\"     alt=\"Screenshot\" />";
file_put_contents('...', base64_decode($screenshot));

我的错误,没有成功的图像:

  

警告:   file_get_contents(https://laravel.com/docs/5.8/collections#method-unique):   无法打开流:HTTP请求失败! HTTP / 1.0 403禁止输入

2 个答案:

答案 0 :(得分:0)

我稍微修改了您的代码,请尝试使用此代码。 example,保存的图片here

function ScreenShotUrl($url){
  $link = $url ;
  $name = parse_url($link)['host'];
  $resp = file_get_contents("https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=$link&screenshot=true");
  $resp = json_decode($resp, true);
  $data = str_replace('_','/',$resp['lighthouseResult']['audits']['final-screenshot']['details']['data']);
  $data = str_replace('-','+',$data);
  echo '<img src="' . $data . '" />';
  $img = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)); 
  file_put_contents('tmp/'.$name.'.jpg', $img);
} 
$url = 'http://bajukakilima.com'; 
ScreenShotUrl($url);

答案 1 :(得分:-1)

这是要用于php屏幕截图的函数:

function ScreenShotUrl($url){
$link = $url ;
$name = parse_url($link)['host'];
$googlePagespeedData = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$link&screenshot=true");
$googlePagespeedData = json_decode($googlePagespeedData, true);
$screenshot = base64_decode($googlePagespeedData['screenshot']['data']);
$data = str_replace('_','/',$googlePagespeedData['screenshot']['data']);
$data = str_replace('-','+',$data);
$decoded = base64_decode($data);
file_put_contents('images/screenshots/'.$name.'.jpg',$decoded);
$file_name = "$name.jpg";
}