古诗文网selenium模拟登陆

# 开发时间 : 2022/6/24 10:23
import requests
import base64
import json#用于图鉴验证码识别
from lxml import etree
from selenium import webdriver
from selenium.webdriver.common.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.b64encode(f.read())
        b64 = base64_data.decode()
    data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64}
    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 ""

bro = webdriver.Chrome(r"E:\Users\Lenovo\AppData\Local\Google\Chrome\Application\chromedriver.exe")
bro.get("https://so.gushiwen.cn/user/login.aspx?from=https%3A%2F%2Fwww.gushiwen.cn%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()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值