# 开发时间 : 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 条评论) |