Как получить скриншот сайта через URL, используя PHP
Создание снимков сайта в реальном времени используется для различных целей в веб-программировании. Существует множество сервисов (прикладных интерфейсов), позволяющих сделать скриншот страницы. Но, если вам нужно сделать свой собственный скрипт для создания скриншота сайта через URL, вы можете это легко сделать, используя PHP и Google PageSpeed Insights API.
В основном, Google PageSpeed Insights API используется для оценки производительности веб-страницы. Но, помимо этого, вы можете использовать Google PageSpeed Insights API, для получения снимка страниц сайта через URL адрес.
Следующий пример скрипта делает снимок произвольной страницы сайта URL адрес, которой определяется пользователем. Затем этот снимок, отображается на странице.
Получение скриншота сайта через URL.
Для создания снимка экрана, на сервис Google PageSpeed Insights необходимо послать запрос со следующими параметрами.
- url: определяет URL адрес сайта
- screenshot: этот параметр нужно установить в true для извлечения скриншота
// адрес сайта
$url = "http://www.myrusakov.ru/";
// вызов методов сервиса
$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);
// отображаем изображение
echo "<img src=\"data:image/jpeg;base64,".$screenshot."\" />";
Захват снимка экрана через URL.
В этом примере мы создадим форму, в которую пользователь сможет ввести адрес страницы, скриншот которой он хочет получить.
Форма достаточно проста: она содержит одно поле ввода, которое принимает адрес сайта. После нажатия кнопки в дело вступает PHP скрипт.
<form method="post" action="make_shot.php" >
<p>Адрес сайта: <input type="text" name="url" value="" /></p>
<input type="submit" name="submit" value="СДЕЛАТЬ СНИМОК">
</form>
До того момента, как мы непосредственно воспользуемся сервисом для создания снимков сайтов, нам необходимо провести проверку введенных пользователем данных на корректность. Вот код:
<?php
if(!empty($_POST['url'])){
// адрес сайта
$url = $_POST['url'];
if(filter_var($url, FILTER_VALIDATE_URL)){
// вызов Google PageSpeed Insights API
$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);
// отобразить изображение
echo "<img src=\"data:image/jpeg;base64,".$screenshot."\" />";
} else {
echo "Пожалуйста, введите правильный URL.";
}
}
?>
Таким образом, все за 10 минут можно создать собственный сервис по созданию скриншотов сайта. На этом все. Спасибо.
-
- Михаил Русаков
Комментарии (4):
Слишком мелкий скрин получается, нельзя получать покрупнее?
Ответить
Статья бесполезна, тк указанная версия Google PageSpeed Insights API (v2) уже давно не активна. Думаю, что необходимо отредактировать статью с учётом текущей версии Google PageSpeed Insights API (текущая версия - v5)
Ответить
Мы решили не париться с этим на PHP, а использовали готовый сервис https://pikwy.com, убили сразу пару зайцев =)) Статья интересная, но есть один минус, если страницы нет в индексе гугла, то скрина не будет!!!
Ответить
Нам не подошло. Мелкий скриншот создается. Наша задача была создавать через заданный интервал времени скриншот страниц. Сперва сами пытались разработать что-то на основе этого, но сложновато. В итоге перепробовали разные сторонние сервисы. Подошел больше всего screen-archive.ru. Можно создавать архив скриншотов сайта. Правда с платными функциями, но при небольшом количестве страниц - самое то
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.