关于python+selenium截屏,crop裁剪指定元素的错误

在用python做爬虫这一类事情的时候免不了截取验证码的图片,所幸python有各种强大的库,截取验证码图片并不困难。

但是我不知道是不是自己电脑的配置问题在裁剪验证码图片的时候就会出错,宽度和高度都会少一截,在百度上也找不出个所以然来,具体错误如下。

然后我的代码运行后保存下来的图片是这样的可以看到无论是高度还是宽度都少了一截。

后来经过一步步的检查发现程序截取全屏时截取图片的像素大于浏览器截取图片的像素,只要把程序截取全屏时的图片像素改成与浏览器截屏的像素一致就可以了。代码如下

from selenium import webdriver  
from PIL import Image
import pytesseract
import time


def get_image(browser):
    
    #最大化
    browser.maximize_window()
    #程序停止两秒
    time.sleep(2)
    #注意查看截图的分辨率与浏览器窗口宽高,保持一致
    img = browser.find_element_by_class_name('SignFlowHeader')
    
    location = img.location
    size = img.size
    left = location['x']
    top = location['y']
    right = left + size['width']
    bottom = top + size['height']
    #保存截取的图片
    browser.save_screenshot('D:\\img\\a.png')
    print(left,top,right,bottom)
    
    #打开图片
    page_snap_obj=Image.open('D:\\img\\a.png')
    #调整分辨率
    page_snap_obj = page_snap_obj.resize((1519,720))
    #图片裁剪并保存
    page_snap_obj = page_snap_obj.crop((left, top, right, bottom))
    page_snap_obj.save('D:\\img\\zcy.png')
   
    

#打开网站
browser = webdriver.Firefox()

browser.get('https://www.zhihu.com/signup?next=%2F')
get_image(browser)

修改像素后成功截取该元素区域的图片

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值