简介:
这篇文章是讲述如何使用打码软件处理登陆时的验证码(以微博举例),文章使用超级鹰api举例处理。
超级鹰介绍:
这个平台可以处理大部分类型的验证码,而且基本都是一次识别成功。
使用步骤:
1.首先注册用户id,然后参考开发文档,下载示例代码,或者直接下载我这里的代码也可以
链接:https://pan.baidu.com/s/1eqZ_lZm3hrWfM7nDj0-eCQ
提取码:kdjz
2.生成一个用来接入接口的软件ID,如下
3.在爬虫中的使用范例
import chaojiying
a = chaojiying.Chaojiying_Client('','','')#填写用户名,填写密码,填写软件id
im = open('', 'rb').read()#图片的路径
code_info = a.PostPic(im, 1902)
code = code_info['pic_str'] #code即返回的验证码
接下来我们就以模拟登陆微博举例:
这个过程还有一个问题:
如何获取验证码?
这里有一个通用方法:思路是先在浏览器页面上截图后,再用Image处理截出验证码。
这里就需要确定验证码的位置的坐标。这里我们可以用屏幕坐标工具获得网页中验证码横坐标和纵坐标的范围,横坐标不变,纵坐标要减去浏览器上方边框的长度(如图3黑色长度),就得到了截图的范围。
屏幕坐标工具:
链接:https://pan.baidu.com/s/191BjQIjIwjcaTOyrSbwX6w
提取码:e2ih
最后得到的验证码大致是这样的,然后用超级鹰识别就可以了。
如何模拟登陆可以看看我的上一篇文章的分析前面的一部分
Russianjacker:爬虫小白学习日志(1) 使用selenium批量下载pdf,ppt(无验证码)
这里我就直接贴代码啦。
import scrapy
from selenium import webdriver
import time
from PIL import Image
class WeiboSpider(scrapy.Spider):
name = 'weibo'
allowed_domains = ['https://weibo.com/']
start_urls = ['https://weibo.com/']
def parse(self, response):
browser = webdriver.Chrome(executable_path="C:/Users/Mr JIE/Chromedriver2.33/chromedriver.exe")
browser.get('https://weibo.com')
time.sleep(15)
browser.maximize_window()
browser.find_elements_by_class_name("W_input")[1].send_keys("")#账号
time.sleep(3)
browser.find_elements_by_class_name("W_input")[2].send_keys("")#密码
time.sleep(3)
# 手动截图处理验证码
browser.get_screenshot_as_file('yzm.png')
yzm = Image.open('yzm.png')
# 这里屏幕纵坐标值都要减105才等于真实值
left = 1332
top = 228
right = 1460
bottom = 276
yzm = yzm.crop((left,top,right,bottom))#两个括号没错
yzm.save('yzm.png')
from ArticleSpider.common import chaojiying
a = chaojiying.Chaojiying_Client('','','')#填写用户名,填写密码,填写软件id
im = open('', 'rb').read()#图片的路径
code = a.PostPic(im, 1902)
browser.find_elements_by_class_name("W_input")[3].send_keys(code['pic_str'])
time.sleep(3)
browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']").click()
time.sleep(3000)
pass
如果看完有帮助点个赞鸭,谢谢