网页编辑与网站编辑,搜索公司信息的网站,wordpress图片间距,什么是管理主要内容#xff1a;模拟bilibili账号密码登录#xff0c;不要实现的的实现功能是单击登录按钮#xff0c;切换登录方式#xff0c; 输入账号和密码#xff0c;然后完成图片点击验证#xff0c;最后单击立即登录按钮。
1、第一步#xff1a;通过selenium模块访问bilibi… 主要内容模拟bilibili账号密码登录不要实现的的实现功能是单击登录按钮切换登录方式 输入账号和密码然后完成图片点击验证最后单击立即登录按钮。
1、第一步通过selenium模块访问bilibili的登录页面定位并单击账号登陆按钮然后分别定位账号和密码输入框并输入账号和密码。
2、第二步识别图片中图形的位置。
3、第三步进行按照图形识别顺序进行点击。
4、第四步点击确认标签。
##############################
##作者白雪公主的后妈
##时间2024年1月12日
##主题Python爬虫进阶——案例模拟bilibili登录
##主要内容模拟bilibili登录
##############################模拟bilibili账号密码登录不要实现的的实现功能是单击登录按钮切换登录方式
输入账号和密码然后完成图片点击验证最后单击立即登录按钮#第一步通过selenium模块访问bilibili的登录页面定位并单击账号登陆按钮然后分别定位账号和密码输入框并输入账号和密码。
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
#################################
import base64
import json
import requests
import pandas as pd
#################################
# from PIL import Image
service Service(E:\\python\\Scripts\\chromedriver.exe) #实例化一个谷歌浏览器
browser webdriver.Chrome(serviceservice)
browser.get(https://www.bilibili.com/) #访问bilibili的登录页面 #访问淘宝网页首页login_user_page browser.find_element(By.XPATH,//*[idi_cecream]/div[2]/div[1]/div[1]/ul[2]/li[1]/li/div/div/span) #通过XPath表达式定位账号登陆按钮
login_user_page.click() #单击账号登录按钮
time.sleep(2)
username_input browser.find_element(By.XPATH,//*[classlogin-pwd-wp]/form/div[1]/input) #通过标点ID定位账号输入框
password_input browser.find_element(By.XPATH,//*[classlogin-pwd-wp]/form/div[3]/input) #通过标点ID定位密码输入框
username_input.send_keys(123456) #在账号框中输入123456
time.sleep(2) #停留两秒模拟真是人类操作
password_input.send_keys(234567) #在密码框中输入234567
login_button browser.find_element(By.XPATH,//*[classbtn_primary ]) #通过XPath表达式定位登陆按钮
login_button.click() #单击账号登录按钮
time.sleep(2)#第二步识别图片中图形的位置
#############################
def base64_api(uname, pwd, img):验证码识别函数:param uname: 快识别用户名:param pwd: 快识别密码:param img: 图片路径:return: 返回坐标点with open(img, rb) as f:base64_data base64.b64encode(f.read())b64 base64_data.decode()data {username: uname, password: pwd, typeid: 21, image: b64}result json.loads(requests.post(http://api.ttshitu.com/predict, jsondata).text)if result[success]:return result[data][result]else:# 注意返回 人工不足等 错误情况 请加逻辑处理防止脚本卡死 继续重新 识别return result[message]
############################## 解决验证码自动识别问题
Img_input browser.find_element(By.XPATH,//*[classgeetest_holder geetest_silver])
Img_input.screenshot(yzm.png)#对图片进行解码获取验证码识别以后的结果
result base64_api(XXXX,XXXX,yzm.png)
# print(验证码识别结果,result) #结果33,254|232,70|214,133|90,236
result_list result.split(|)
print(result_list)#第三步进行按照图形识别顺序进行点击 借助selenium执行点击操作
for i in result_list:x result_list.split(,)[0] #构建x,y轴坐标y result_list.split(,)[1]#ActionChains为动作链对象指定标签元素进行点击Img_input, int(x), int(y)click()点击操作perform()执行动作链ActionChains(browser).move_to_element_with_offset(Img_input, int(x), int(y)).click().perform()
time.sleep(2)#第四步点击确认标签
OK_button browser.find_element(By.XPATH, //*[classgeetest_commit_tip])
OK_button.click()
time.sleep(4)
browser.quit() #关闭所有页面退出浏览器驱动程序