Automate taking screenshots of webpages

From Wiki

Jump to: navigation, search

Contents

Intro

I wanted to setup cron to take screenshots of various websites on a daily basis. There are different approaches available. One is using wkhtmltopdf (still requires additional packages), another is using http://browsershots.org/documentation#RequirementsForFactories (requires vncserver). The approach I chose was to manually setup VNCserver and firefox (iceweasel) and script it myself.

Main Script

The following script starts a VNC session, starts firefox (iceweasel on debian) with a url and takes a screenshot, saving the image with the filename: 01-06-2011_22:13_www.domain.com.jpg

#!/bin/sh

# start a server with a specific DISPLAY
vncserver :11 -geometry 1024x768

# read URLs from a data file in a loop
for url in `cat list.txt`
do
       firefox --display=:11 $url &
       sleep 5
       eval "import -display :11 -window root" `date +"%d-%m-%Y_%k:%M"`"_"`echo|awk '{print substr(v1,8)}' v1=$url`".jpg"
done
# clean up when done
vncserver -kill :11

list.txt contains a list of URLs in the format:

http://www.domain.com
http://www.google.com
http://slashdot.org
#awk is then used to remove the http:// and use the url as part of the filename

Pre-Requesites

The above was done on debian squeeze.

apt-get install imagemagick
#This package provides the import command.

Xfce-vncserver
#The above page describes installing an Xserver and firefox/iceweasel

References

Main Reference: http://stackoverflow.com/questions/125951/command-line-program-to-create-website-screenshots-on-linux
http://tips.webdesign10.com/how-to-take-a-screenshot-with-ubuntu-linux

Personal tools