【问题标题】:python selenium screenshot captcha imagepython selenium screenshot 验证码图像
【发布时间】:2015-12-30 13:21:46
【问题描述】:

我想截屏并只裁剪验证码图像,我写了这段代码:http://pastebin.com/Hqau6kRD

elem = driver.find_element_by_css_selector("#imagecpt")
loc  = elem.location
size = elem.size
left  = loc['x']
top   = loc['y']
width = size['width']
height = size['height']
box = (int(left), int(top), int(left+width), int(top+height))
screenshot = driver.get_screenshot_as_png()
img = Image.open(StringIO.StringIO(screenshot))
area = img.crop(box)
area.save('screenshot.png', 'PNG')

保存的图片全黑,我哪里错了?

【问题讨论】:

  • 不是 100% 确定,但我认为这与您预期的不一样:“StringIO.StringIO(screenshot)”
  • 什么是Image?它是您通过 pip 安装的模块,还是您的 Python 安装附带的?如果它随您的 Python 安装一起提供,您使用的是哪个版本以及从哪里获得它?我怀疑你的问题是你的 Image 库可能不处理 png 文件。

标签: python selenium


【解决方案1】:

是的。对于 Python3,它将是这样的:

...
from io import BytesIO
...
screenshot = driver.get_screenshot_as_base64()
img = Image.open(BytesIO(base64.b64decode(screenshot))
...

【讨论】:

    【解决方案2】:

    我假设您正在使用来自 PIL 库的 Image 模块。

    尝试获取 base64 值,对其进行解码,然后将其作为参数传递给open() 方法。

    ...
    screenshot = driver.get_screenshot_as_base64()
    img = Image.open(StringIO.StringIO(base64.b64decode(screenshot))
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 2021-02-04
      • 1970-01-01
      • 2017-11-30
      • 2013-07-30
      • 1970-01-01
      相关资源
      最近更新 更多