Search code examples
phphtmlcssgoogle-apiscreenshot

Save urls screenshots with php


I have some urls daily , and need capture screenshot from these URLs. I want to save specific urls screenShot in my Host. Now I want to try it in localhost/wamp and also in linux host .

I try some libraries but weren`t successfully . I want to try with 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));

my error without any successfully image :

Warning: file_get_contents(https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=mysite.com&screenshot=true): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in


Solution

  • i modified your code a bit, Try this code. working example, saved image 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);