在用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)
修改像素后成功截取该元素区域的图片