编写python脚本实现自动更新码云pages


一、前言

使用码云的pages部署hexo静态博客以后,每次写完都要去手动更新,实在是麻烦。当然只要开会员,这个问题根本不叫问题。但是,对于一个自身白嫖党而言,不可能的,这辈子也不可能的。

所以,只能自力更生、艰苦奋斗了。

二、想法

利用selenium编写python脚本,实现模拟登录更新,这样就不用了每次都自己登录码云,然后手动更新了。

三、代码

from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 基本信息
username = 'xxxx'  # 账号
password = 'xxxx'     # 密码
pickname = 'xxxx'   # 用户名
repo = 'xxxx'       # 仓库名
driver = r'D:\Desktop\chromedriver.exe'     # 谷歌驱动的路径

options = ChromeOptions()
options.add_argument("--headless")      # 不显示界面
options.add_argument("--start-maximized")       # 窗口最大化
options.add_argument("--disable-plugins")       # 禁止扩展
chrome = webdriver.Chrome(executable_path=driver, options=options)
chrome.get('https://gitee.com/login')

# 输入用户名、密码,登录
username_input = chrome.find_element_by_id("user_login")
password_input=  chrome.find_element_by_id("user_password")
login_btn = chrome.find_element_by_name("commit")

username_input.send_keys(username)
password_input.send_keys(password)
login_btn.click()

# 等待页面加载完成
WebDriverWait(chrome, 5).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "ml-1")))

# 跳转到page页面
chrome.get('https://gitee.com/' + pickname + '/' + repo + '/pages')

# 等待页面加载完成
WebDriverWait(chrome, 5).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "update_deploy")))

# 执行js代码,使页面向下滚动
chrome.execute_script("window.scrollTo(100, document.body.scrollHeight);")
# 点击更新按钮
update_btn = chrome.find_element_by_class_name("update_deploy")
update_btn.click()

# 点击确认框
alert = chrome.switch_to.alert
alert.accept()

print('gitee pages 更新成功'.center(40, '-'))
chrome.quit()

四、后续目标

目前基本目标已经可以实现,不过每次还需要手动执行脚本,拉胯😢。所以,接下来试着将脚本放到GitHub action上边去,实时监控码云仓库变化,实现实时更新。


文章作者: Arvin He
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Arvin He !
评论
  目录