
# 开发时间 : 2022/6/24 10:23
import requests
import base64
import json#用于图鉴验证码识别
from lxml import etree
from selenium import webdriver
from selenium.webdrivermon.by import By
from time import sleep
from PIL import Image#图像 用于图像验证码抓取
def base64_api(uname, pwd, img, typeid):with open(img, 'rb') as f:base64_data = base64.ad())b64 = base64_data.decode()data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64}result = json.loads(requests.post("", json=data).text)if result['success']:return result["data"]["result"]else:return result["message"]return ""bro = webdriver.Chrome(r"E:UsersLenovoAppDataLocalGoogleChrome")
(".aspx?from=https%3A%2F%2Fwww.gushiwen%2F")
use_name_tag = bro.find_element(By.ID,"email")
pass_word_tag = bro.find_element(By.ID,"pwd")
code_tag = bro.find_element(By.ID,"code")
img_tag =bro.find_element(By.ID,'imgCode')
log_button_tag = bro.find_element(By.ID,"denglu")
bro.save_screenshot("./aaa.png")
location = img_tag.location#储存验证码图片的左上角像素位置
print(location)
size = img_tag.size#验证码标签的长和宽
rangle = (int(location["x"])*1.25,int(location['y'])*1.25,(int(location['x']) +size['width'])*1.25,(int(location['y']) + size['height'])*1.25)
#由于大部分笔记本默认屏幕适配1.25倍,所以像素点统一*1.25
print(rangle)
#验证码位置已确定
i = Image.open("./aaa.png")#整张界面
code_img_name = "./code.png"
frame = i.crop(rangle)
frame.save(code_img_name)#截取界面
result = base64_api(uname='***********', pwd='***********', img=code_img_name, typeid=3)
use_name_tag.send_keys("**********")
sleep(2)
pass_word_tag.send_keys("***********")
sleep(2)
code_tag.send_keys(result)
sleep(2)
log_button_tag.click()
page_text = bro.page_source
print(page_text)
sleep(5)
bro.quit()
本文发布于:2024-02-03 01:11:31,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170689389347665.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |