美文网首页
图片验证码处理、网页快照、截图验证码、灰度化二值化、 图像增强

图片验证码处理、网页快照、截图验证码、灰度化二值化、 图像增强

作者: 沫明 | 来源:发表于2019-02-19 10:21 被阅读0次
        '''
        图片验证码处理
        
        网页快照browser.save_screenshot()
        截图验证码
        灰度化二值化
        
        图像增强
        img1 = ImageEnhance.Sharpness(img).enhance(10) #图像增强
        '''
        
        from selenium import webdriver
        import pytesseract
        from PIL import Image
        import time
        
        browser = webdriver.PhantomJS(r'D:\phantomjs-2.1.1-windows\bin\phantomjs')  # browser浏览器
        # browser = webdriver.Chrome(r"D:\chromedriver.exe")   #browser浏览器
        url = 'http://my.cnki.net/elibregister/commonRegister.aspx'
        browser.get(url)
        html = browser.page_source
        # print(html)
        
        user = browser.find_element_by_id('username')
        pwd = browser.find_element_by_id('txtPassword')
        email = browser.find_element_by_id('txtEmail')
        checkCode = browser.find_element_by_id('txtOldCheckCode') #验证码
        btnReg = browser.find_element_by_id('ButtonRegister')      #点击
        user.send_keys('zzqk08_3@163.com')
        time.sleep(2)
        pwd.send_keys('mimamima')
        time.sleep(2)
        email.send_keys('guojiantao@163.com')
        time.sleep(2)
        
        
        browser.save_screenshot('./images/zhiwang.png')#快照
        img = browser.find_element_by_id('checkcode')
        left   = img.location['x']#验证码图片左上角横坐标
        top    = img.location['y']#验证码图片左上角纵坐标
        right  = left + img.size['width']#验证码图片右下角横坐标
        bottom = top + img.size['height']#验证码图片右下角纵坐标
        im=Image.open('./images/zhiwang.png')
        im_crop=im.crop((left,top,right,bottom))#这个im_crop就是从整个页面截图中再截出来的验证码的图片
        im_crop.save('./images/zrecaptchar.png')
        
        img =Image.open('./images/zrecaptchar.png')
        # img.show()  #显示验证码图片
        #可以看出,验证码文本一般都是黑色的,背景则会更加明亮,所以我们可以通过检查像素是否为黑色将文本分离出来,该处理过程又被称为阈值化。通过 Pillow 可以很容易地实现该处理过程。
        gray = img.convert('L') #灰度化,图片转化成灰度图 L灰度化的级别
        # gray.show() #显示灰度化后图片
        #二值化,指定而二值化的阈值,默认阈值127
        threshold = 135
        table = []
        for i in range(256):
            if i < threshold:
                table.append(0)
            else:
                table.append(1)
        bw = gray.point(table,'1')
        # bw.show()  #显示二值化后图片
        #bw = gray.point(lambda x: 0 if x < 1 else 255,'1')
        strcode = pytesseract.image_to_string(bw)  #识别图片中的文字
        print(strcode)
        
        
        checkCode.send_keys(strcode)
        #模拟点击按钮
        btnReg.click()
    

    相关文章

      网友评论

          本文标题:图片验证码处理、网页快照、截图验证码、灰度化二值化、 图像增强

          本文链接:https://www.haomeiwen.com/subject/dlkxyqtx.html