← Articles

Miyazaki, le 16 juin 2022

Faire des captures d’écran de sites web avec Ruby

Vous avez un fichier contenant une liste d’URL et voulez une capture d’écran de chacune.



Installez geckodriver depuis https://github.com/mozilla/geckodriver/releases

geckodriver.exe doit se trouver dans le PATH du système


Installer la gem watir-screenshot-stitch


gem install watir-screenshot-stitch

Code

require 'URI'
require 'fileutils'
require 'watir-screenshot-stitch'

basepath = File.join(__dir__, 'screenshots')
FileUtils.mkdir_p basepath

content = File.read('20220610_URLS.txt')

b = Watir::Browser.new :firefox

content.lines.each do |line|
    line = line.strip
    begin
        if  line.include?("http")
            uri =  URI.parse(line).normalize.to_s
            hostname = URI.parse(line).host 
            path = File.join(basepath, hostname)
            FileUtils.mkdir_p path
            puts uri
            b.goto uri
            png = b.screenshot.base64_geckodriver
            filename = uri.gsub(/[^0-9A-Za-z.\-]/, '_')
            path = File.join(path, "#{filename}.png")
            File.open(path, 'wb') { |f| f.write(Base64.decode64(png)) }
        end
    rescue
       # puts line + " is not url"
    end
end



watir-screenshot-stitch sur GitHub

PS : il existe aussi une gem pour faire des captures d’écran de programmes Windows en Ruby :
https://rubygems.org/gems/win32screenshot



On pourrait l’étendre pour ajouter les captures à des documents Word :
https://rubywithwatir.blogspot.com/2008/07/how-do-i-take-screenshots-and-append-to.html


Merci de votre lecture

Si cet article vous a plu,
envoyez simplement cet e-mail. Je vous préviendrai la prochaine fois que j’écrirai quelque chose.

Andi