selenium_图鉴(设置默认用户名,密码)_点选图片截屏出来交给图鉴_截图保存在本地tu.png里面_过期

# 可以选择先登录,登陆后,放慢抓取速度
# 不登录,直接抓,放慢抓取速度
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
import time
import json
import requests
# 事件链 1.找它 2.移动到这个位置 3.点它 Action 动作 Chains 链
from selenium.webdriver.common.action_chains import ActionChains


# 图鉴设置默认的用户名,密码
def base64_api(img, typeid=27, uname="q6035945", pwd="q6035945"): # 用户名,密码,图片,类型
data = {"username": uname, "password": pwd, "typeid": typeid, "image": img}
result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
if result['success']:
return result["data"]["result"]
else:
# !!!!!!!注意:返回 人工不足等 错误情况 请加逻辑处理防止脚本卡死 继续重新 识别
return result["message"]
# return ""


web = Chrome()
web.get('https://www.zhipin.com/web/user/?ka=header-login')
web.find_element(By.XPATH, '//*[@id="wrap"]/div/div[2]/div[2]/div[2]/div[1]/div[1]/div/span[2]/input').send_keys('18190668010')
# .send_keys('18190668010') 输入
web.find_element(By.XPATH, '//*[@id="wrap"]/div/div[2]/div/div[2]/div[1]/div[3]/button').click()
# .click() 点击

# 获取到验证码的图片的div
# 把整个点选图片截屏出来交给图鉴
verify_div = web.find_element(By.XPATH, '//*[@id="wrap"]/div/div[2]/div/div[2]/div[1]/div') # 通过xpath定位图片位置
verify_div.screenshot("tu.png") # 截图保存在本地tu.png里面
tu = verify_div.screenshot_as_base64 # 截图保存成b64的字符串
# print(tu) # 这里主要看打印的最前面,有没有b64 字样,没有就是对的
verify_code = base64_api(tu) # 开始识别
# print(verify_code)
# 怎么验证,把图片放大,用qq截图,从头开始划定
for p in verify_code.split("|"): # 179,277|109,161 先循环,再切割
x = int(p.split(",")[0]) # 字符串转整数型
y = int(p.split(",")[1])
# 这个事件要发生在谁身上,浏览器web move_to_element_with_offset 移动到某个元素,以偏移量的方式移动(基准点,x坐标,y坐标)
# .perform() 提交事件
ActionChains(web).move_to_element_with_offset(verify_div, xoffset=x, yoffset=y).click().perform()
time.sleep(1)


posted @ 2023-08-11 22:55  严永富  阅读(20)  评论(0)    收藏  举报