Как делать скриншоты веб-страниц с помощью ruby ​​и сервера unix?

Я пытаюсь программно создать эскизы большого количества веб-страниц, размещенных на моем собственном веб-сайте на основе ruby/rails.

Я хочу иметь возможность закодировать отдельный бит ruby, который выглядит примерно так:

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

Мне нужно, чтобы библиотеку awesome-screenshot-maker (и ее зависимости) было довольно легко собрать в Linux, Solaris и Mac OS X. В идеале ее можно установить с помощью одной команды «gem install».

Я провел день, изучая различные варианты, в том числе Moz snapshooter, webkit2png и rbwebkitgtk. Все они находятся в нужном месте, но ни один из них не работает на всех трех платформах.

RMagick выглядит как возможный вариант, если я хочу выводить PDF-файлы из моего приложения rails (вместо веб-страниц), но это кажется мне хакерским. Также очень трудоемко настроить и запустить RMagic и imagemagick на Mac OS X.

Существует ли такая библиотека, которую можно легко настроить на трех платформах?


person Lee    schedule 07.04.2009    source источник
comment
Этот вопрос задавали по крайней мере 3 раза в прошлом. См. ответы на #125951, #686858 и #713938.   -  person Can Berk Güder    schedule 07.04.2009
comment
Все эти ответы относятся к приложениям python, php или командной строки. Я уже изучил эти варианты и очень хочу найти надежное решение на основе рубина.   -  person Lee    schedule 07.04.2009


Ответы (5)


Selenium RC имеет интерфейс Ruby и может делать снимки экрана с помощью capture_screenshot(имя файла,kwargs).

Затем вам придется сжать его до миниатюры.

person Gene Gotimer    schedule 07.04.2009

вы можете попробовать это:

http://www.pageglimpse.com/

person NoCarrier    schedule 07.04.2009
comment
PageGlimpse закрыл свои двери. - person unicorn_crack; 21.01.2011

Существует https://github.com/maxwell/screencap, использующий phantom.js.

person katzmopolitan    schedule 21.01.2015
comment
это не работает для меня - person draw; 01.04.2016
comment
я тоже. кажется, что он зависает после f.fetch - person stevec; 01.01.2019

Доступна рубиновая оболочка для PageGlimpse:

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

К сожалению, в Условиях использования указано, что «Вы не должны использовать или запускать какие-либо автоматизированные системы, включая, помимо прочего, «офлайн-ридеры», «пауки» и т. д. для сбора данных, предоставляемых Сервисом».

person Community    schedule 07.04.2009

Вы можете использовать гем gastly.

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

person mgrachev    schedule 08.01.2016