Технически возможно ли сделать снимок экрана сайта программно? - PullRequest
6 голосов
/ 15 октября 2010

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

Я хотел бы создать запланированное задание Python, которое сканирует список сайтов, делая скриншот их домашней страницы.

Считаете ли вы, что это технически осуществимо, или вы знаете сторонний веб-сайт, который предлагает такую ​​услугу (Input: url --> Output: screenshot)?

Любое предложение?

Ответы [ 5 ]

15 голосов
/ 15 октября 2010

Вы ищете такую ​​функциональность, какую предлагает browsershots.org ?

Исходный код доступен на Google Code / Browsershots .

3 голосов
/ 15 октября 2010

Вы можете проверить webkit2png (только OS X) и khtml2png (Linux) и эту запись (используйте PyQt и WebKit).

1 голос
/ 07 марта 2017

Я использовал селен и PhantomJS.

from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("http://anyurl.com")
driver.save_screenshot("/path/to/folder")

Обязательно поместите исполняемый файл PhantomJS в $ PATH.

1 голос
/ 15 октября 2010

Как насчет pyGTK

import gtk.gdk

w = gtk.gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
if (pb != None):
    pb.save("screenshot.png","png")
    print "Screenshot saved to screenshot.png."
else:
    print "Unable to get the screenshot."
0 голосов
/ 15 октября 2010

Это, безусловно, технически возможно.

Возможно, вам придется визуализировать HTML-код непосредственно в файл изображения (или, скорее, на растровое изображение в памяти, которое записывается в файл изображения после завершения).

Я не знаю библиотек, которые могли бы сделать это для вас (возможно, кроме модифицированного WebKit) ... но, безусловно, есть сайты, которые делают это.

Конечно, это немного сложнее, чем просто открыть страницу в браузере на машине и сделать снимок экрана программно, но результат, вероятно, будет лучше, если вы не заботитесь о результате из конкретного браузера.

...