标签:
import urllib import urllib.request import os from bs4 import BeautifulSoup import http.cookiejar import re cj = http.cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) urllib.request.install_opener(opener) def ShuaKe(DataList,i): request = urllib.request.Request(url=DataList[1],data=DataList[0]) request.add_header(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36 OPR/29.0.1795.47‘) try: print("SETP1") urllib.request.urlopen(request) except: print("setp 1 ERROR") return 1 loop = 2 while loop < len(DataList): req = urllib.request.Request(DataList[loop+1],DataList[loop]) req.add_header(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36 OPR/29.0.1795.47‘) try: rep=urllib.request.urlopen(req) html = rep.read().decode(‘gbk‘) result = re.findall(r‘alert.*?script‘,html) result = result[0][7:-11] print("正在刷课[消息反馈]:",result) except : print("setp 2 ERROR") return 1 loop = loop + 2 def GetTeacherInfo(TeachList,html): i=0 Newstr = ‘‘ soup = BeautifulSoup(html, "html.parser") for tabb in soup.findAll(‘table‘)[0:1]: for trr in tabb.findAll(‘tr‘)[1:]: for tdd in trr.findAll(‘td‘)[1:6]: if i==0: Newstr += str(tdd) i += 1 if i==5: Newstr += str(tdd) i+=1 i+=1 i = 0 TeachList.append(Newstr) Newstr = ‘‘ def PostData(Data): postdata = urllib.parse.urlencode(Data).encode(‘utf-8‘) return postdata def RequsetCreate(Url = None,Data = None,Header = {}): Req = urllib.request.Request(url = Url,data= Data,headers = Header) try: rep = urllib.request.urlopen(Req).read().decode(‘gbk‘) return rep except Exception as reason: print("出现错误,原因如下:" + str(reason)) def GetTion(response): __EVENTVALIDATION = re.findall(r‘id="__EVENTVALIDATION" value=.*"‘,response) __EVENTVALIDATION = __EVENTVALIDATION[0] __EVENTVALIDATION = __EVENTVALIDATION[30:-1] return __EVENTVALIDATION def GetState(response): __VIEWSTATE = re.findall(r‘id="__VIEWSTATE" value=.*"‘,response) __VIEWSTATE = __VIEWSTATE[0] __VIEWSTATE = __VIEWSTATE[24:-1] return __VIEWSTATE def GetName(reponse): result = re.findall(r‘<span id="xhxm">.*?同学‘,reponse) result = result[0][16:-2] print("欢迎您:"+result) return result def GetUnicodeUrl(name,Site): b = "" for item in name: b += "%u" + "%x"%ord(item) UnicodeUrl = ‘http://xk‘+str(Site)+‘.ahu.cn/xsxk.aspx?xh=‘+Username+‘&xm=‘+b+‘&gnmkdm=N121101‘ return UnicodeUrl def GetGbkUrl(name,Site): restr = str(name.encode(‘gbk‘)) restr = restr.replace(r‘\x‘,‘%‘) restr = restr[2:-1] DeskTableUrl = ‘http://xk‘+str(Site)+‘.ahu.cn/xsxk.aspx?xh=‘+Username+‘&xm=‘+restr+‘&gnmkdm=N121101‘ return DeskTableUrl def Login(SiteUrl,Username,Password,Site,DrDl_Nj): Site = Site + 1 rep = RequsetCreate(Url= SiteUrl) __VIEWSTATE = GetState(rep) __EVENTVALIDATION = GetTion(rep) postdata = { ‘__VIEWSTATE‘:__VIEWSTATE, ‘tname‘:‘‘, ‘tbtns‘:‘‘, ‘tnameXw‘:‘yhdl‘, ‘tbtnsXw‘:‘yhdl|xwxsdl‘, ‘txtYhm‘:Username, ‘txtXm‘:‘‘, ‘txtMm‘:Password, ‘rblJs‘:‘‘, ‘btnDl‘:‘‘, ‘__EVENTVALIDATION‘:__EVENTVALIDATION } postdata = PostData(postdata) PostList.append(postdata) PostList.append(SiteUrl) f = RequsetCreate(Url=SiteUrl,Data=postdata) try: name = GetName(f) UnicodeUrl = GetUnicodeUrl(name,Site) #print(UnicodeUrl) GbkUrl = GetGbkUrl(name,Site) #print(UnicodeUrl,GbkUrl) except Exception as reason: print("您输入的账号密码可能有错!程序错误原因如下:" + str(reason)) print("1:手动选课") print("2:自动选课") input_value = int(input("请选择(1/2):")) if input_value == 1: while True: ChooseUrl = input("请输入链接:") ChoosePost = input("请输入PostData数据:") ChoosePost = ChoosePost.encode(‘utf-8‘) PostList.append(ChoosePost) PostList.append(ChooseUrl) global Value FUCK = input(‘是否继续添加需选课程->(Y or N):‘) if FUCK == ‘Y‘ or FUCK ==‘y‘: pass else: Value = 1 break return 0 else: pass print("自动获取选课参数仅支持特殊课程和体育课,跨专业和素质课只能手动输入参数。") print("然而手动怎么输,等我以后写了博客再发。。。") print(‘1:特殊课程‘) print(‘2:选体育课‘) Choose = int(input("请选择:(1/2):")) header = { ‘Referer‘:‘http://xk‘+str(Site)+‘.ahu.cn/xs_main.aspx?xh=‘+Username, } rep = RequsetCreate(GbkUrl,Header = header) __VIEWSTATE = GetState(rep) __EVENTVALIDATION = GetTion(rep) postdata = { ‘__EVENTTARGET‘:‘‘, ‘__EVENTARGUMENT‘:‘‘, ‘__LASTFOCUS‘:‘‘, ‘__VIEWSTATE‘:__VIEWSTATE, ‘DrDl_Nj‘:DrDl_Nj, ‘zymc‘:‘‘, ‘xx‘:‘‘, ‘Button2‘:‘%D1%A1%D0%DE%BF%CE%B3%CC‘, ‘__EVENTVALIDATION‘:__EVENTVALIDATION } postdata = PostData(postdata) rep = RequsetCreate(UnicodeUrl,Data = postdata) if Choose == 1: __VIEWSTATE = GetState(rep) __EVENTVALIDATION = GetTion(rep) postdata = { ‘__EVENTTARGET‘:‘‘, ‘__EVENTARGUMENT‘:‘‘, ‘__LASTFOCUS‘:‘‘, ‘__VIEWSTATE‘:__VIEWSTATE, ‘DrDl_Nj‘:DrDl_Nj, ‘zymc‘:‘‘, ‘xx‘:‘‘, ‘Button3‘:‘%CC%D8%CA%E2%BF%CE%B3%CC‘, ‘__EVENTVALIDATION‘:__EVENTVALIDATION, } nums = 0 postdata = PostData(postdata) rep = RequsetCreate(UnicodeUrl,Data=postdata) __VIEWSTATE = GetState(rep) __EVENTVALIDATION = GetTion(rep) find_list1 = re.findall(‘xsxjs.aspx\?xkkh.*? ‘,rep) for i in range(0,len(find_list1)): get_str = find_list1[i] get_str = get_str[426:437] print(nums,":",get_str) nums += 1 postdata = { ‘__EVENTTARGET‘:‘kcmcgrid$ctl14$ctl01‘, ‘__EVENTARGUMENT‘:‘‘, ‘__LASTFOCUS‘:‘‘, ‘__VIEWSTATE‘:__VIEWSTATE, ‘DrDl_Nj‘:DrDl_Nj, ‘zymc‘:‘‘, ‘xx‘:‘‘, ‘__EVENTVALIDATION‘:__EVENTVALIDATION } postdata = PostData(postdata) rep = RequsetCreate(UnicodeUrl,Data=postdata) find_list2 = re.findall(‘xsxjs.aspx\?xkkh.*? ‘,rep) for i in range(0,len(find_list2)): get_str = find_list2[i] get_str = get_str[426:437] print(nums,":",get_str) nums += 1 choose2 = int(input("请选择编号:")) if choose2 > 9: Newchoose = choose2 - 10 choostr1 = re.findall(r‘xkkh=.*?&xh=‘,find_list2[Newchoose]) else: choostr1 = re.findall(r‘xkkh=.*?&xh=‘,find_list1[choose2]) choostr1 = choostr1[0] choostr1 = choostr1[5:-4] GetChUrl = SiteUrl[0:17]+‘/xsxjs.aspx?xkkh=‘+choostr1 +‘&xh=‘+Username header = { ‘Referer‘:UnicodeUrl, ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36 OPR/29.0.1795.47‘ } #Url = None,Data = None,Header = {} req =RequsetCreate(Url = GetChUrl,Header = header) __VIEWSTATE = GetState(req) __EVENTVALIDATION = GetTion(req) TeachList = [] GetTeacherInfo(TeachList,req) for i in range(0,len(TeachList)): print(i,":",TeachList[i][207:210],TeachList[i][222:-5]) choose3 = int(input("选择哪位老师:")) choostr2 = TeachList[choose3][70:99] postdata = { ‘__EVENTTARGET‘:‘Button1‘, ‘__EVENTARGUMENT‘:‘‘, ‘__VIEWSTATE‘:__VIEWSTATE, ‘xkkh‘:choostr2, ‘RadioButtonList1‘:‘0‘, ‘__EVENTVALIDATION‘:__EVENTVALIDATION } postdata = PostData(postdata) PostList.append(postdata) PostList.append(GetChUrl) if Choose == 2: nums = 0 UnicodeUrl = ‘http://xk‘+str(Site)+‘.ahu.cn/xstyk.aspx?xh=‘+Username+‘&xm=‘+UnicodeUrl[44:-15]+‘&gnmkdm=N121102‘ GbkUrl = ‘http://xk‘+str(Site)+‘.ahu.cn/xstyk.aspx?xh=‘+Username+‘&xm=‘+GbkUrl[44:-15]+‘&gnmkdm=N121102‘ rep = RequsetCreate(GbkUrl) __VIEWSTATE = GetState(rep) __EVENTVALIDATION = GetTion(rep) soup = BeautifulSoup(rep,"html.parser") List = [] for option in soup.findAll(‘option‘)[3:-1]: option=str(option) List.append(option) print(str(nums),":",option[24:-9]) nums += 1 choose2 = int(input("请选择编号:")) choostr1 = List[choose2] choostr1 = choostr1[15:22] postdata = { ‘__EVENTTARGET‘:‘ListBox1‘, ‘__EVENTARGUMENT‘:‘‘, ‘__LASTFOCUS‘:‘‘, ‘__VIEWSTATE‘:__VIEWSTATE, ‘DropDownList1‘:‘%CF%EE%C4%BF‘, ‘ListBox1‘:choostr1, ‘__EVENTVALIDATION‘:__EVENTVALIDATION } postdata = urllib.parse.urlencode(postdata) postdata = postdata.replace(‘%25CF%25EE%25C4%25BF‘,‘%CF%EE%C4%BF‘) postdata = postdata.encode(‘utf-8‘) req = urllib.request.Request(url=GbkUrl,data=postdata) req.add_header(‘Referer‘,GbkUrl) rep = urllib.request.urlopen(req) rep = rep.read().decode(‘gbk‘) __VIEWSTATE = GetState(rep) __EVENTVALIDATION = GetTion(rep) List=[] temp = nums+3 nums = 0 soup = BeautifulSoup(rep,"html.parser") for option in soup.findAll(‘option‘)[temp:-1]: option=str(option) List.append(option) print(str(nums),":",option[93:-21]) nums += 1 choose3 = int(input("请输入老师编号:")) choostr2 = List[choose3] choostr2 = choostr2[15:77] postdata = { ‘__EVENTTARGET‘:‘ListBox2‘, ‘__EVENTARGUMENT‘:‘‘, ‘__LASTFOCUS‘:‘‘, ‘__VIEWSTATE‘:__VIEWSTATE, ‘DropDownList1‘:‘%CF%EE%C4%BF‘, ‘ListBox1‘:choostr1, ‘ListBox2‘:choostr2, ‘__EVENTVALIDATION‘:__EVENTVALIDATION } postdata = urllib.parse.urlencode(postdata) postdata = postdata.replace(‘%25CF%25EE%25C4%25BF‘,‘%CF%EE%C4%BF‘) postdata = postdata.encode(‘utf-8‘) req = urllib.request.Request(url=UnicodeUrl,data=postdata) rep = urllib.request.urlopen(req) rep = rep.read().decode(‘gbk‘) __VIEWSTATE = GetState(rep) __EVENTVALIDATION = GetTion(rep) postdata = { ‘__EVENTTARGET‘:‘‘, ‘__EVENTARGUMENT‘:‘‘, ‘__LASTFOCUS‘:‘‘, ‘__VIEWSTATE‘:__VIEWSTATE, ‘DropDownList1‘:‘%CF%EE%C4%BF‘, ‘ListBox1‘:choostr1, ‘ListBox2‘:choostr2, ‘RadioButtonList1‘:‘0‘, ‘button3‘:‘%D1%A1%B6%A8%BF%CE%B3%CC‘, ‘__EVENTVALIDATION‘:__EVENTVALIDATION } postdata = urllib.parse.urlencode(postdata) postdata = postdata.replace(‘%25CF%25EE%25C4%25BF‘,‘%CF%EE%C4%BF‘) postdata = postdata.replace(‘%25D1%25A1%25B6%25A8%25BF%25CE%25B3%25CC‘,‘%D1%A1%B6%A8%BF%CE%B3%CC‘) postdata = postdata.encode(‘utf-8‘) PostList.append(postdata) PostList.append(GbkUrl) if __name__ == ‘__main__‘: Value = 0 PostList = [] URLlist = [‘http://xk1.ahu.cn/default6.aspx‘,‘http://xk2.ahu.cn/default6.aspx‘, ‘http://xk3.ahu.cn/default6.aspx‘,‘http://xk4.ahu.cn/default6.aspx‘,] print("有BUG请联系QQ:79235629,信安大神王日天、") Username = input("请输入用户名:") Password = input("请输入密码:") Site = int(input("请输入站点(0~3):")) DrDl_Nj = input("请输入年级(如2014):") # Username = ‘E41414005‘ # Password = ‘12345678Aa~‘ # Site=2 # DrDl_Nj=‘2014‘ Login(URLlist[Site],Username,Password,Site,DrDl_Nj) while True: if Value == 1: break FUCK = input(‘是否继续添加需选课程->(Y or N):‘) if FUCK == ‘Y‘ or FUCK ==‘y‘: Login(URLlist[Site],Username,Password,Site,DrDl_Nj) else: break #print(PostList) while True: ShuaKe(PostList,Site)
标签:
原文地址:http://www.cnblogs.com/You0/p/4794850.html