技术上是否可以通过编程方式截取网站的屏幕截图?

时间:2010-10-15 06:53:39

标签: python google-app-engine screenshot

您认为在技术上可以通过编程方式对网站进行分类吗?

我想制作一个预定的Python任务,抓取一个网站列表,并截取他们的主页截图。

您认为技术上是否可行,或者您是否知道提供此类服务的第三方网站(Input: url --> Output: screenshot)?

有什么建议吗?

5 个答案:

答案 0 :(得分:15)

您是否在寻找browsershots.org提供的功能?

Google Code/Browsershots提供的源代码。

答案 1 :(得分:3)

您可以检查webkit2png(仅限OS X)和khtml2png(Linux)以及此post(使用PyQt和WebKit)。

答案 2 :(得分:1)

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."

答案 3 :(得分:1)

我使用了selenium和PhantomJS。

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

确保将PhantomJS可执行文件放在$ PATH。

答案 4 :(得分:0)

这在技术上肯定是可能的。

您可能需要将HTML直接渲染到图像文件上(或者更有可能,将其渲染到一旦完成后写入图像文件的内存中位图)。

我不知道有任何库可以为你做这件事(除了修改过的WebKit,也许)......但肯定有网站可以做到这一点。

当然,这比仅仅在机器上的浏览器中打开页面并以编程方式截取屏幕更为复杂,但如果您不关心特定浏览器的结果,结果可能会更好。