Python自动部署码云:
1:大概思路:
其实还是打开浏览器登录,只不过不用你自己再一步一步登录部署干啥。python代替你完成了这个过程。我用的谷歌浏览器,谷歌真香,用的人都说爽。
2:下载chromedriver.exe文件:
首先打开你的谷歌浏览器。直接在地址栏输入:chrome://settings/help.这样会出来和你浏览器相对应的版本。如下图所示:
我的浏览器版本是81.0.4044.9.我下载的版本只要是http://81.0.4044.xxx就可以。下载文件的链接是:http://chromedriver.storage.googleapis.com/index.html。 下载完文件后把这个exe文件当到谷歌浏览器的路径下:我的路径为:E:ChromeApplication。同时还要把这个文件放到你电脑上python的安装根目录下。
3:开始编写程序:
这里我们用到的是python的以下这些库:
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器.
在爬虫中的应用主要是用来解决JS渲染的问题。
1.使用前需要安装这个第三方库,CMD下:
pip install selenium
安装完这个库就可以开始写代码了。
1:模拟浏览器来到码云的登录界面,代码如下:
# 模拟浏览器打开到gitee登录界面
driver = webdriver.Chrome()
driver.get('https://gitee.com/login')
# 将窗口最大化
driver.maximize_window()
time.sleep(2)
这时候我们打开这个界面后需要输入账号和密码登录。
这时候我们会有一个疑惑,如何定位输入账号的地方的和输入密码的地方,这时候我们需要一点html的知识。就是如何让python定位到账号和密码的输入框。这个时候我们就可以谷歌浏览器的开发者工具来分析:
html输入框坑定是放在一个div里的。而且通过Id号很方便,来确定的可以从id号去确认。~~我的html学的很垃圾。可能有些专业术语表达不清楚。~~
这里我们鼠标定位到输入框,右键,点击检查。
然后就会发现出现以下:
获得密码输入框的id也是和上面一样。我们得到了就可以用库里面的函数来定位到这个位置并且把你的账号和密码自动填入。代码如下:
# 输入账号--通过html的id属性定位输入位置--改为你的账号
user_login = driver.find_element_by_id('user_login')
user_login.send_keys("你的账号")
# 输入密码--通过html的id属性定位输入位置--改为你的密码
driver.find_element_by_id('user_password').send_keys("你的密码")
接下来就是写程序点击登录这个按钮。那么这个按钮的位置如何确定呢。我们这里是采用Xpath
来确定的。获取xpath也有一个快捷的方法。
依旧按上面的方法选中这一块,右键选择检查,定位到这一块的html代码。然后右键这一块。选择copy full xpath.
如下图所示:
得到了xpath
,接着写代码:
# 点击登录按钮--通过xpath确定点击位置
driver.find_element_by_xpath(
'/html/body/div[2]/div[2]/div[1]/div/div[2]/div/form[1]/div[2]/div/div/div[4]/input').click()
time.sleep(2)
Python方便的地方就是有相应的库函数。这里也是。
登陆完后,我们需要来到部署静态网页的页面:一般情况下,这个页面的URL链接为:'https://gitee.com/xxxxx/xxxxx/pages'
这时候我们从登录后的界面跳转到以上的URL链接界面。之后写程序点击部署那个按钮。代码如下:
# 切换到gitee pages界面--改为you_gitee_id
driver.get('https://gitee.com/你项目的个人地址/项目名称/pages')
# 点击更新按钮--通过xpath确定点击位置
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[2]/div[1]/form/div[7]').click()
# 确认更新提示框--这个函数的作用是确认提示框
Alert(driver).accept()
之后等待部署,这里可以生成一个文件去记录你更新时间,代码如下;
# 等待5秒更新
time.sleep(5)
# 这个print
print("成功")
# 脚本运行成功,退出浏览器
driver.quit()
fp = open("F:log.txt", "a+")
now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
fp.write("auto update time:{0}n".format(now_time))
fp.close()
这样就完成想象中的自动部署把。当然氪金一年99块钱也是能自动推送后部署的,但是贫穷限制了我的想象力。只有出此下策。哈哈哈。