2010-10-15 90 views
6

您是否认为技术上可以通过编程的方式对网站进行扫描?技术上可以通过编程获取网站截图吗?

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

您认为技术上可行吗?或者您认识提供类似服务的第三方网站(Input: url --> Output: screenshot)?

有什么建议吗?

+6

您是否在寻找http://www.browsershots.org提供的功能?源代码http://code.google.com/p/browsershots/ – birryree 2010-10-15 06:57:29

+1

@birryree你应该回答,而不是评论:)我认为这是一个很好的答案 – samy 2010-10-15 07:00:58

+1

我同意samy - 它回答了所有问题! :) – 2010-10-15 07:02:11

回答

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

ImageMagick只是一个通用的图像处理函数库。这就像回答这个问题,“我如何在C#中实现FFT?”你回答:“哦,你可以在数学课上用一些东西”。 – Brad 2010-10-15 13:29:19

+0

ImageMagick以何种方式将HTML呈现到图像中? – 2010-10-15 13:29:47

+1

谢谢@David,非常感谢。 – Fenton 2010-12-02 12:26:45

0

这当然是技术上是可行的。

您可能需要将HTML直接渲染到图像文件上(或者更有可能的情况是,将内容位图写入图像文件后写入完成)。

我不知道有任何图书馆为你做这件事(除了一个修改的WebKit,也许)...但肯定有网站这样做。

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

3

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

+0

webkit2png也适用于GNU/Linux,请参阅这篇文章:http://gfdsa.gfdsa.org/2012/08/15/making-web-pages-screenshots-with-webkit2png-flash-included/ – 2014-05-25 18:35:09

1

我用硒和PhantomJS。

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

请务必将PhantomJS可执行文件放在您的$ PATH中。