Comment puis-je prendre des captures d’écran de pages Web en utilisant Ruby et un serveur Unix?

J’essaie de créer par programme des images miniatures d’un grand nombre de pages Web hébergées sur mon propre site Web basé sur ruby ​​/ rails.

Je veux pouvoir coder un morceau de rbuy autonome qui ressemble à ceci:

require 'awesome-screenshot-maker' items.each do |id| url = "http://foo.com/bar/#{id}" shooter = AwesomeScreenshotMaker.new(0.2) # thumbnails are 20% of original shooter.capture(url, "/images/thumbnail-#{id}.png") end 

J’ai besoin que la bibliothèque awesome-screenshot-maker (et ses dépendances) soit assez facile à construire sous Linux, Solaris et Mac OS X. Idéalement, elle sera installée avec une seule commande ‘gem install’.

J’ai passé l’après-midi à explorer diverses options, y compris le jeu de tir de Moz , le webkit2png et le rbwebkitgtk . Ils sont tous dans le bon domaine, mais aucun ne semble fonctionner sur les trois plates-formes.

RMagick ressemble à une option possible si je veux sortir des fichiers PDF de mon application rails (au lieu des pages Web), mais cela me semble pirate. Il est également très laborieux de faire fonctionner RMagic et imagemagick sur Mac OS X.

Existe-t-il une telle bibliothèque facilement configurable sur trois plates-formes?

Selenium RC possède une interface Ruby et peut capturer une capture d’écran en utilisant capture_screenshot (filename, kwargs) .

Vous devez ensuite le réduire à une vignette.

vous voudrez peut-être essayer ceci:

http://www.pageglimpse.com/

Il y a https://github.com/maxwell/screencap qui utilise phantom.js

Il y a un emballage en rbuy pour PageGlimpse disponible:

http://code.squidchunks.com/pageglimpse/

Malheureusement, les conditions d’utilisation stipulent que “Vous ne devez pas utiliser ou lancer de système automatisé, y compris, sans limitation, les” lecteurs hors ligne “,” spiders “, etc. pour capturer les données fournies par le Service.”

Vous pouvez utiliser le bijou avec brio .

Gastly.capture('http://google.com', 'output.png')