Capturing screenshots of website with Python
August 19, 2015
If you google how to do a screenshot of a website then you will probably end
with an answer depending on PyQT and WebKit. Sadly, PyQt is not a python package
that you can install easily via
pip and you will few others dependencies
to be able to generate a screenshot of a site.
This post describes an easier solution depending only on Selenium and PhantomJS.
Selenium can easily be installed by
pip and phantomJS via your package manager or
npm. On OSX, it's just a matter of doing:
brew install phantomjs # or npm -g phantomjs pip install selenium
At the opposite of installing PyQT, it should be without problems. Once you have Selenium and PhantomJS installed then it becomes simple to write the small python code required to generate the screenshot of a website.
from selenium import webdriver depot = DepotManager.get() driver = webdriver.PhantomJS() driver.set_window_size(1024, 768) # set the window size that you need driver.get('https://github.com') driver.save_screenshot('github.png')
The code above is all you need to generate a screenshot of a website. Webdriver offers others API like
get_screenshot_as_png() which return a binary and can be useful to create an image in memory if you want to manipulate before saving it.