山东大学本科生爬虫自动选课--(水)

山东大学本科生爬虫自动选课–(水)

大四老学长了,想整个水一点的限选课,结果没课余量;

so,想写个爬虫自动抢课,如果有某位同学退了课的话(或许苦逼的点错了?)

很水的爬虫,大佬轻喷。

  1. 登录选课系统
  2. 定位到课余量
  3. 课余量为0,刷新页面,等若干秒,转2
  4. 直接选课

直接上代码

from selenium import webdriver
from selenium.webdriver import ActionChains
import time

# 调起浏览器,打开网页
url ="http://bkjwxk.sdu.edu.cn/f/common/main"
driver = webdriver.Chrome()
driver.get(url)

# 用于定位登录
pos1 ='//*[@id="un"]'
pos2 ='//*[@id="pd"]'
pos3 ='//*[@id="index_login_btn"]'
username = '*****'
password = '*****'

actions=ActionChains(driver)
# 学生登录
pos='//*[@id="redirectButtonId"]'
driver.find_element_by_xpath(pos).click()
driver.find_element_by_xpath(pos1).clear()
driver.find_element_by_xpath(pos1).send_keys(username)
driver.find_element_by_xpath(pos2).clear()
driver.find_element_by_xpath(pos2).send_keys(password)
driver.find_element_by_xpath(pos3).click()
actions.perform()
driver.switch_to_window(driver.window_handles[-1])

# 用于定位课余量
# 很水的是,我直接在网页检查里,找到位置,右键copy的xpath;
p1='//*[@id="wsxk"]'
p2='//*[@id="xxkxk"]'
p3='//*[@id="kcTable"]/tbody/tr[5]/td[7]/span'
while True:
    try:
        while True:       
            driver.find_element_by_xpath(p1).click()
            driver.switch_to_window(driver.window_handles[-1])

            driver.find_element_by_xpath(p2).click()
            driver.switch_to_window(driver.window_handles[-1])

            kk=driver.find_element_by_xpath(p3)
            if kk.text != '0':
                break
            # 课余量是0 就刷新页面(这网站还要把前面的定位过程再来一遍,然后就。。
            # 网页刷新成鬼畜了,就一直抖抖抖。。。
            driver.refresh()
        # 有课余量就选课啦
        p4='//*[@id="kcTable"]/tbody/tr[5]/td[11]/a'
        driver.find_element_by_xpath(p4).click()
        driver.switch_to_window(driver.window_handles[-1])
        p5='/html/body/div[1]/div/table/tbody/tr[2]/td[2]/div/table/tbody/tr[3]/td/div/button[1]'
        driver.find_element_by_xpath(p5).click()
        actions.perform()
        exit(0)
        # 整了这个try,因为,前面定位元素,有时会找不到,于是这么用了两个while
        # 至于原因,我也不知道(水!)
    except BaseException as msg:
	    time.sleep(10)  # 让电脑休息会,心疼她
    # 主要看同学退课,及时抢先选上。

上午上完课回来,啊,我选上了!

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值