zoukankan      html  css  js  c++  java
  • python3爬虫之验证码的识别——第三方平台超级鹰

    用ocr库进行图形验证码的正确率实在是不太行

    而且这个图像处理这一行当实在是很深,不是一天两天就能搞定的

    因此这里推荐一个第三方平台——超级鹰http://www.chaojiying.com

    小声哔哔,真的没收广告费

    首先来看一下超级鹰都能识别啥?http://www.chaojiying.com/price.html

    基本能涵盖常见的情况,当然不同的项目所需的积分不同(充值对应积分,首次关注公众号送1000积分)

    话不多说,直接看开发文档http://www.chaojiying.com/api.html

    选择python 的Demo下载,不过需要更改几处,因为这个Demo是Python2写的

    python2下:

     1 #!/usr/bin/env python
     2 # coding:utf-8
     3 
     4 import requests
     5 from hashlib import md5
     6 
     7 class Chaojiying_Client(object):
     8 
     9     def __init__(self, username, password, soft_id):
    10         self.username = username
    11         password =  password.encode('utf8')
    12         self.password = md5(password).hexdigest()
    13         self.soft_id = soft_id
    14         self.base_params = {
    15             'user': self.username,
    16             'pass2': self.password,
    17             'softid': self.soft_id,
    18         }
    19         self.headers = {
    20             'Connection': 'Keep-Alive',
    21             'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
    22         }
    23 
    24     def PostPic(self, im, codetype):
    25         """
    26         im: 图片字节
    27         codetype: 题目类型 参考 http://www.chaojiying.com/price.html
    28         """
    29         params = {
    30             'codetype': codetype,
    31         }
    32         params.update(self.base_params)
    33         files = {'userfile': ('ccc.jpg', im)}
    34         r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
    35         return r.json()
    36 
    37     def ReportError(self, im_id):
    38         """
    39         im_id:报错题目的图片ID
    40         """
    41         params = {
    42             'id': im_id,
    43         }
    44         params.update(self.base_params)
    45         r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
    46         return r.json()
    47 
    48 
    49 if __name__ == '__main__':
    50     chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001')    #用户中心>>软件ID 生成一个替换 96001
    51     im = open('a.jpg', 'rb').read()                                                    #本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
    52     print chaojiying.PostPic(im, 1902)                                                #1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()

    只需要把最后一行的print后面加括号()即可

    最后三行所需要的参数:

    超级鹰用户名和密码:注册这个网站的

    软件ID:在用户中心处获取

     图片路径:注意相对路径和绝对路径,案例中附带了一个图片a.jpg

    验证码类型:在价格体系中查询 http://www.chaojiying.com/price.html

    拿Demo中的图片先测试一下哈!

    运行结果(通过程序可知是json格式的数据):

    {'err_no': 0, 'err_str': 'OK', 'pic_id': '9077217532830000008', 'pic_str': '7261', 'md5': '09ba9448333d153c69bd29da7c7f3369'}

    返回说明:
    err_no,(数值) 返回代码
    err_str,(字符串) 中文描述的返回信息 
    pic_id,(字符串) 图片标识号,或图片id号
    pic_str,(字符串) 识别出的结果
    md5,(字符串) md5校验值,用来校验此条数据返回是否真实有效

    试一下其他图片

     

    {'err_no': 0, 'err_str': 'OK', 'pic_id': '2077218082830000010', 'pic_str': '46168', 'md5': '443788486ea90d7f249f278d5694053d'}

    再测试一下带有中文的图片

    {'err_no': 0, 'err_str': 'OK', 'pic_id': '3077218112830000013', 'pic_str': '基加证湿站代', 'md5': '61a282f8c45c8ac35d6904ff315e991d'}

     总结下来还是比较靠谱滴!

  • 相关阅读:
    Linux
    C/C++ 引入头文件时 #include<***.h> 与 #include"***.h" 区别
    2018.01.10
    java 选择结构if
    引用数据类型 Scanner Random
    java 运算符
    java变量和数据类型
    Java se基础
    数据库设计
    MySQL 其他基础知识
  • 原文地址:https://www.cnblogs.com/aby321/p/11359659.html
Copyright © 2011-2022 走看看