Python爬虫:验证码的爬取和识别详解

本文详细介绍了如何使用Python爬虫抓取图形验证码,并结合百度OCR进行识别。通过实例展示了验证码的图像处理过程,讨论了识别成功率和影响因素,指出对于复杂验证码可能需要更深入的图像处理技术或专门的OCR解决方案。
摘要由CSDN通过智能技术生成

今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型。

运行平台:Windows

Python版本:Python3.6

IDE: Sublime Text

其他:Chrome浏览器

简述流程:

步骤1:简单介绍验证码

步骤2:爬取少量验证码图片

步骤3:介绍百度文字识别OCR

步骤4:识别爬取的验证码

步骤5:简单图像处理

目前,很多网站会采取各种各样的措施来反爬虫,验证码就是其中一种,比如当检测到访问频率过高时会弹出验证码让你输入,确认访问网站的不是机器人。但随着爬虫技术的发展,验证码的花样也越来越多,从最开始简单的几个数字或字母构成的图形验证码(也就是我们今天要涉及的)发展到需要点击倒立文字字母的、与文字相符合的图片的点触型验证码,需要滑动到合适位置的极验滑动验证码,以及计算题验证码等等,总之花样百出,让人头秃。验证码其他的相关知识大家可以看下这个网站:captcha.org

再来简单说下图形验证码吧,就像这张:

由字母和数字组成,再加上一些噪点,但为了防止被识别,简单的图形验证码现在也变得复杂,有的加了干扰线,有的加噪点,有的加上背景,字体扭曲、粘连、镂空、混用等等,甚至有时候人眼都难以识别,只能默默点击“看不清,再来一张”。

验证码难度的提高随之带来的就是识别的成本也需要提高,在接下来的识别过程中,我会先直接使用百度文字识别OCR,来测试识别准确度,再确认是否选择转灰度、二值化以及去干扰等图像操作优化识别率。

接下来我们就来爬取少量验证码图片存入文件。

首先打开Chrome浏览器,访问刚刚介绍的网站,里面有一个captcha图像样本链接:https://captcha.com/captcha-examples.html?cst=corg,网页里有60张不同类型的图形验证码,足够我们用来识别试验了。

直接来看代码吧:

import requests
import os
import time
from lxml import etree


def get_Page(url,headers):
    response = requests.get(url,headers=headers)
    if response.status_code == 200:
        # print(response.text)
        return response.text
    return None


def parse_Page(html,headers):
    html_lxml = etree.HTML(html)
    datas = html_lxml.xpath('.//div[@class="captcha_images_left"]|.//div[@class="captcha_images_right"]')
    item= {}
    # 创建保存验证码文件夹
    file = 'D:/******'
    if os.path.exists(file):
        os.chdir(file)
    else:    
        os.mkdir(file)
        os.chdir(file)    
    for data in datas:
        # 验证码名称
        name = data.xpath('.//h3')
        # print(len(name))
        # 验证码链接
        src = data.xpath('.//div/img/@src')    
        # print(len(src))
        count = 0
        for i in range(len(name)):
            # 验证码图片文件名
            filename = name[i].text + '.jpg'
            img_url = 'https://
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值