技术上可以通过编程获取网站截图吗?
您是否认为技术上可以通过编程的方式对网站进行扫描?技术上可以通过编程获取网站截图吗?
我想制作一个预定的Python任务,它抓取网站列表并获取它们的主页屏幕截图。
您认为技术上可行吗?或者您认识提供类似服务的第三方网站(Input: url --> Output: screenshot
)?
有什么建议吗?
如何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."
这当然是技术上是可行的。
您可能需要将HTML直接渲染到图像文件上(或者更有可能的情况是,将内容位图写入图像文件后写入完成)。
我不知道有任何图书馆为你做这件事(除了一个修改的WebKit,也许)...但肯定有网站这样做。
当然,这比在计算机上的浏览器中打开页面并以编程方式拍摄屏幕截图要复杂一些,但如果您不关心特定浏览器的结果,结果可能会更好。
您是否在寻找像browsershots.org提供的功能?
源代码可在Google Code/Browsershots。
+1 - 不知道这是用Python编写的,它确实完成了所需的工作。 – Fenton 2010-10-15 15:11:27
您可以检查webkit2png(仅限OS X)和khtml2png(Linux)以及post(使用PyQt和WebKit)。
webkit2png也适用于GNU/Linux,请参阅这篇文章:http://gfdsa.gfdsa.org/2012/08/15/making-web-pages-screenshots-with-webkit2png-flash-included/ – 2014-05-25 18:35:09
我用硒和PhantomJS。
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("http://anyurl.com")
driver.save_screenshot("/path/to/folder")
请务必将PhantomJS可执行文件放在您的$ PATH中。
您是否在寻找http://www.browsershots.org提供的功能?源代码http://code.google.com/p/browsershots/ – birryree 2010-10-15 06:57:29
@birryree你应该回答,而不是评论:)我认为这是一个很好的答案 – samy 2010-10-15 07:00:58
我同意samy - 它回答了所有问题! :) – 2010-10-15 07:02:11