关于python+selenium截屏,crop裁剪指定元素的错误
2019-07-18 16:03
204 查看
在用python做爬虫这一类事情的时候免不了截取验证码的图片,所幸python有各种强大的库,截取验证码图片并不困难。
但是我不知道是不是自己电脑的配置问题在裁剪验证码图片的时候就会出错,宽度和高度都会少一截,在百度上也找不出个所以然来,具体错误如下。
然后我的代码运行后保存下来的图片是这样的 可以看到无论是高度还是宽度都少了一截。
后来经过一步步的检查发现程序截取全屏时截取图片的像素大于浏览器截取图片的像素,只要把程序截取全屏时的图片像素改成与浏览器截屏的像素一致就可以了。代码如下
[code]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)
修改像素后成功截取该元素区域的图片
相关文章推荐
- (selenium+python)判断一个元素是否存在,if的错误用法
- selenium2.0关于python的常用函数(二) 定位元素,解析页面时用到
- python selenium截取指定元素图片
- python使用selenium获取元素出现错误:"errorMessage":"Compoud class names not permitted"
- 关于python+Selenium定位元素出错的问题
- selenium python 指定元素截图
- Python + Selenium 实现对页面的指定元素截图(可截长图元素)【转载】
- 【Python】Selenium元素定位错误之解决办法
- Python+Selenium之鼠标悬浮在指定元素上方和对指定元素块进行截图、拼接图片
- Python使用Selenium测试WebApp在定位元素和使用元素属性报的莫名其妙错误的终极解决方法
- Python 查找有序列表中指定元素所在位置
- 关于“未指定的错误”解答
- Selenium获取页面指定元素个数
- selenium webdriver python 元素操作
- Python+Selenium练习篇-利用link text定位元素
- 一道关于STL list笔试题,删除指定下标的元素
- 关于Python 3.x中,使用print函数时出现的语法错误(SyntaxError: invalid syntax)的问题的原因
- Python实现判断并移除列表指定位置元素的方法
- Python+Selenium练习篇之20-获取元素上面的文字
- python读取html中指定元素生成excle文件示例