2011-03-10 84 views
5

我运行的Python 3.1,你会打电话给我一种先进的新手:)网站图像

我的问题很简单:我想作一个简单的程序,它要求用户的URL(或多个URL),然后进入网站并截取(整个页面的截图,而不仅仅是在浏览器中可以看到的,而不是一直滚动的)。

所以,很简单,然后它的声音,我想在Web上使用的现有平台,与此类似:

import subprocess 
MYFILENAME = "google_screen" 
MYURL = "www.google.com" 
subprocess.Popen(['wget', '-O', MYFILENAME+'.png', 'http://images.websnapr.com/?url='+MYURL+'&size=s&nocache=82']).wait() 

虽然这个网站不工作:(,我想知道是否有可能做它this website如果是的话,怎么办?如果它是不可能的,有什么办法?

回答

3

有一个名为webkit2png的包,可以用于此目的,其位于:here

更多信息this blog post

从博客文章示例(复制到SO保全,阅读博客文章,了解它,如果你有问题):

#!/usr/bin/env python 
import sys 
import signal 

from PyQt4.QtCore import * 
from PyQt 4.QtGui import * 
from PyQt4.QtWebKit import QWebPage 

def onLoadFinished(result): 
    if not result: 
     print "Request failed" 
     sys.exit(1) 

    # Set the size of the (virtual) browser window 
    webpage.setViewportSize(webpage.mainFrame().contentsSize()) 

    # Paint this frame into an image 
    image = QImage(webpage.viewportSize(), QImage.Format_ARGB32) 
    painter = QPainter(image) 
    webpage.mainFrame().render(painter) 
    painter.end() 
    image.save("output2.png") 
    sys.exit(0) 


app = QApplication(sys.argv) 
signal.signal(signal.SIGINT, signal.SIG_DFL) 

webpage = QWebPage() 
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished) 
webpage.mainFrame().load(QUrl("http://www.google.com")) 

sys.exit(app.exec_()) 

编辑: Link to the pyqt4 download page

+0

谢谢,但我得到的错误'从PyQt4.QtCore导入* ImportError:没有名为PyQt4.QtCore模块。我已经将“webkit2png.py”安装到python31/lib中了吗?我需要什么吗? O并且非常感谢soooo的回应 – Alex 2011-03-11 07:45:29

+0

你可能没有安装pyqt4软件包,这里是一个链接:http://www.riverbankcomputing.co.uk/software/pyqt/download(并加入为第一个答案时间人们跳过评论) – sclarson 2011-03-13 15:12:30

+0

非常感谢,你知道如何编辑它等待Flash加载的时间,例如信号( “LoadFinished(布尔)”)。我试图加载谷歌的财务,但我认为它认为闪存仍在加载,而其刚刚被充分编辑。 thx – Alex 2011-03-13 16:59:10

0

您可以用Selenium得到的截图,但它只会是什么是浏览器中查看。