python小知识-生成图片验证码,

用Python生成图片验证码,
Python版本:Python3.6
在这里插入图片描述

代码如下:

# -*-coding:utf-8 -*-
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
import os
import platform

class VerificationCode(object):
    '''用于生成随机验证码'''
    
    def __init__(self, file_name):
        self.str_code = list(range(65, 91))
        self.str_code += list(range(97, 123))
        self.str_code += list(range(48, 58))
        self.file_name = file_name + '.png'
    
    #  生成随机字符 a~z, A~z, 0~9
    def random_str(self):
        return chr(random.choice(self.str_code))
    
    # 生成随机颜色:
    def random_color(self):
        return random.randint(0, 245), random.randint(0, 245), random.randint(0, 245)
    
    # 生成验证码和图片
    def generate_code(self):
        # 240 x 60:
        width = 60 * 4
        height = 60
        image = Image.new('RGB', (width, height), (255, 255, 255))
        # 根据操作系统获取字体文件
        if platform.uname().system == 'Windows':
            ttf = 'arial.ttf'
        elif platform.uname().system == 'Linux':
            ttf = '/usr/share/fonts/arial/ARIAL.TTF'
        font = ImageFont.truetype(ttf, 50)
        draw = ImageDraw.Draw(image)
        # 随机生成两条直线(一条贯穿上半部,一条贯穿下半部)
        draw.line((0, 0 + random.randint(0, height // 2),
                   width, 0 + random.randint(0, height // 2)),
                  fill=self.random_color())
        draw.line((0, height - random.randint(0, height // 2),
                   width, height - random.randint(0, height // 2)),
                  fill=self.random_color())
        # 输出文字
        code_str = ''
        for t in range(4):
            tmp = self.random_str()
            # print(tmp, ord(tmp))
            draw.text((60 * t + 10, 10), tmp, font=font, fill=self.random_color())
            code_str += tmp
        # 模糊处理
        image = image.filter(ImageFilter.EDGE_ENHANCE_MORE)
        # 图片保存
        base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        path_name = os.path.join(base_dir, 'static/images/', self.file_name)
        image.save(path_name, 'png')
        return code_str


if __name__ == '__main__':
    ver_code = VerificationCode('验证码')
    code = ver_code.generate_code()
  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,爬虫验证码处理是指通过代码自动处理网站上的验证码。在进行爬虫时,有些网站为了防止被自动爬取,会设置验证码。处理验证码的目的是为了能够绕过这些验证步骤,从而正常获取网页内容。 针对Python爬虫验证码处理,可以通过以下几种方法进行处理: 1. 手动识别验证码:可以使用第三方库如`pytesseract`或`Pillow`来识别验证码图片中的文字,然后将其输入到验证码输入框中。 2. 验证码识别API:有一些在线的验证码识别服务提供商,可以通过调用他们的API接口来实现验证码的识别。你可以在网上搜索相关的服务提供商并注册账号,然后将验证码图片上传给他们的接口,获取识别结果后再输入到验证码输入框中。 3. 机器学习模型识别:使用机器学习的方法,训练一个模型来自动识别验证码。这需要大量的验证码样本和一定的机器学习知识。 4. 破解验证码算法:有些验证码算法并不复杂,可以通过分析其生成规则,编写代码来破解验证码。但这种方法需要对具体的验证码算法有一定的了解,且可能需要不断跟进验证码算法的变化。 以上是几种常见的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_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值