所需工具,tesserocr库和selenium库,python3.7.7

selenium库直接在你的命令行下pip install selenium就行,选python3.7.7是因为能更好的兼容tesserocr库,
tesserocr库的安装就有点麻烦了,tesserorc安装,
所有的工具都安装好了之后就可以开始操作了。
这是一个专门练习爬虫验证码识别的网站

进去以后是这个样子,用户名和密码默认都是admin,接下来我们可以先小试牛刀一手看看的tesserocr的效果,先将这个上图的验证码图片另存到你想存放的文件目录下,接下来开始动手写代码

# 导入模块
import tesserocr
from PIL import Image
# 读取图片
image = Image.open('D:/picture/test2.png')
# 识别图片中的字符
txt = tesserocr.image_to_text(image)
# 答应结果
print(txt)
>>— f9.2 4

我们可以看到除了f924之外还多出来一些干扰字符-和.,这是图片里多余的像素点对识别进行了干扰,一般情况下的解决办法是将图片转换成为灰度图像然后通过阈值来对点进行筛选,然后在通过re库里面的替换模块来将多余的干扰字符全替换成none,话不多说,码如下:

# 导入模块
import tesserocr
from PIL import Image
import re
import numpy as npimage = Image.open('D:/picture/test2.png')
# 将图片转换成灰度图像,就是只有白和黑2中颜色
demo = image.convert('L')
# 将图像转换成多维数组
arr = np.array(demo)
# 设置灰度阈值,我觉得设置100读出来的像素会更清晰,你也可以换成你自己想设置的阈值
threshold = 100
# 进行筛选,超过阈值的像素变成白色,不超过像素的为黑色
arr = np.where(arr > threshold, 255, 0)
# 将筛选过后的数组又转换成图像对象
final_image = Image.fromarray(arr.astype('uint8'))
# 调用tesserocr的image_to_text将图像内容识别成文本
txt = tesserocr.image_to_text(final_image)
result = re.sub(r'\W', "", txt)
print(result)>>f924

可以看到我们已经得到我们想要的结果字符串了,如果你对正则表达式还不了解,也没关系,你可以先记住这个用法,后面再去对正则表达式进行更多了解,接下来我们就要通过selenium这个库来模拟浏览器自动输入验证码的过程

import time
import tesserocr
from PIL import Image
import re
from selenium import webdriver
from retrying import retry
from io import BytesIO
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import TimeoutException
# retrying库是用来设置浏览器重登次数的,io库是用来获取图片的# 将处理验证码的方法封装成一个函数方便调用
def process_image(image):"""图片处理函数提取出正确的验证码:param image: 验证码图片:return: 返回字符串"""demo = image.convert('L')arr = np.array(demo)threshold = 100arr = np.where(arr > threshold, 255, 0)final_image = Image.fromarray(arr.astype('uint8'))txt = tesserocr.image_to_text(final_image)result = re.sub(r'\W', "", txt)return result# 设置了10次重登次数,当函数返回结果为false的时候就进行重试
@retry(stop_max_attempt_number=10, retry_on_result=lambda x: x is False)
# 设置登录函数
def login():
# 模拟浏览器访问练习网址browser.get('https://captcha7.scrape.center/')# 找到用户名输入这个节点并输入admin用户名browser.find_element(By.CSS_SELECTOR, '.username input[type="text"]').send_keys('admin')# 同理,找到密码输入这个节点并输入adminbrowser.find_element(By.CSS_SELECTOR, '.password input[type="password"]').send_keys('admin')# 验证码节点captcha = browser.find_element(By.CSS_SELECTOR, '#captcha')# 获取验证码图片image = Image.open(BytesIO(captcha.screenshot_as_png))# 调用函数处理图片识别验证码txt = process_image(image)# 输入验证码browser.find_element(By.CSS_SELECTOR, '.captcha input[type="text"]').send_keys(txt)# 点击登录按钮browser.find_element(By.CSS_SELECTOR, '.login').click()# 当登录成功这个文本所在元素出现说明登录成功,页面保留10秒后退出浏览器try:WebDriverWait(browser, 10).until(ec.presence_of_element_located((By.XPATH, '//h2[contains(., "登录成功")]')))time.sleep(10)browser.close()return Trueexcept TimeoutException:return False# 设置模拟chrome浏览器并调用登录函数
if __name__ == '__main__':browser = webdriver.Chrome()login()

这样重试了几次以后我们就能成功的登录了

到这里位置我们就能处理一般的爬虫验证码识别问题了。谢谢大家,给个赞好吗?秋梨膏!!

python爬虫验证码的识别相关推荐

  1. python爬虫验证码的识别_Python爬虫识别验证码

    Python爬虫识别验证码 安装tesserocr pip3 install tesserocr pillow 识别测试 将验证码图片放到项目根目录下,用tesserocr库识别该验证码,代码如下所示 ...

  2. python 爬虫 验证码_人人网

    可以自动读取验证码的'超级鹰'接口配置(须先去网站注册).将下文保存为 .py 文件再在爬取过程中对它进行调用. import requests from hashlib import md5 cla ...

  3. python爬虫验证码的处理(云打码)_用Python识别验证码

    由于本文实现的功能是在内网环境完成,因此,没有代码介绍,也没有识别效果展示. 爬虫过程中难免会碰到验证码,各种各样的验证码似乎阻挡了爬虫的脚步. 为了识别机器和真实用户而诞生的爬虫 碰到验证码有两个方 ...

  4. Python爬虫验证码识别四

    反爬机制:验证码,  第三方自动识别(推荐) 注意:使用该平台识别验证码,必须将验证码事先下载到本地,然后再将本地存储的验证码提交给平台的示例程序进行识别操作. 使用打码平台识别验证码的编码流程:   ...

  5. python爬虫验证码识别 (手把手教会你验证码识别)opencv图像处理 图片处理 验证码处理 降噪 简单易懂验证码处理

    前言:验证码是个烦人的小家伙!当然有很多打码平台,可以轻松解决!但可以自己来,干嘛靠别人!有技术不学是傻儿童!今天主要讲opencv来解决验证码!抱着怀里教你!让你向前迈一大步!详细讲,慢慢看!简单易 ...

  6. python爬虫功能、识别200张图片中的物体_python爬虫功能、识别200张图片中的物体_python爬虫怎么识别...

    1.输入式验证码 这种验证码主要是通过用户输入图片中的字母.数字.汉字等进行验证.如下图 解决思路:这种是最简单的一种,只要识别出里面的内容,然后填入到输入框中即可.这种识别技术叫OCR,这里我们推荐 ...

  7. python爬虫验证码的处理(云打码)_Python 通过打码平台实现验证码的实现

    在爬虫时,经常遇到登录需要验证码的情况,简单的验证码可以自己解决,复制的验证码需要借助机器学习,有一定的难度.还有一个简单的方案就是采用付费的打码平台. 比如R若快(http://www.ruokua ...

  8. 【python爬虫】easyocr识别gif图片文字

    使用easyocr直接识别gif格式的图片会报错,如下所示: 图片地址:https://code.nongji360.com/images/u/0o2o.gif import easyocr read ...

  9. python爬虫——验证码(1)下载到本地之登录古诗文网

    一.分析 验证码: 登录抓包:登录不一定成功,但是接口可以捕获到 formdata: 获取 '__VIEWSTATEGENERATOR' 和 '__VIEWSTATE' 的值 二.代码 import ...

  10. Python 爬虫云验证码识别

    Python 爬虫验证码识别 1. 百度智能云 2. 使用 2.1 API 文档使用 2.2 SDK 文档使用 3. 获取古诗文网验证码 免责声明:自本文章发布起, 本文章仅供参考,不得转载,不得复制 ...

最新文章

  1. css面试基础知识,CSS知识点与面试题解析
  2. jQuery Ajax 实例 全解析(转)
  3. 六十八、完成Vue项目推荐和周末游组件,并使用Ajax发起ajax请求
  4. REVERSE-PRACTICE-BUUCTF-11
  5. 给 TComboBox 添加图标 - 回复 heyongan 的问题
  6. 列表是不是python数据类型的是_在Python中,一个列表中的数据类型是否可以不相同?(回答可以or不可以)...
  7. PAT1023. 组个最小数
  8. 原生js实现一个随机点餐的小效果
  9. MFC 小知识总结五
  10. LSTM预测多支股票的收盘价
  11. 垃圾收集算法,垃圾收集器_实时垃圾收集
  12. 如何用U盘进行装机?
  13. 氢原子光谱、类氢原子光谱和类氢离子光谱
  14. noip模拟赛 街灯
  15. 基因组组装(genome assembly)和对应版本的基因注释包(gene annotation packages)
  16. lightroom 闪退_微信QQ一碰就闪退,别人永远看不了你的隐私~
  17. HID 报告描述符的填充方式
  18. Python学习日记07
  19. 离线安装VS2019教程
  20. 爱因斯坦都不敢想象, 我们真的探测到引力波

热门文章

  1. Java语言基础03-标识符、关键字、字面值、变量、数据类型
  2. Seventh season fifteenth episode,Joey got a new brain??????
  3. 节理玫瑰花图怎么画_利用Excel软件绘制节理走向玫瑰花图
  4. 数显之家快讯:【SHIO世硕心语】华为内部考核尺度爆光!
  5. 题解 P3513 【[POI2011]KON-Conspiracy】
  6. 拳皇觉醒服务器维护,拳魂觉醒活动什么时候开 服务器开区活动时间顺序
  7. 像素三国志在线html5小游戏,激萌三国志H5
  8. 如何用HTML和css实现拼图,怎样使用DIV+CSS实现拼图
  9. ahocorasick使用
  10. 【离散数学】单射、满射与双射