点触验证码是一种常见的反爬手段
解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系。
这需要非常专业的设备,比如TPU运算,和专业的开发和维护人员。
因此市面上有专业解决此类问题的OCR解决提供商。也就是第二种间接解决的方案,调用第三方接口。
12306自动登录
整体代码文件
其中pw文件下的password存放着需要的超级鹰账号与12306账号
12306_selenium.py
登录的步骤分为
1.找到登录页面2.输入用户名和密码3.获取验证码图片4.超级鹰识别图片5.点击图片验证6.点击登录
重难点:
- 超级鹰识别图片,这需要调用超级鹰的代码,并且选择准确类别.图片验证,我们自己做起来比较困难,所以交个超级鹰;
- 点击图片验证 使用动作链
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from chaojiying import Chaojiying_Client
from PW.password import P,CP
def input_username_password(username,password):
username_tag=wd.find_element_by_id("J-userName")
username_tag.send_keys(username)
password_tag=wd.find_element_by_id("J-password")
password_tag.send_keys(password)
def get_captcha():
captcha_local_path="D:/data_analysis\python_spider/tzAdvanceSpider/9.点触验证码/12306login.png"
wd.find_element_by_id("J-loginImg").screenshot(captcha_local_path)
return captcha_local_path
def picture_recognize(captcha_local_path):
with open(captcha_local_path,"rb") as f:
img=f.read()
#传给超级鹰识别
chaojiyingObj=Chaojiying_Client(username="douli666"