python界面登录-验证码(三)

真的要好好学一下写作了,等好好的有条理的整理自己做过的工作才能方便的进行下一步的使用,能整理好自己的学习的东西才能提高效率,更加明确的进行下一步的工作提高自己的工作效率!!!

下一步就是在以下前提下进行网页的登录和课程的查询了:

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()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值