Создаем скриншот сайта через URL, используя PageSpeed Insights API

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Задача следующая, нужно сделать скриншот сайта по урлу и полученную картинку сохранить в файл или вывести на экран.

Поискав информацию по этой теме, нашел что можно получить скриншот используя сервис гугла, Google PageSpeed Insights API

Получение скриншота сайта через URL.

Выкладываю рабочий код


<?php
// адрес сайта
$url = "https://small-whale.org";

// получение данных с сервиса
$api_data_ = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$url&screenshot=true");

// расшифровка данных json
$api_data = json_decode($api_data_, true);

// данные снимка
$screenshot = $api_data['screenshot']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot);

// сохраняю полученный снимок в файл
base64_to_file($screenshot, 'screen.jpg');
// отображаем изображение из base64
echo "<img src=\"data:image/jpeg;base64,".$screenshot."\" />";

// функция конвертации base64 в файл
function base64_to_file($base64_string, $output_file) {
  // open the output file for writing
  $ifp = fopen( $output_file, 'wb' );

  // разбиваем строку
  // $data[ 0 ] == "data:image/png;base64"
  // $data[ 1 ] == <actual base64 string>
  $data = explode( ',', $base64_string );

  fwrite( $ifp, base64_decode($data[0]) );

  // закрываем файл
  fclose( $ifp );

  return $output_file;
}
?>

как видно из кода, идет получение контента по адресу

https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$url&screenshot=true

где передаются два параметра

url — урл сайта, с которого получить скриншот

screenshot — маркер, который указывает что будет возвращаться скриншот, ставим true

Ответ идет в json формате, среди полученных данных есть тайт сайта, показатели производительности и много другое, к примеру рекомендации по оптимизации CSS.

Данный запрос можно использовать для сбора статистики по сайту, практически там данные с Google Pagespeed по определенному сайту

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *