最近在使用selenium爬网站,但是对方网站设置了反爬,经常会跳出验证码,验证是不是人为,于是我就总结了一下使用selenium爬验证码图片并识别的方法。

1 爬验证码图片

1.1 方法一

这种方法是对方将验证码图片的url放在了<img>中,可以先将这个url提取出来,然后将这个图片下载到本地。

from bs4 import BeautifulSoup
from urllib.request import urlretrieve
from selenium import webdriver
driver = webdriver.Edge()      # Edge浏览器
driver.get("你的url")
bf=BeautifulSoup(driver.page_source, 'html.parser')
purl=bf.find(class_='图片的class name')
img_url=purl.img["src"] #获得图片的url
urlretrieve(url=img_url,filename="captcha.jpg") #保存到本地,名为captcha.jpg

1.2 方法二

有的时候找不到对方验证码图片的url,我们只能靠自己提取,这种方法是使用截图,把验证码截取出来。

from selenium import webdriver
driver = webdriver.Edge()      # Edge浏览器
driver.get("你的url")
imgelement = driver.find_element_by_xpath('验证码的xpath')
imgelement.screenshot('captcha.jpg')  #保存验证码截图

2 识别验证码

识别验证码我主要使用超级鹰,网址:https://www.chaojiying.com/,先注册一个账号,记住用户名和密码,-》进入用户中心,-》点击软件ID,-》点击生成一个软件ID,填表生成一个,记住这个软件ID。(使用需要账户题分,可以免费先领1000分)

"""
用于与超级鹰连接
"""
import requests  # 网络请求模块
from hashlib import md5  # 加密class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = username  # 自己注册的账号password = password.encode('utf8')  # 自己注册的密码self.password = md5(password).hexdigest()self.soft_id = soft_id  # 软件IDself.base_params = {  # 组合表单数据'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {  # 请求头信息'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def PostPic(self, im, codetype):"""im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)  # 更新表单参数files = {'userfile': ('ccc.jpg', im)}  # 上传验证码图片r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files,headers=self.headers)return r.json()  # 返回响应数据def ReportError(self, im_id):"""im_id:报错题目的图片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()"""
验证码识别
"""
chaojiying = Chaojiying_Client('用户名', '密码', '软件ID')
im = open('captcha.jpg', 'rb').read()
r = chaojiying.PostPic(im, 1902) #1902 验证码类型
if r["err_str"] == "OK":print("验证码为: "+r["pic_str"])

使用selenium爬验证码图片并识别相关推荐

  1. Tensorflow实例3: 验证码图片的识别训练,每张图片有4个字母

    学习目标 目标 说明验证码识别的原理 说明全连接层的输出设置 说明输出结果的损失.准确率计算 说明验证码标签值的数字转换 应用tf.one_hot实现验证码目标值的one_hot编码处理 应用 应用神 ...

  2. 163相册验证码图片的识别手记之二 --- 识别

    识别验证码一般是要经过"去干扰","切字","识别"三步处理. 一.切字: 切字即是将图片里的每个验证码都分别"切"开, ...

  3. selenium截取验证码图片

    # 截取验证码图片 from PIL import Image driver.save_screenshot('bdbutton.png') element = driver.find_element ...

  4. Jmeter验证码图片识别注册接口压力测试实战

    写在前面 前段时间写了一篇博文<Jmeter验证码注册接口压力测试实战>,前两天又登录对应的网站看了一下.发现原来滑动验证的方式改成了图片验证码的方式,防止用户多次发送手机验证码. 看到这 ...

  5. C#批量爬取网站验证码图片/爬取网页内容(1)

    前段时间师姐给了我一个C#爬图的代码,很简单有效.我查了点资料,把代码搞懂了然后简化又扩展了一下使它能够爬取网页内容.现在把代码和过程放上来供有兴趣的朋友一起探讨. 这一部分只讲如何爬验证码图片.爬取 ...

  6. android 数据存储怎么保存图片_遇到验证码怎么办?Python编写一个验证码图片数据标注GUI程序!...

    做验证码图片的识别,不论是使用传统的ORC技术,还是使用统计机器学习或者是使用深度学习神经网络,都少不了从网络上采集大量相关的验证码图片做数据集样本来进行训练. 采集验证码图片,可以直接使用Pytho ...

  7. python 识别登陆验证码图片(完整代码)_python 识别登录验证码图片功能的实现代码(完整代码)...

    在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记. 首选导入一些用到的库,re.Imag ...

  8. python 识别登陆验证码图片(完整代码)

    在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记. 首选导入一些用到的库,re.Imag ...

  9. python用selenium 验证码图片_Python +Selenium解决图片验证码登录或注册问题(推荐)

    1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. ...

  10. 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站

    一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...

最新文章

  1. OLTP与OLAP是什么?OLTP与OLAP的主要区别是什么?
  2. 1、初识Server API for JavaScript
  3. Java程序执行过程
  4. CTF-Misc--处理压缩包大量文件将其转为二进制->10进制->字符串 脚本
  5. apache2.4.9 开启path_info访问_如何通过SSH访问NAS?
  6. Ubuntu 11.10不得不知的快捷键
  7. 前端学习(1671):前端系列实战课程之透明度运动效果实现思路
  8. ajax上传文件到servlet
  9. Codeforces 781B. Innokenty and a Football League
  10. 8g内存一般占用多少_手机6G和8G运存有什么不同,8G运存真比6G流畅?这也要考虑处理器...
  11. 2018年百度算法与标准汇总
  12. java 树什么意思是什么意思是什么意思_什么是红黑树?看完这篇你就明白了!...
  13. [Android 4.4.3] 泛泰A870 Mokee4.4.3 20140610 RC2.0 通过刷第三版 by syhost
  14. 移动硬盘插入提示需要格式化RAW_移动硬盘数据恢复 – 图文教程
  15. 【传感器大赏】酒精传感器
  16. Multithreading and Synchronization
  17. 给测试实习生,新人的小小建议
  18. 计算机网络汇聚层,31. 接入层 汇聚层 核心层 三层典型网络架构
  19. Tableau雷达图制作——这可能是你能看到最详尽,最清爽,最感人的教程!
  20. EMUI/MIUI卸载系统预装软件,开启上帝模式无需ROOT权限

热门文章

  1. 纯windows下制作变色龙引导安装U盘教程
  2. couchbase php,数据库大全-之-Couchbase
  3. 程序员记录之人性弱点
  4. 域客户统一关闭UAC
  5. XCode怎么搜索图片文件
  6. 另一种活法之——不要总把自己当千里马
  7. Unihan(统汉字)常用字段介绍
  8. 苹果执行请求时出错_错误报告 - Apple Developer
  9. 插件未购买或已到期,请重新绑定帐号后重试,如操作无效,请将服务器出口IP改为:8XX.XXX.XX.XX
  10. Ubuntu 14.04常用软件的安装