コード例 #1
0
def trial(pos, session, data):
    url = api.apiList()[15]
    res_pre = session.get(api.apiList()[pos])
    res = session.post(url, data=data, verify=False)
    con = res.content.decode()
    #print(con)
    while True:
        try:
            dic = json.loads(con)
            #print(dic)
            break
        except Exception as e:
            print(e)
    if dic['success'] == 'false':  #根据选课接口返回的提示信息判断是否选课成功
        msg = dic['msg']
        logRec(con)
        return False, msg
    elif dic['success'] == 'true':
        msg = dic['msg']
        logRec(con)
        return True, msg
    else:
        warn = '选课接口返回错误,请检查网络情况/提交的Form-Data'
        return warn
コード例 #2
0
def preparePost(
    session, type_name
):  #向对应课程性质的API发送POST请求,自动获取实时的课容量&课余量并清洗入库                    #需增加对键入错误课程信息的判断,若错误,要求用户重新键入
    while True:  #键入错误3、5、7将在preparePost中得到解决,直至用户输入正确的课程类型为止
        if type_name == '公选课':
            choice = '9'
            url = api.apiList()[11]
            res = session.get(url)
            infoExtract(choice, res.content)
            #print(type_name)
            break
        elif type_name == '专选课':
            print('脚本暂不提供专选课服务噢~')
            '''
            choice = '8'
            url = api.apiList()[10]
            res = session.get(url)
            infoExtract(choice, res)
            '''
            break
        elif type_name == '必修课':
            print('脚本暂不提供必修课服务噢~')
            '''
            choice = '7'
            url = api.apiList()[9]
            res = session.get(url)
            infoExtract(choice, res)
            type_name
            '''
            break
        elif type_name == '跨选课':
            print('脚本暂不提供跨选课服务噢~')
            '''
            choice = '10'
            url = api.apiList()[9]
            res = session.get(url)
            infoExtract(choice, res)
            '''
            break
コード例 #3
0
ファイル: dropCourse.py プロジェクト: jacklanda/ustbJwspider
def showCourse(session, data_itm):
    choice = '12'
    try:
        res = session.post(api.apiList()[14], data=data_itm)
    except Exception as e:
        print(e)
    mid.infoExtract(choice, res.content)
    try:
        col = dbClient()
    except:
        print('mongo数据库初始化失败')
    con = condition()
    agrigation = col.aggregate(con)
    li = []
    print('你目前已选的课程有:')
    for pos, row in enumerate(agrigation):
        element = row['selectedCourses']
        li.append(element)
        each = transform(element).items()
        print(str(pos+1)+'.'+str(each))
    print('\n')
    return li
コード例 #4
0
ファイル: main.py プロジェクト: jacklanda/ustbJwspider
    def infocrawl(self, choice):
        if choice == '1':
            print('******************创新学分信息抓取中******************\n')
            pos = int(choice)
            res = self.session.post(api.apiList()[3],
                                    data=data_uid,
                                    headers=self.headers())
            #print(res.content.decode())
            title = title_li[0]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '2':
            print('******************课程成绩信息抓取中******************\n')
            pos = int(choice)
            res = self.session.post(api.apiList()[4],
                                    data=data_uid,
                                    headers=self.headers())
            #print(res.content.decode())
            title = title_li[1]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '3':
            print('******************教学计划信息抓取中******************\n')
            pos = int(choice)
            res = self.session.post(api.apiList()[5],
                                    data=data_uid,
                                    headers=self.headers())
            #print(res.content.decode())
            title = title_li[2]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '4':
            print('******************英语四六级信息抓取中******************\n')
            pos = int(choice)
            res = self.session.post(api.apiList()[6],
                                    data=data_uid,
                                    headers=self.headers())
            #print(res.content.decode())
            title = title_li[3]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '5':
            print('******************排名明细核对信息抓取中******************\n')
            pos = int(choice)
            res = self.session.post(api.apiList()[7],
                                    data=data_uid,
                                    headers=self.headers())
            #print(res.content.decode())
            title = title_li[4]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '6':
            print('******************选课须知信息抓取中******************\n')
            pos = int(choice)
            res = ''
            #print(res.content.decode())
            #title = title_li[5]
            mid.infoExtract(choice, res)
            #self.infoStore(title, res)
        elif choice == '7':
            print('******************必修课信息抓取中******************\n')
            pos = int(choice)
            res = self.session.get(api.apiList()[9])
            #print(res.content.decode())
            title = title_li[6]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '8':
            print('******************专业选修课信息抓取中******************\n')
            pos = int(choice)
            res = self.session.get(api.apiList()[10])
            #print(res.text)
            title = title_li[7]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '9':
            print('******************公共选修课信息抓取中******************\n')
            pos = int(choice)
            res = self.session.get(api.apiList()[11])
            #print(res.content.decode())
            title = title_li[8]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '10':
            print('******************跨专业选课信息抓取中******************\n')
            pos = int(choice)
            res = self.session.get(api.apiList()[12])
            #print(res.content.decode())
            title = title_li[9]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '11':
            print('******************外专业选修课信息抓取中******************\n')
            pos = int(choice)
            res = self.session.get(api.apiList()[13])
            #print(res.content.decode())
            title = title_li[10]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)
        elif choice == '12':
            print('******************课程表信息抓取中******************\n')
            pos = int(choice)
            res = self.session.post(api.apiList()[14], data=data_itm)
            #print(res.content.decode())
            title = title_li[11]
            self.infoStore(title, res.content)
            mid.infoExtract(choice, res.content)

        elif choice == '13':  #选课功能
            print('>>>>>>>>>>尝试选课中<<<<<<<<<<\n')
            chooseCourse.retrieve(self.session, account)

        elif choice == '14':  #退课功能
            print('>>>>>>>>>>尝试退课中<<<<<<<<<<\n')
            dropCourse.drop(self.session, data_itm, account)

        elif choice == '15':
            print('******************全部信息抓取中******************\n')
            url_li = api.apiList()[3:15]  #创新学分获取——排名明细获取
            for pos, url in enumerate(url_li):
                if pos <= 4:
                    res = self.session.post(url, data=data_uid)
                    title = title_li[pos]
                    mid.infoExtract(str(pos + 1), res.content)
                    self.infoStore(title, res.content)
                else:
                    break
            for pos, url in enumerate(url_li[6:10]):  #必修课获取——跨选课获取
                res = self.session.get(url)
                title = title_li[pos + 6]
                mid.infoExtract(str(pos + 7), res.content)
                self.infoStore(title, res.content)
            res = self.session.post(url_li[11], data=data_itm)
            #print(res.content.decode())
            title = title_li[11]
            mid.infoExtract('12', res.content)
            self.infoStore(title, res.content)
コード例 #5
0
ファイル: main.py プロジェクト: jacklanda/ustbJwspider
 def autoLogout(self):
     url_out = api.apiList()[2]
     log_out = self.session.post(url_out)
     #print(log_out.text)
     tip = '\n******************你已成功退出登陆了噢******************'
     return tip
コード例 #6
0
ファイル: main.py プロジェクト: jacklanda/ustbJwspider
 def autoLogin(self):
     while True:
         try:
             print('******************vpn登陆中******************')
             url_vpn = api.apiList()[0]
             log_vpn = self.session.post(
                 url_vpn, data=data_vpn,
                 headers=self.headers())  #当...条件出现,判断登陆成功。
             try:
                 if 'captcha' in log_vpn.text:
                     message = self.getMsg(
                         log_vpn)  #当VPN首次登陆失败时,服务器将要求进行验证码验证,
                 else:
                     pass
             except Exception as e:
                 print(e)
             if '近期访问' in log_vpn.text:
                 #print(log_vpn.text)
                 print('vpn登陆成功√')
                 break
             else:
                 print(message)
                 account = input('→请重新输入你的校园网登陆账号:')
                 password = input('→请重新输入你的校园网登陆密码:')
                 self.getParam(log_vpn)
                 data_vpn['username'] = account
                 data_vpn['password'] = password
                 data_edu['j_username'] = account + ',undergraduate'
         except Exception as e:
             print(e)
     while True:
         try:
             print('******************本科教学网登陆中******************')
             url_edu = api.apiList()[1]
             url_suc = api.apiList()[17]
             log_edu = self.session.post(url_edu,
                                         data=data_edu,
                                         headers=self.headers())
             log_suc = self.session.get(url_suc, headers=self.headers())
             #print(log_edu.request.headers)
             if 'success:true' in log_suc.text:
                 print('本科教学网登陆成功√')
                 break
             if 'Ext.Msg.alert' in log_edu.text:
                 print('---------该账号的登陆频率受限,请稍后重试---------')
                 while True:
                     wait = input('------去泡杯茶吧*^▽^*(键入y可尝试重新登陆)------\n')
                     if wait == '':
                         pass
                     if wait == 'y':
                         break
                     else:
                         pass
                 password_b = input('→请重新输入你的本科教学网登录密码:')
                 data_edu['j_password'] = password_b
             else:
                 print('本科教学网登陆密码错误')
                 password_b = input('→请重新输入你的本科教学网登录密码:')
                 data_edu['j_password'] = password_b
         except Exception as e:
             print(e)
コード例 #7
0
ファイル: dropCourse.py プロジェクト: jacklanda/ustbJwspider
def dropExecute(session, data):
    #print(data)
    url = api.apiList()[16]
    res = session.post(url, data=data, verify=False)
    print(res.content.decode())
    print('yeah~退课成功咯~')