Скриншоты сайтов своими руками
Проблема создания скриншотов web-страниц прямо на сервере встает достаточно редко, но, как говорится, метко. Хватишься иной раз, так гугль дает ссылки на какой-нибудь парсер уже существующего сервиса. Но, господа, это же не наш метод!
Покопавшись, можно найти что-нибудь типа связки xvfb (виртуальный фреймбуффер) с каким-нибудь браузером, например xvfb+opera, или khtml2png, который тянет за собой фигову тучу kde'шных либ. А ведь так хочется какого-нибудь легкого standalone скриптика...
Решив посвятить немного времени изучению вопроса, обстоятельно исследовал имеющийся инструментарий.
Итак, первое что мне попалось на глаза: webkit2png. Для работы скрипта необходим собственно Safari, который в свою очередь стоит на… Mac OS. Ну, может кому и пригодится...
Но, мир полон энтузиастов, и я нашел порт этого скрипта на нормальные никсы с использованием Qt и Python — webkit2png.py. Для работы нам потребуются всего 2 библиотеки:
Скрипт имеет следующие аргументы:
Стартует xvfb. По умолчанию, не используется.
Задает размеры окна виртуального браузера. По умолчанию, выставлен параметр 0, что означает autodetect.
Записывает полученный скриншот в указанный файл.
Формат изображения. По умолчанию, png.
Ресайз изображения.
Задает пропорции. Из возможных значений: «ignore» (по умолчанию), «keep», «expand».
Выставляет таймаут запроса. По умолчанию, не используется.
Позволяет проследить процесс создания изображения. По умолчанию, не используется.
Пример вызова:
В процессе поиска скриптов, нашлись еще два (mozgrab и html2jpg), написанные на perl и использующие mozilla. Они оказались довольно старыми и, на мой взгляд, неудобными. Дальнейшие поиски решено было бросить, так как уже найдено оптимальное решение.
Покопавшись, можно найти что-нибудь типа связки xvfb (виртуальный фреймбуффер) с каким-нибудь браузером, например xvfb+opera, или khtml2png, который тянет за собой фигову тучу kde'шных либ. А ведь так хочется какого-нибудь легкого standalone скриптика...
Решив посвятить немного времени изучению вопроса, обстоятельно исследовал имеющийся инструментарий.
Итак, первое что мне попалось на глаза: webkit2png. Для работы скрипта необходим собственно Safari, который в свою очередь стоит на… Mac OS. Ну, может кому и пригодится...
Но, мир полон энтузиастов, и я нашел порт этого скрипта на нормальные никсы с использованием Qt и Python — webkit2png.py. Для работы нам потребуются всего 2 библиотеки:
libqt4-webkit и python-qt4
.Скрипт имеет следующие аргументы:
-x, --xvfb
Стартует xvfb. По умолчанию, не используется.
-g, --geometry
Задает размеры окна виртуального браузера. По умолчанию, выставлен параметр 0, что означает autodetect.
-o, --output
Записывает полученный скриншот в указанный файл.
-f, --format
Формат изображения. По умолчанию, png.
--scale
Ресайз изображения.
--aspect-ratio
Задает пропорции. Из возможных значений: «ignore» (по умолчанию), «keep», «expand».
-t, --timeout
Выставляет таймаут запроса. По умолчанию, не используется.
--debug
Позволяет проследить процесс создания изображения. По умолчанию, не используется.
Пример вызова:
python webkit2png.py http://habrahabr.ru -o habra.png -g 1024 768
В процессе поиска скриптов, нашлись еще два (mozgrab и html2jpg), написанные на perl и использующие mozilla. Они оказались довольно старыми и, на мой взгляд, неудобными. Дальнейшие поиски решено было бросить, так как уже найдено оптимальное решение.
Comments 34
Only users with full accounts can post comments. Log in, please.