从今天开始,我决定每三天一篇博客,不知道能不能完成…
最近考试结束了,想到给悻悻学子一个惊吓 惊喜🙂,话不多说,开造
实现自动化下载好分数数据selenium
简单分析一下流程
- 实现登录好分数
- 获取学生数据
- 实现下载
1.登录好分数
好分数网址
接下来就是用selenium实施登录,代码如下
browser = webdriver.Chrome()#声明浏览器
url = 'https://hfs.yunxiao.com/'
browser.get(url)#打开网页
a=browser.find_element_by_xpath('//*[@id="app"]/div/div[2]/div[2]/div/div[1]/div/ul/li[1]/div/div[1]')
a.click()#进入登录界面
b=browser.find_element_by_xpath('//*[@id="account"]')#定位输入框
b.clear()
b.send_keys(u)#输入用户名
b2=browser.find_element_by_xpath('//*[@id="password"]')
b2.clear()
b2.send_keys(p)#输入用户密码
c=browser.find_element_by_xpath('//*[@id="login"]')
c.click()#登录完成
2.登录完成后进入学生信息管理
分析一波
进入页面后有一个弹窗
此时注意:新标签页弹窗,则需要进行窗口的切换
代码
// An highlighted block
time.sleep(5)#等待页面加载完毕
handles = browser.window_handles
browser.switch_to.window(handles[1])#切换页面
e=browser.find_element_by_xpath('/html/body/div[1]/section/section/div/div[4]')
e.click()#消除div弹窗
3.下载
进入分析之后点击进入
进入之后不难发现浏览器在默认大小下看不到下载按钮,所以需要最大化浏览器,再下载,最后关闭浏览器
f=browser.find_element_by_xpath('/html/body/div/section/section/div/div[1]/div[1]/div/main/section/div/button/span')
f.click()
time.sleep(2)
g=browser.find_element_by_xpath('//*[@id="reset"]/section[2]/div/div[3]/a/div/div[1]/section/span[2]')
g.click()
browser.maximize_window()
time.sleep(5)
h=browser.find_element_by_xpath('//*[@id="reset"]/section[2]/div[1]/div[2]/section/section/section[1]/div[1]/div[3]/button/span')
h.click()
time.sleep(20)
browser.close()
总而言之这个项目需要注意的只有新标签页弹窗需要进行窗口切换,好了完整代码附上
from selenium import webdriver#导入库
import time
browser = webdriver.Chrome()#声明浏览器
url = 'https://hfs.yunxiao.com/'
browser.get(url)
a=browser.find_element_by_xpath('//*[@id="app"]/div/div[2]/div[2]/div/div[1]/div/ul/li[1]/div/div[1]')
a.click()
b=browser.find_element_by_xpath('//*[@id="account"]')
b.clear()
b.send_keys(u)
b2=browser.find_element_by_xpath('//*[@id="password"]')
b2.clear()
b2.send_keys(p)
c=browser.find_element_by_xpath('//*[@id="login"]')
c.click()
time.sleep(5)
d=browser.find_element_by_xpath('//*[@id="5d31977d0000038049728c73"]/div/div/div[5]/div[2]/div/div/div[1]/img')
d.click()
time.sleep(5)
handles = browser.window_handles
browser.switch_to.window(handles[1])
e=browser.find_element_by_xpath('/html/body/div[1]/section/section/div/div[4]')
e.click()
f=browser.find_element_by_xpath('/html/body/div/section/section/div/div[1]/div[1]/div/main/section/div/button/span')
f.click()
time.sleep(2)
g=browser.find_element_by_xpath('//*[@id="reset"]/section[2]/div/div[3]/a/div/div[1]/section/span[2]')
g.click()
browser.maximize_window()
time.sleep(5)
h=browser.find_element_by_xpath('//*[@id="reset"]/section[2]/div[1]/div[2]/section/section/section[1]/div[1]/div[3]/button/span')
h.click()
time.sleep(20)
browser.close()
亲测可用~~