2010-10-15 11 views
6

Czy myślisz, że z technicznego punktu widzenia możliwe jest zaprogramowanie scenariusza witryny?Czy jest technicznie możliwe zaprogramowanie zrzutu ekranu witryny internetowej?

Chciałbym utworzyć zaplanowane zadanie w języku Python, które przeszukuje listę stron internetowych wykonujących zrzut ekranu z ich strony głównej.

Czy uważasz, że jest to technicznie wykonalne, czy znasz stronę trzecią, która oferuje taką usługę (Input: url --> Output: screenshot)?

Jakieś sugestie?

+6

Szukasz funkcji takich jak oferta http://www.browsershots.org? Kod źródłowy dostępny pod adresem http://code.google.com/p/browsershots/ – birryree

+1

@birryree powinieneś odpowiedzieć zamiast komentować :) myślę, że to dobra odpowiedź. – samy

+1

Zgadzam się z samy - to jednak odpowiedź na pytanie! :) –

Odpowiedz

1

Jak o 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

ImageMagick to po prostu ogólna biblioteka funkcji do wykonywania prac na obrazach. Byłoby to jak odpowiedź na pytanie: "Jak mogę wdrożyć FFT w C#?" i odpowiadasz: "Och, możesz użyć do tego czegoś w klasie Math". – Brad

+0

W jaki sposób ImageMagick zapewnia możliwość renderowania HTML do obrazu? –

+1

Dzięki @David, bardzo docenione. – Fenton

0

To na pewno jest to technicznie możliwe.

Prawdopodobnie będziesz musiał renderować kod HTML bezpośrednio do pliku obrazu (lub, co bardziej prawdopodobne, do mapy bitowej zapisanej w pamięci, która zostanie zapisana do pliku obrazu po zakończeniu).

Nie znam żadnych bibliotek, które by to zrobiły (poza zmodyfikowanym WebKitem, być może) ... ale na pewno są strony internetowe, które to robią.

Oczywiście jest to trochę bardziej skomplikowane niż tylko otwarcie strony w przeglądarce na komputerze i wykonanie zrzutu ekranu programowo, ale wynik będzie prawdopodobnie lepszy, jeśli nie dbasz o wynik z konkretnej przeglądarki .

3

Możesz sprawdzić webkit2png (tylko OS X) i khtml2png (Linux) i ten post (użyj PyQt i WebKit).

+0

webkit2png działa również na GNU/Linux, zobacz ten post: http://gfdsa.gfdsa.org/2012/08/15/making-web-pages-screenshots-with-webkit2png-flash-included/ –

1

Użyłem selenu i PhantomJS.

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

pamiętaj o umieszczeniu pliku wykonywalnego PhantomJS w zmiennej $ PATH.

Powiązane problemy