我们在用爬虫对门户网站进行模拟登录是总会有输入图片验证码的,例如这种

那我们怎么解决这个问题实现全自动的模拟登录呢?只要思想不滑坡,办法总比困难多。我这里使用的是百度智能云里面的文字识别功能,每天好像可以免费使用个几百次,识别效果也还行,对一般人而言是够用了。

接下来说说,怎么使用。

首先,打开百度智能云(https://cloud.baidu.com/)进行登入,再进入人工智能->文字识别里创建应用。

在使用名称和底下应用描述随便写写,然后点立即创建。

创建完成,就可以拿到 AppID 、API Key 、Secret Key

之后要在pycharm下载baidu-aip,然后导入AipOcr包。

from aip import AipOcr       #aip在baidu-aip中

再然后就是初始化百度API

#百度API
APP_ID = '你的之前拿到的AppID'
API_KEY = '你的之前拿到的API Key'
Secret_Key = '你的之前拿到的Secret Key'

我们先要把 图片验证码下载下来进行二值化处理,这样识别的准确率高一些。

这里要下载pillow库,然后导入Image包

from PIL import Image         #PIL在pillow库中
    #图片处理# 二值化处理 灰度阈值设为127,高于这个值的点全部填白色img_old = Image.open('code.jpg')img_old = img_old.convert('L') # 灰度图 模式“L” 每个像素用8个bit表示,0表示黑,255表示白threshld = 127 #设置阈值,图片的像素范围(0,255)table = []for i in range(256):if i <threshld:table.append(0)else:table.append(1)img_old = img_old.point(table,'1') # 对图像像素操作 模式“1” 为二值图像,非黑即白。但是它每个像素用8个bit表示,0表示黑,255表示白img_old.save('code.jpg')

对于那些有干扰线,特别还是明暗交替的图片验证码来说,这样很好的避免了被干扰。

这里的图片中没有太多干扰线且也没有明暗交替所以看起来不明显,只是想让大家看看对比。

处理前                                                                                                                       处理后

后面就是调用baidu_aip来读取图片中的内容。baidu_aip.handwriting

    #读取处理后的验证码with open('code.jpg','rb') as fp:img_new = fp.read()baidu_aip = AipOcr(APP_ID,API_KEY,Secret_Key)result = baidu_aip.handwriting(img_new)   #使用的是识别手写文字,返回一个字典,其中words_result是一个列表,里面有识别结果也是一个字典print('验证码是:',result['words_result'][0]['words'])

baidu_aip.handwriting这里面有很多识别文字的方法,我用的是识别手写文字,如果大家使用这个方法感觉效果不好可以选择其他方法。

最后是完整的代码。

# -- coding:UTF-8 --
import requests
from PIL import Image
from aip import AipOcrif __name__ == "__main__":#百度APIAPP_ID = '你的之前拿到的AppID'API_KEY = '你的之前拿到的API Key'Secret_Key = '你的之前拿到的Secret Key'headers = {"user-agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 97.0.4692.71Safari / 537.36Edg / 97.0.1072.55"}url = 'http://www.hyocr.com/captcha.php'#下载验证码图片session = requests.session()img_data = session.get(url=url,headers=headers).contentwith open('./code.jpg','wb') as fp:fp.write(img_data)#图片处理# 二值化处理 灰度阈值设为127,高于这个值的点全部填白色img_old = Image.open('code.jpg')img_old = img_old.convert('L') # 灰度图 模式“L” 每个像素用8个bit表示,0表示黑,255表示白threshld = 127 #设置阈值,图片的像素范围(0,255)table = []for i in range(256):if i <threshld:table.append(0)else:table.append(1)img_old = img_old.point(table,'1') # 对图像像素操作 模式“1” 为二值图像,非黑即白。但是它每个像素用8个bit表示,0表示黑,255表示白img_old.save('code.jpg')#读取处理后的验证码with open('code.jpg','rb') as fp:img_new = fp.read()baidu_aip = AipOcr(APP_ID,API_KEY,Secret_Key)result = baidu_aip.handwriting(img_new)   #使用的是识别手写文字,返回一个字典,其中words_result是一个列表,里面有识别结果也是一个字典print('验证码是:',result['words_result'][0]['words'])

这只是百度智能云里面的一个小功能,还有很多其他的功能,大家感兴趣可以去看看百度智能云里面的官方文档 ,还有视频教程。

python爬虫模拟登录之图片验证码相关推荐

  1. python登录教务系统_强智科技教务系统python爬虫模拟登录分析(湖南)

    强智科技教务系统python爬虫模拟登录分析(湖南) 本文章仅用作于学习 前提:最近期末到来,想第一时间看到新出成绩的,于是就有了爬取学校教务系统自己的成绩并通过Qmsg酱推送到自己QQ上的想法,目前 ...

  2. python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例

    转载请注明出处:python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例 我们在前面的文章中已经学习了如果使用python进行数据抓取. 但我们常常会遇到一种场景,就是想要获取的页面内容或者接 ...

  3. 【Python技能树共建】Python爬虫模拟登录

    Python 爬虫模拟登录 Python 爬虫模拟登录是使用脚本实现自动登录,部分站点需要逆向加密逻辑,更多的站点会采用验证码进行鉴权验证. 本文为大家带来最简单的登录,其核心用到的是 request ...

  4. python爬虫 模拟登录人人网过程解析

    这篇文章主要介绍了python爬虫 模拟登录人人网过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 equests 提供了一个叫做sessio ...

  5. python爬虫登陆教程_(python模拟登陆教程)python爬虫模拟登录是什么意思

    python爬虫模拟登录是什么意思 网站需要登录后才能所需要的信息,此时可以设计爬虫进拟登录,原理是利用浏cookie. 一.浏览器访问服务器的过程: (1)浏览器(客户端)向Web服务器发出一个HT ...

  6. python爬虫登录有验证码_大神教你用Python爬虫模拟登录带验证码网站

    爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 首先得明白cookie的作用, ...

  7. 枯燥的寒假生活(一) python爬虫模拟登录whu老教务系统获取期末考试成绩(已失效 , 老教务系统增加了新的反爬, 老教务系统已停用)

    python模拟登录老教务系统(2021.6.24更新) 一.写在前面 之前用爬虫爬取的都是静态网页html中的内容,但是大多数时候需要动态处理网页爬取数据.因为学校出成绩太慢了,每次都自己打开浏览器 ...

  8. python爬虫模拟登录古诗文网站

    爬取目标网站https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx?type=s 工具: ...

  9. python爬虫模拟登录人人网

    模拟登录:爬取基于某些用户的用户信息. 需求1:对人人网进行模拟登录. 点击登录按钮之后会发起一个post请求 post请求中会携带登录之前录入的相关的登录信息(用户名,密码,验证码-) 验证码:每次 ...

  10. python---post请求数据包,正常模拟登录,图片验证码未自动化,phtesseract

    python-post请求数据包 可以正常访问网页地址 http://192.168.40.239/binzcms1/index.php 用户登录成功的post请求数据包信息: 1.获取最新的验证码 ...

最新文章

  1. 为什么小批量会可以使模型获得更大的泛化
  2. ST-3806系列单圈编码器 测试说明
  3. au vst插件_失真效果音频插件
  4. 集合元素处理(Stream方式)
  5. .NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)
  6. python 代码文件路径注意事项
  7. php辅助框架,【PHP开发框架】Laravel框架中辅助函数:optional ()函数的介绍
  8. 2Do for Mac(任务管理GTD工具)
  9. vyos配置dns迭代查询
  10. 使用码云(Gitee)进行开源代码管理
  11. 关于icon小图标的实现
  12. 真实评测 i3 1115G4和i7 1165G7选哪个
  13. 苹果屏幕镜像_苹果屏幕镜像一直在转,秒懂投屏帮你解决
  14. 转载:联想小新进入BIOS方法
  15. 八边形Octagan类(接口) (5 分)
  16. 什么是“沙箱”技术?
  17. PS学习(一)-改变logo颜色
  18. 论文阅读笔记-FGN: Fusion Glyph Network for Chinese Named Entity Recognition
  19. C#中Invoke,BeginInvoke的作用
  20. 【矩阵理论】Jordan标准型的理解

热门文章

  1. 中原工学院信息商务学院计算机二级,中原工学院信息商务学院教务系统网址入口...
  2. 安卓版微信自带浏览器和IE6浏览器ajax请求abort错误处理
  3. Y460安装桌面导航
  4. cloud2声卡_【箴言】带你解惑HyperX Cloud2(飓风)和Alpha(阿尔法)的终极选择
  5. 0.3-87 GHz频段手持频谱分析仪 —— SAF Spectrum Compact
  6. m序列 MATLAB仿真
  7. 计算机端口错误678,Win8宽带连接出现错误678的解决方法
  8. 系统u盘测试软件,u盘检测工具操作教程
  9. 百度搜索引擎的搜索高级语法及应用
  10. 软件以人为本5 - 敏捷3 - 拯救每日立会2