python之验证码截取与验证码识别

  1. 环境

     python3.7

    selenium
    webdriver
    PIL
    Image

 

  2.下面demo是截取“去哪儿”官网的验证码

  

 1 # -*- coding=utf-8 -*-
 2 # CodeDemo.py
 3 # PyCharm   Slade   2019/7/20
 4 # import selenium,os
 5 from selenium import webdriver
 6 from PIL import Image
 7 
 8 
 9 def aucthcode(coderddr):
10     """
11     传参验证码的Xpath
12     页面全图为'code.png'         命名这个你们开心就好
13     验证码截图名为"aucthcode.png
14     :param coderddr:
15     :return:
16     """
17     
18     driver.save_screenshot('code.png')
19     element = driver.find_element_by_xpath(coderddr)        # 获取验证码的div位置
20     left = element.location['x'] +280
21     top = element.location['y'] +81
22     right = left + element.size['width'] + int(13)
23     bottom = top + element.size['height'] + int(2)
24     img = Image.open('code.png')
25     imgcod = img.crop((left,top,right,bottom))          # 根据 div的长宽截图
26     imgcod.save('aucthcode.png')
27     print((left,top,right,bottom))
28 
29 
30 if __name__ == '__main__':
31     driver = webdriver.Chrome()
32     driver.maximize_window()
33     driver.get('https://user.qunar.com/passport/login.jsp')
34     driver.find_element_by_css_selector('a.pwd-login').click()
35     aucthcode('//*[@id="captcha"][1]/p[1]')
36     driver.quit()
37 
38 
39     # img = Image.open('code.png')
40     # imgcod = img.crop((1392,393,1490,425))          # 根据 div的长宽截图
41     # imgcod.save('aucthcodeN.png')

 

  注:代码中的验证码截取坐标,不一定是标准的,我是通过获取元素的坐标为基础参数,然后在main里面进行调试最终得到我适用的坐标

运行效果展示 code.png

 




运行截取的验证码效果展示 aucthcode.png

 


posted @ 2020-05-13 16:22  肖疯子  阅读(1895)  评论(0编辑  收藏  举报