【问题标题】:Website to image网站图片
【发布时间】:2011-03-10 22:47:09
【问题描述】:

我正在运行 Python 3.1,你会称我为高级新手 :)

我的问题很简单:我正在尝试制作一个简单的程序,它会询问用户一个 URL(或多个 URL),然后转到网站并截取屏幕截图(整个页面,而不仅仅是可以无需一直向下滚动即可在浏览器中看到)。

说起来简单,我想用网络上已有的平台,类似这样:

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 进行操作,如果可以,如何操作?如果不可能,有其他选择吗?

【问题讨论】:

    标签: python image python-3.x


    【解决方案1】:

    您可以使用一个名为 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

    【讨论】:

    • 谢谢,但我收到错误 ` from PyQt4.QtCore import * ImportError: No module named PyQt4.QtCore`。我已经在 python31/lib 中安装了“webkit2png.py”,对吗?我还需要什么吗?哦,非常感谢您的回复
    • 你可能没有安装 pyqt4 包,这里有一个链接:riverbankcomputing.co.uk/software/pyqt/download(并添加到第一次跳过 cmets 的人的答案)
    • 非常感谢,您知道如何编辑等待 Flash 加载的时间,例如信号(“加载完成(布尔)”)。我正在尝试加载谷歌金融,但我认为它认为闪存仍在加载,而它只是在不断地编辑。谢谢
    • 博文链接失效
    • 链接已更新至博客作者的新位置,感谢@Jabberwockey!
    【解决方案2】:

    您可以使用 Selenium 获取屏幕截图,但它只会是浏览器查看的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-26
      • 2011-04-28
      • 2013-06-12
      • 1970-01-01
      • 2014-03-02
      • 2015-06-12
      • 1970-01-01
      相关资源
      最近更新 更多