爬虫解决图片验证码,和点击验证码问题

12306的点击选中验证码

# @Time : 2020/7/24 10:57
# @Author : ZhangYangyang
# @Software: PyCharm
import requests
# img图片获取的链接
img_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand'
session = requests.session()
req = session.get(img_url).content
with open('code.png', 'wb') as f:
    f.write(req)  # 存储图片
codeImg = input('请输入验证码:')
check_url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
data = {
    'answer': codeImg,
    'rand': 'sjrand',
    'login_site': 'E',
}
cons = session.get(check_url, params=data).text
print(cons)

分析:

分析网页发现获取图片的链接是:https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand

我们把图片存储起来,根据像素确定你要点击的东西

图片验证码

'''
验证码内可能有多余线条干扰图片识别
可进行转灰度,二值化等操作
先将原图转为灰度图像,再指定二值化阈值
'''
import tesserocr
from PIL import Image
image = Image.open('code.jpg')
#传入L,将图片转换为灰度图像,去掉多余线条
image = image.convert('L')
threshold = 127
table = []
for i in range(256):
    if i<threshold:
        table.append(0)
    else:
        table.append(1)
image = image.point(table,'1')
result = tesserocr.image_to_text(image)
print(result)

分析:

我们需要安装tesserocr以及他依赖的环境,配置环境变量,这里不做细说

当然了,这种识别图片上验证码数字字母正确率不保证,如果自己测试可以用自己输入验证码的方式登录

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫中的图片验证码可以通过OCR技术进行识别。可以使用Python的第三方库tesserocr来实现简单验证码的识别。对于没有噪声干扰的验证码,可以直接使用这个库进行识别。但是对于有噪声干扰的验证码,需要先对图片进行预处理,如灰度化和二值化,然后再进行识别,以提高识别率。 另一种图片验证码是滑动式验证码。对于这种验证码,可以采用模板匹配的方法。思路就是将所有出现的验证码保存下来,并与出现的验证码进行像素比较,找出不同的验证码。根据滑动顺序给不同的验证码命名,然后使用selenium模拟滑动操作。 学习Python技术可以帮助你更好地处理爬虫中的验证码问题。Python在爬虫领域非常受欢迎,学好Python可以为你的就业和副业赚钱提供更多机会。如果你想学习Python,建议你制定一个学习规划,并寻找一些全套的Python学习资料来帮助你入门。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python爬虫四种验证码解决思路](https://blog.csdn.net/weixin_55154866/article/details/128503790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值