python爬虫生活不易 我用python程序员

曲师大抢课tool(python版)

2018-06-07  本文已影响669人  记事本的记事本

相信大家已经被教务系统折腾的无可奈何..
于是他应(jian)运(qing)而(fu)出(dan)

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
headers = {
    # 'Host': 'ids.qfnu.edu.cn',
    'Connection': 'keep-alive',
    'Cache-Control': 'max-age=0',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like     Gecko) Chrome/55.0.2883.95 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    # 'Referer': 'http://202.194.188.19/menu/top.jsp',
    'Accept-Encoding': 'gzip, deflate, sdch',
    'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4'
}

session = requests.session()
#教务系统的登陆
def login(username,password):

    session = requests.session()
    resp = session.get("http://ids.qfnu.edu.cn/authserver/login?service=http%3A%2F%2F202.194.188.19%2Fcaslogin.jsp", headers=headers)
    print(resp.cookies)
    bsObj = BeautifulSoup(resp.text, "html.parser")
    lt = bsObj.find('input', {'name':'lt'})['value']
    execution = bsObj.find('input', {'name':'execution'})['value']
    print(lt)
    print(execution)
    params = {
        'username': username,
        'password': password,
        'lt': lt,
        'execution': 'e1s1',
        '_eventId': 'submit',
        'rmShown': '1'
    }
    resp = session.post("http://ids.qfnu.edu.cn/authserver/login?service=http%3A%2F%2F202.194.188.19%2Fcaslogin.jsp", data=params, headers=headers)

    return session
#查询自己的课表
def cxkb(session):
    cxkb=session.get("http://202.194.188.19/xkAction.do?actionType=6")
    with open("个人课表1.html", "w") as f:
               f.write(cxkb.text)


#http://202.194.188.19/xkAction.do?actionType=2&pageNumber=19 get
def cxqk_kb(page,session):
    for page in range(1,page+1):
        r = session.get("http://202.194.188.19/xkAction.do?actionType=-1")

        r = session.get("http://202.194.188.19/xkAction.do?actionType=2&pageNumber=-1&cx=ori")

        #r = s.post("http://" + jwc_ip + "/xkAction.do", data = tparam, timeout = time_delay)
        fy_url ='http://202.194.188.19/xkAction.do?actionType=2&pageNumber={page}'.format(page=page)
        cxkb=session.get(fy_url)
        print(cxkb.content)
        with open("选课"+str(page)+".html", "w") as f:
               f.write(cxkb.text)


#抢课系统
#http://202.194.188.19/xkAction.do kcId=520002_101&preActionType=2&actionType=9
def choseClass(kch,kxh,session):
    kcId=str(kch)+'_'+str(kxh)
    print(kcId)
    params={
        'kcId': kch+kxh,
        'preActionType':'5',
        'actionType':'9'
    }
    params1={
        'kcId': kch+kxh,
        'preActionType':'2',
        'actionType':'9'
}
    tparam = {
    "kch": "510002",
    "cxkxh": "29",
    "kcm" : "",
    "skjs": "",
    "kkxsjc": "",
    "skxq": "",
    "skjc": "",
    "pageNumber": "-2",
    "preActionType": "2",
    "actionType": "5"
  }
    r = session.get("http://202.194.188.19/xkAction.do?actionType=-1")
    r = session.get("http://202.194.188.19/xkAction.do?actionType=2&pageNumber=-1&cx=ori")
    r = session.post("http://202.194.188.19/xkAction.do", data = tparam)
    resp = session.post("http://202.194.188.19/xkAction.do",data =params)
    with open("test.html", "w") as f:

                f.write(resp.text)
a=login('2016416xxx','xxx')
#choseClass('510004','50',a)
#查询选课容量
#cxqk_kb(19,a)
#查询个人课表
cxkb(a)
choseClass(510004,50,a)

实现了对教务系统的模拟登录,
使用过程:在选课期间获取课表后,查得课程号和课序号 然后 进行选课~代码抢课期间短短一小时写的 直接发上来了 ...如若使用,可以自己再完善下。

上一篇下一篇

猜你喜欢

热点阅读