真的要好好学一下写作了,等好好的有条理的整理自己做过的工作才能方便的进行下一步的使用,能整理好自己的学习的东西才能提高效率,更加明确的进行下一步的工作提高自己的工作效率!!!
下一步就是在以下前提下进行网页的登录和课程的查询了:
import os
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox()
url='https://sso.dlut.edu.cn/cas/login?service=http://202.118.65.123/pyxx/LoginCAS.aspx?a=1'
driver.get(url) # 进入登录页面
try: # 这一步是页面加载等待,20,就是20s,如果页面20s还没加载出来就有异常,until后面是需要加载的页面上面的一个元素,检查不到这个元素说明页面还没有加载出来
CourseManagement = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.CLASS_NAME, 'login_box_landing_btn')))
except Exception as e:
print(e)
# XPATH就是绝对路径,下面会介绍一个网上找的小工具,可以快速获取XPATH
account = driver.find_element_by_xpath('//input[@id="un"]') #定位验证码
passwd = driver.find_element_by_xpath('//input[@id="pd"]') #定位验证码
# 往表单里面填写数据,旧版系统不需要填写验证码
account.send_keys('学号')
passwd.send_keys('密码)
# 找到登录按钮
button = driver.find_element_by_xpath('//INPUT[@class="login_box_landing_btn"]')
# 点击登录按钮,进行登录操作
button.click()
driver.maximize_window() # 将浏览器最大化
try:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.NAME, "MenuFrame"))
)
except Exception as e:
print(e)
# finally:
# driver.quit()
# 由于登录后的页面是frame构成的,所以我们需要转换到带按钮的那个frame页面,知道我们要的按钮
driver.switch_to.frame('MenuFrame')
# 找到网上选课的标签
a = driver.find_element(By.XPATH, '//a[text()="学生网上选课"]')
# 获取该标签的href属性,并用浏览器重新访问这个href
driver.get(a.get_attribute('href'))
try:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.CLASS_NAME, "GridViewStyle"))
)
except Exception as e:
print(e)
# finally:
# driver.quit()
# 下面的过程解释解析这个代课程的frame,找到我要的课程编号进一步操作
html = driver.page_source
soup = BeautifulSoup(html,'lxml')
row_list = soup.find_all('tr')
for row in row_list:
col_list = row.find_all('td')
for col in col_list:
if col.text == '2030141384':
print(row.select('a'))
# driver.quit()
# driver.close()