【问题标题】:A Python screen capture script that can be called programmatically?可以以编程方式调用的 Python 屏幕捕获脚本?
【发布时间】:2011-09-25 22:23:08
【问题描述】:

我想打开一个页面并抓取屏幕并使用 PIL 获取其平均颜色。我想打开大约 100 页,所以我认为使用 Python 的屏幕捕获脚本会很有用。我found several of them,我决定使用this simple one

"""
A simple screen grabbing utility

@author Fabio Varesano - 
@date 2009-03-17
"""

from PIL import ImageGrab
import time

time.sleep(5)
ImageGrab.grab().save("screen_capture.jpg", "JPEG")

但我需要从命令提示符运行它,然后它会显示在屏幕上。我如何把它变成一个脚本,以便我可以以编程方式调用它?或者,您认为实现这一目标的最佳方法是什么?谢谢!

【问题讨论】:

  • 您能解释一下 Google App Engine 与此有什么关系吗?如果你想在服务器上运行它,你将很难过。
  • @Ned Batchelder:谢谢,你是对的,我希望将图像保存在 GAE 中以便在线显示,但我知道我必须先将图片保存在我的电脑上。我删除了 GAE 标签。
  • 五秒睡眠期间不能最小化控制台吗?
  • 嗯,它脚本吗?定义“以编程方式调用”...你的意思是你想要一个模块,也许?另外,在您的情况下,时间延迟实际上是否可取?我希望你至少了解代码?
  • 您是否正在寻找一种以编程方式打开和显示前景(我假设)浏览器页面的方法?如果是,请说明您使用的是什么浏览器和操作系统。

标签: python screenshot


【解决方案1】:

您可以使用 Selenium 和任何浏览器:

Take a screenshot with Selenium WebDriver

这是跨平台的,适用于所有浏览器。

Selenium 专为功能性网络浏览器测试而设计,但也适用于像您这样的用例。有关 Python + Selenium 的更多信息:

http://pypi.python.org/pypi/selenium

Selenium 的好处是您可以对浏览器进行微调控制 - 您可以单击按钮、执行 Javascript,随心所欲,并且浏览器不再是黑盒子。

【讨论】:

  • Mikko:谢谢,但我找不到 Windows 的下载,也许我不完全理解它是如何工作的。我会进一步调查。
【解决方案2】:

This solution 似乎完全符合您的要求,在执行屏幕抓取之前将浏览器置于前台。只需将 'firefox' 替换为 'chrome'

【讨论】:

  • Paul:这个解决方案目前可能超出了我的水平。我从未使用过 win32 扩展;我猜它指的是这个:python.net/crew/mhammond/win32/Downloads.html。谢谢!
  • 是的。 Pywin32 是通过 API 操作 Windows 操作系统的最惯用方式,这是您需要以编程方式更改窗口焦点的方式。它是由 python python.org/download/windows 推荐的,并且曾经包含在 python windows 安装中。
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2014-07-18
相关资源
最近更新 更多