美文网首页python
Python爬虫 | 超级鹰识别验证码

Python爬虫 | 超级鹰识别验证码

作者: 生信师姐 | 来源:发表于2020-05-13 08:49 被阅读0次

1. 超级鹰介绍

打开http://www.chaojiying.com/user/注册用户,生成软件ID

下载python的demo文件

查看打码类型

2. 使用方法

from chaojiying import Chaojiying

CHAOJIYING_USERNAME = 'xxxxxx'      # 账号
CHAOJIYING_PASSWORD = '123456'      # 密码
CHAOJIYING_SOFT_ID = 894611         # 生成的唯一key
CHAOJIYING_KIND = 9004              # 题型

cjy = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)  # 创建实例
result = cjy.post_pic(bytes_array.getvalue(), CHAOJIYING_KIND)                  # 上传图片

3. 逻辑实现

(1)获取需要识别的图片
在获取需要的识别的图片时,一般需要将图片以及文字提示,通过selenium的截图方法,获取到所需的信息。

self.browser.save_screenshot('aa.png') # 先把整个屏幕截图
element = self.browser.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div[3]/div/div[2]/div[3]/div/div') # 获取图片所在的div

left = element.location['x']
top = element.location['y'] - 100
right = element.location['x'] + element.size['width']
bottom = element.location['y'] + element.size['height']

im = Image.open('aa.png')
captcha = im.crop((left, top, right, bottom)) # 根据div的长宽在整个屏幕上面截图
captcha.save('captcha.png')

2.识别需要点击的坐标
把需要识别的图片和提示一起上传,返回坐标

result = self.chaojiying.post_pic(bytes_array.getvalue(), CHAOJIYING_KIND)  # 提交图片进行验证
groups = result.get('pic_str').split('|')                                   # 对返回的数据进行解析 获取x坐标和y坐标
locations = [[int(number) for number in group.split(',')] for group in groups]

3.根据坐标顺序依次页面进行点击
根据x和y坐标依次点击图片当中的文字,self.get_touclick_element() 获取图片的位置

move_to_element_with_offset 将鼠标移动到距某个元素多少距离的位置

for location in locations:
  ActionChains(self.browser).move_to_element_with_offset(self.get_touclick_element(), location[0],location[1]).click().perform()
  time.sleep(1)

详情参考:http://www.chaojiying.com/price.html#table-item1

实例一:简书 9004

实例二:12306

相关文章

网友评论

    本文标题:Python爬虫 | 超级鹰识别验证码

    本文链接:https://www.haomeiwen.com/subject/kurgihtx.html