因为某网站白嫖资源需要签到获取积分,并且自己容易搞忘,所以在网上搜寻python实现自动签到的资料,完成之后写一篇文章来记录一下;
首先我们需要一个chromedriver.exe 我们可以在淘宝镜像里面找到与自己的谷歌浏览器版本一致的插件.
https://npm.taobao.org/mirrors/chromedriver/
或者用以下国外网站(上面版本不行就下面这个) https://sites.google.com/chromium.org/driver
pip install selenium
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
def morning_clockin(var=None):
# 找到插件的路径,使用它驱动操作
browser = webdriver.Chrome('C:/Users/19081/Desktop/AutomaticClockIn/chromedriver_win32/chromedriver.exe')
# 选择需要打卡的网址,填入你的签到网页
browser.get('https://www.cgalpha.com/')
# 有时候会弹出一个界面 需要点击确定
# 从 selenium 4.3.0 开始,find _ element_by_* 方法已被弃用并删除。
try:
browser.find_element(By.CLASS_NAME, 'popup-btn').click()
except Exception as e:
print(e)
time.sleep(3)
# 通过class点击登录按钮显示登录页面
try:
browser.find_element(By.CLASS_NAME, 'fa-plug').click()
except Exception as e:
print(e)
time.sleep(3)
# 使用selenium点击无反应 使用用js代替
js = 'return document.getElementsByClassName("fa-user")[0].click()'
print(browser.execute_script(js))
# browser.find_element(By.CLASS_NAME, 'login-btn').click()
# my_error_element = browser.find_element(By.CLASS_NAME, 'fa-user')
# ActionChains(browser).move_to_element(my_error_element).click()
time.sleep(3)
# 输入账号密码
browser.find_element(By.NAME, 'username').send_keys("your username")
browser.find_element(By.NAME, 'password').send_keys("your password")
time.sleep(3)
# 点击登录
browser.find_element(By.CLASS_NAME, 'go-login').click()
time.sleep(10)
# 点击个人主页
js = 'return document.getElementsByClassName("menu-avatar-img")[0].click()'
print(browser.execute_script(js))
time.sleep(3)
# 点击签到
browser.find_element(By.CLASS_NAME, 'go-user-qiandao').click()
print('ok')
time.sleep(3)
browser.close()
if __name__ == '__main__':
morning_clockin()
参考资料: https://blog.csdn.net/l8947943/article/details/119898781
自己遇到的坑: 因为自己py安装了不同版本在不同位置, 所以最后计划运行命令错了, 我是用的pycharm编译器, 可以点开External Libraries看自己python的路径; 还有就是如果selenium模拟点击没有反应, 就应该用js代码来点击.