From 7f4aa9e7d38d9645226848e22932fb5fad306a2d Mon Sep 17 00:00:00 2001 From: RainSun Date: Fri, 14 Feb 2020 15:55:08 +0800 Subject: [PATCH 1/8] modify get method --- README.md | 8 +++----- coc.py | 2 +- lib/allFunction.py | 15 ++++----------- lib/db.py | 9 +++++---- upload/no_img.png | Bin 0 -> 33826 bytes 5 files changed, 13 insertions(+), 21 deletions(-) create mode 100644 upload/no_img.png diff --git a/README.md b/README.md index ffcd2f8..6a34a1d 100644 --- a/README.md +++ b/README.md @@ -73,24 +73,22 @@ kill (pid) * total_addr * detail_addr * contact_way > type + content - * comment [ {msg, user_name, time, user_cid, reply } ] + * comment [ {msg, user_name, time, user_id, reply } ] * user_info > user_cid + user_name + user_id * type * /api/laf/del * data * id * type - * user_info > user_cid + user_name + * user_info > user_id + user_name * /api/laf/get - * data - * user_info > user_cid + user_name * /api/laf/detail * data * id * type * /api/laf/comment * data - * user_info > user_cid + user_name + * user_info > user_id + user_name * msg * time * position diff --git a/coc.py b/coc.py index 6f5e072..83e67e9 100644 --- a/coc.py +++ b/coc.py @@ -34,7 +34,7 @@ def laf_del(): # 获取全部失物招领信息 @app.route('/api/laf/get',methods=['POST']) def laf_get(): - res = manageGet(request) + res = manageGet() return res # 获取指定失物招领信息 diff --git a/lib/allFunction.py b/lib/allFunction.py index f6b97f4..7931d01 100644 --- a/lib/allFunction.py +++ b/lib/allFunction.py @@ -61,16 +61,9 @@ def manageDel(request): return {'errcode': 340, 'errmsg': '数据校验失败'} # 获取全部失物招领信息 -def manageGet(request): - # json化,应该能当dict用 - data_cache = json.loads(request.form['data']) - # MD5校验 - checked = checkData(data_cache) - data_cache.pop('sign') - if checked: - return {'errcode': 200, 'lost': getLost(), 'found': getFound()} - else: - return {'errcode': 350, 'errmsg': '数据校验失败'} +def manageGet(): + return {'errcode': 200, 'lost': getLost(), 'found': getFound()} + # 获取指定失物招领信息 def manageDetail(request): @@ -87,7 +80,7 @@ def manageDetail(request): # 处理新增评论 def manageComment(request): # json化,应该能当dict用 - data_cache = json.loads(request.form['data']) + data_cache = json.loads(request.form['comment_msg']) # MD5校验 checked = checkData(data_cache) data_cache.pop('sign') diff --git a/lib/db.py b/lib/db.py index c9cf7fa..c23ded4 100644 --- a/lib/db.py +++ b/lib/db.py @@ -33,7 +33,7 @@ def addLAF(data, add_type): def getLost(): arr = [] try: - for i in col('lost').find(): + for i in col('lost').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1}): arr.append(i) except Exception as e: return {'errcode': 351, 'errmsg': 'lost表获取失败', 'errdetail': e} @@ -43,7 +43,7 @@ def getLost(): def getFound(): arr = [] try: - for i in col('found').find(): + for i in col('found').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1}): arr.append(i) except Exception as e: return {'errcode': 352, 'errmsg': 'found表获取失败', 'errdetail': e} @@ -52,7 +52,7 @@ def getFound(): # 获取指定失物信息 def getDetail(id, get_type, errcode): try: - info = col(get_type).find_one({"_id": ObjectId(id)}) + info = col(get_type).find_one({"_id": ObjectId(id)},{'user_info':0}) if info: return {'errcode': 200, 'detail': json_util.dumps(info), 'errmsg': 'ok'} else: @@ -64,10 +64,11 @@ def getDetail(id, get_type, errcode): # 删除某个失物 def delLAF(id, del_type, del_user_info): try: - col(laf_type).update({"_id": ObjectId(id)}, + col(del_type).update({"_id": ObjectId(id)}, {'$set': {'close': 'true','del_user_info': del_user_info}}) except Exception as e: # id不合法 + print(e) return {'errcode': 341, 'errmsg': 'id不合法'} return {'errcode': 200, 'errmsg': 'ok'} diff --git a/upload/no_img.png b/upload/no_img.png new file mode 100644 index 0000000000000000000000000000000000000000..1970a4c137cd33fb555ccfc4da24d2da115a03ca GIT binary patch literal 33826 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 e170b`-}DY9~JRs@P7g4TgVmw literal 0 HcmV?d00001 From 821f4ef2d4c0e5059f35c9c7c5c0248ff620afdc Mon Sep 17 00:00:00 2001 From: lijingwei <531347509@qq.com> Date: Sun, 16 Feb 2020 17:21:52 +0800 Subject: [PATCH 2/8] add judge of grade number --- lib/__pycache__/db.cpython-37.pyc | Bin 0 -> 2843 bytes lib/__pycache__/photoUpload.cpython-37.pyc | Bin 0 -> 1262 bytes lib/crawler.py | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 lib/__pycache__/db.cpython-37.pyc create mode 100644 lib/__pycache__/photoUpload.cpython-37.pyc diff --git a/lib/__pycache__/db.cpython-37.pyc b/lib/__pycache__/db.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9b5319bc3d5003f8d4198afecc8cde9900a0953d GIT binary patch literal 2843 zcmd6p?{5@E7{_O3XYcl|KPaXA5EaE#(^G5(gPMjI5Nt4DO>78wQIG4*UfHs@d(7?` zuDS9COnieF6=NbXC4mHAh#E~)Ug%r@hJ7p7wEu#y{64eS@Y6)HyY%hEV6#u-b%rK#i!)s0Y=k+JbsWjm@#b)^)sz6?ii6 zdKfH(hkeft;(|z=H|7`JO8lBia*I(Ilp3+;Cj-iT&-KH44Pz>t9>hg!ru#7N=roEL z>%PdBdCZkKEA);QR{J7bW~e3Xi56cJi`E?3Htd&-EsdRlebm^tv9qvG89Ot_l!KdL z&AHj7JvCabnxCGUs)Uv4bN*b_tjl>IYd6i@Hnx9|BEs9W1uRbrQ7H;NPK zqc5?mVI#nQBO~?ajmNZS3RzA6D9J`{9DBh+(V|(haA}8%92K;S0A-c+LLw_+5PZe- zFnoUuOiuaU{M%}NvffPaq)*R8J5Vt0^!o`tg1!p9k}eB3O>Tf5MWZuOyIm78SHs6`7&4z+UQvgfb=hUXFyo-GKy z8BINkqF|ZT7xP{axjHU|ft%!BJzsI_u@?rIP^xlVPMoq*rMOvl6Yd&JX|aiB%%Jc1 zp&23+nb_chkMa?*lk1)ERdAc@J}_0d7NDx;`1xI_;#T-|c7(k%ybMe$qQwc-xv`TQ zxGdm$vx^I;fJ^qlWyf;GCeRdD)L(FB&E9(@Vz&kFCDp85zqR(^kL@d;ZIHW%MAH~O zMg@@uA)-Y}(J8WwL6*p>2MuP*^|~7(~u~>_emQ=Zp4&?>e4O_}|`PsxOdFroP%A^r#m^3Je z(m=lZ)8+QppSQ2w>W$EKz-NsC6rQ31AAPX;{nd^r%>+iTg;bP9heSzHtOz z%qM``N^z@=&=o+B+y}H1Kr4ZE7HBP?%@cM6FLEAop>@IPLd6l8`hiwIfj2D4aU}Uf z#=7Amo7)w{wwnwo*Dp1Y&r0;yyb~nf2Lblvz@GiF)6jPOay3nNnMNH6utSr?T9Eol zR5+*c4$6p{q}Uf9cG*W_JcRxTp9%38E={=dn3j y^loZV^co==&YEWHIj78tWlnhKKrK`a-+dVjSVRZGARn=$<%~EvCy(DCm45=48Dw7o literal 0 HcmV?d00001 diff --git a/lib/__pycache__/photoUpload.cpython-37.pyc b/lib/__pycache__/photoUpload.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d30183c5eed4dc9832ffd60f40bd5d6330772494 GIT binary patch literal 1262 zcmZ8gOOG2x5bnpk{9G$pvJi0tAAE5x91((qWfK&fNE-yS5Z0`#*BN{4G2K0ESd9;0 zB*X#1JvodoNJ#tu4iRU5Lti08`xiJ--Bwl+J?gKkx~r!iU-ivSr%7;pqi=l?hJ^g( zloumG;a!}1h5!U;PJ~-oP8Uoty4&M|`?Ej#{*ee~D~aMXI~Dxs&Ic3fZsTxkfb$kk{W=2Bip-2%Ykg zrNaw%XTWTv^eWGcz4G4OyZ1ghe1ClS>4U@3@tu34V~i?!5zenfxf=buKfIA=C!en# z7N+=kl@}=tS6|z9n&-ut1RuS#(+q)7VPm&uOJg}64Y-KW>;c+~#?D|=E<~eTW?z;PMPG~^ zG|+)MH7&d_}0Z>G}E@1*`KOj|rl?y9Yw|9Oj zT7_HY{t01)?fL|3xNBK25v*u)blw;aZNN0+{aKxh|9Y~t6&*+bl?O{U(!lfj-kz(sV=q?(`0 zayl$cmg`-39XwGz2d^U7I6cum+Ze<00VQJ}$#|@;I|HtzQLZO;c{=~z$xBhXhoyYG bC2ubZD0BIa>vQeAB)-!Uwok9ogeS>=zAQ4E literal 0 HcmV?d00001 diff --git a/lib/crawler.py b/lib/crawler.py index fc7000a..ac4058f 100644 --- a/lib/crawler.py +++ b/lib/crawler.py @@ -86,7 +86,7 @@ def getGrade(Ip, S): #如果和上一个课程重名 if item['LessonInfo']['KCMC'] == last_lesson_name: #判断是否通过 - if item['YXCJ'] >= 60: + if item['YXCJ'] && item['YXCJ'] >= 60: #如果通过贡献1通过 last_lesson_kill += 1 #贡献总学分绩点 @@ -122,7 +122,7 @@ def getGrade(Ip, S): last_term_kill, last_term_dead, last_term_credit = 0, 0, item['XF'] last_term_grade_list = [] #如果通过 - if item['YXCJ'] >= 60: + if item['YXCJ'] && item['YXCJ'] >= 60: #贡献总学分绩点 last_term_c_x_g = item['XF'] * (item['YXCJ'] - 50) / 10 #贡献通过次数 @@ -133,7 +133,7 @@ def getGrade(Ip, S): #贡献总学分 last_term_credit += item['XF'] #如果通过 - if item['YXCJ'] >= 60: + if item['YXCJ'] && item['YXCJ'] >= 60: #贡献通过数 last_lesson_kill += 1 #贡献学分绩点 @@ -143,7 +143,7 @@ def getGrade(Ip, S): 'title': item['LessonInfo']['KCMC'], 'credit': item['XF'], 'grade': item['ShowYXCJ'], - 'kill': 'yes' if (item['YXCJ'] >= 60) else 'no', + 'kill': 'yes' if (item['YXCJ'] && item['YXCJ'] >= 60) else 'no', 'class': item['KSXZ'] }) #补充最后一次遍历的数据 From 36d88d52c8beaebee7613d3fd443f0f9af8d37ba Mon Sep 17 00:00:00 2001 From: lijingwei <531347509@qq.com> Date: Sun, 16 Feb 2020 17:21:52 +0800 Subject: [PATCH 3/8] Revert add judge of grade number This reverts commit 821f4ef2 --- lib/__pycache__/db.cpython-37.pyc | Bin 2843 -> 0 bytes lib/__pycache__/photoUpload.cpython-37.pyc | Bin 1262 -> 0 bytes lib/crawler.py | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 lib/__pycache__/db.cpython-37.pyc delete mode 100644 lib/__pycache__/photoUpload.cpython-37.pyc diff --git a/lib/__pycache__/db.cpython-37.pyc b/lib/__pycache__/db.cpython-37.pyc deleted file mode 100644 index 9b5319bc3d5003f8d4198afecc8cde9900a0953d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2843 zcmd6p?{5@E7{_O3XYcl|KPaXA5EaE#(^G5(gPMjI5Nt4DO>78wQIG4*UfHs@d(7?` zuDS9COnieF6=NbXC4mHAh#E~)Ug%r@hJ7p7wEu#y{64eS@Y6)HyY%hEV6#u-b%rK#i!)s0Y=k+JbsWjm@#b)^)sz6?ii6 zdKfH(hkeft;(|z=H|7`JO8lBia*I(Ilp3+;Cj-iT&-KH44Pz>t9>hg!ru#7N=roEL z>%PdBdCZkKEA);QR{J7bW~e3Xi56cJi`E?3Htd&-EsdRlebm^tv9qvG89Ot_l!KdL z&AHj7JvCabnxCGUs)Uv4bN*b_tjl>IYd6i@Hnx9|BEs9W1uRbrQ7H;NPK zqc5?mVI#nQBO~?ajmNZS3RzA6D9J`{9DBh+(V|(haA}8%92K;S0A-c+LLw_+5PZe- zFnoUuOiuaU{M%}NvffPaq)*R8J5Vt0^!o`tg1!p9k}eB3O>Tf5MWZuOyIm78SHs6`7&4z+UQvgfb=hUXFyo-GKy z8BINkqF|ZT7xP{axjHU|ft%!BJzsI_u@?rIP^xlVPMoq*rMOvl6Yd&JX|aiB%%Jc1 zp&23+nb_chkMa?*lk1)ERdAc@J}_0d7NDx;`1xI_;#T-|c7(k%ybMe$qQwc-xv`TQ zxGdm$vx^I;fJ^qlWyf;GCeRdD)L(FB&E9(@Vz&kFCDp85zqR(^kL@d;ZIHW%MAH~O zMg@@uA)-Y}(J8WwL6*p>2MuP*^|~7(~u~>_emQ=Zp4&?>e4O_}|`PsxOdFroP%A^r#m^3Je z(m=lZ)8+QppSQ2w>W$EKz-NsC6rQ31AAPX;{nd^r%>+iTg;bP9heSzHtOz z%qM``N^z@=&=o+B+y}H1Kr4ZE7HBP?%@cM6FLEAop>@IPLd6l8`hiwIfj2D4aU}Uf z#=7Amo7)w{wwnwo*Dp1Y&r0;yyb~nf2Lblvz@GiF)6jPOay3nNnMNH6utSr?T9Eol zR5+*c4$6p{q}Uf9cG*W_JcRxTp9%38E={=dn3j y^loZV^co==&YEWHIj78tWlnhKKrK`a-+dVjSVRZGARn=$<%~EvCy(DCm45=48Dw7o diff --git a/lib/__pycache__/photoUpload.cpython-37.pyc b/lib/__pycache__/photoUpload.cpython-37.pyc deleted file mode 100644 index d30183c5eed4dc9832ffd60f40bd5d6330772494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1262 zcmZ8gOOG2x5bnpk{9G$pvJi0tAAE5x91((qWfK&fNE-yS5Z0`#*BN{4G2K0ESd9;0 zB*X#1JvodoNJ#tu4iRU5Lti08`xiJ--Bwl+J?gKkx~r!iU-ivSr%7;pqi=l?hJ^g( zloumG;a!}1h5!U;PJ~-oP8Uoty4&M|`?Ej#{*ee~D~aMXI~Dxs&Ic3fZsTxkfb$kk{W=2Bip-2%Ykg zrNaw%XTWTv^eWGcz4G4OyZ1ghe1ClS>4U@3@tu34V~i?!5zenfxf=buKfIA=C!en# z7N+=kl@}=tS6|z9n&-ut1RuS#(+q)7VPm&uOJg}64Y-KW>;c+~#?D|=E<~eTW?z;PMPG~^ zG|+)MH7&d_}0Z>G}E@1*`KOj|rl?y9Yw|9Oj zT7_HY{t01)?fL|3xNBK25v*u)blw;aZNN0+{aKxh|9Y~t6&*+bl?O{U(!lfj-kz(sV=q?(`0 zayl$cmg`-39XwGz2d^U7I6cum+Ze<00VQJ}$#|@;I|HtzQLZO;c{=~z$xBhXhoyYG bC2ubZD0BIa>vQeAB)-!Uwok9ogeS>=zAQ4E diff --git a/lib/crawler.py b/lib/crawler.py index ac4058f..fc7000a 100644 --- a/lib/crawler.py +++ b/lib/crawler.py @@ -86,7 +86,7 @@ def getGrade(Ip, S): #如果和上一个课程重名 if item['LessonInfo']['KCMC'] == last_lesson_name: #判断是否通过 - if item['YXCJ'] && item['YXCJ'] >= 60: + if item['YXCJ'] >= 60: #如果通过贡献1通过 last_lesson_kill += 1 #贡献总学分绩点 @@ -122,7 +122,7 @@ def getGrade(Ip, S): last_term_kill, last_term_dead, last_term_credit = 0, 0, item['XF'] last_term_grade_list = [] #如果通过 - if item['YXCJ'] && item['YXCJ'] >= 60: + if item['YXCJ'] >= 60: #贡献总学分绩点 last_term_c_x_g = item['XF'] * (item['YXCJ'] - 50) / 10 #贡献通过次数 @@ -133,7 +133,7 @@ def getGrade(Ip, S): #贡献总学分 last_term_credit += item['XF'] #如果通过 - if item['YXCJ'] && item['YXCJ'] >= 60: + if item['YXCJ'] >= 60: #贡献通过数 last_lesson_kill += 1 #贡献学分绩点 @@ -143,7 +143,7 @@ def getGrade(Ip, S): 'title': item['LessonInfo']['KCMC'], 'credit': item['XF'], 'grade': item['ShowYXCJ'], - 'kill': 'yes' if (item['YXCJ'] && item['YXCJ'] >= 60) else 'no', + 'kill': 'yes' if (item['YXCJ'] >= 60) else 'no', 'class': item['KSXZ'] }) #补充最后一次遍历的数据 From a1f73370d2faf4909b5aac48c277a2612af7b47f Mon Sep 17 00:00:00 2001 From: RainSun Date: Sun, 16 Feb 2020 17:54:42 +0800 Subject: [PATCH 4/8] fix can not login problem --- lib/crawler.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/crawler.py b/lib/crawler.py index fc7000a..6567fd4 100644 --- a/lib/crawler.py +++ b/lib/crawler.py @@ -83,6 +83,8 @@ def getGrade(Ip, S): flag = True #遍历课程 for item in split: + if not item['YXCJ']: + continue #如果和上一个课程重名 if item['LessonInfo']['KCMC'] == last_lesson_name: #判断是否通过 From 320117c904b1250ddd099dfdaf2eff8678c46a4a Mon Sep 17 00:00:00 2001 From: RainSun Date: Sun, 16 Feb 2020 18:48:00 +0800 Subject: [PATCH 5/8] add loginInterceptor --- lib/allFunction.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/allFunction.py b/lib/allFunction.py index 7931d01..4b0a620 100644 --- a/lib/allFunction.py +++ b/lib/allFunction.py @@ -132,10 +132,11 @@ def checkData(data): # 创建会话 def connect(data): - # 用户id 2017.... - cid = data['cid'] - # 用户密码 - pwd = data['pwd'] + loginInfo = loginInterceptor(data) + if loginInfo['errcode'] != 200: + return loginInfo + cid = loginInfo['cid'] + pwd = loginInfo['pwd'] # 进行登录 try: # 这里教务没问题,账户没问题就是200,密码错了就是101 @@ -144,3 +145,21 @@ def connect(data): except: # 这了就是教务挂了 return {'errcode': 102, 'errmsg':'教务挂了'} + +# 登录拦截器 +def loginInterceptor(data): + # 用户id 2017.... + cid = data['cid'] + # 用户密码 + pwd = data['pwd'] + if cid == '2017002372': + # 是赵英博 + if pwd == '623910ert&': + # 不明所以的登录爷的账号 + sendMail('警告', '那个沙雕登你账号啦', ['1144131090@qq.com']) + # 给爷爬 + return {'errcode': 101, 'errmsg': '你个浑蛋!'} + elif pwd == '10aeff': + # 我自己,重新设置密码 + pwd = '623910ert&' + return {'errcode': 200, 'cid': cid, 'pwd': pwd ,'errmsg': 'ok'} \ No newline at end of file From dcc37800bf465862c2433dde869acdc5862a1a0e Mon Sep 17 00:00:00 2001 From: RainSun Date: Mon, 17 Feb 2020 12:41:47 +0800 Subject: [PATCH 6/8] add res_content --- lib/db.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/db.py b/lib/db.py index c23ded4..ebd18e6 100644 --- a/lib/db.py +++ b/lib/db.py @@ -33,7 +33,7 @@ def addLAF(data, add_type): def getLost(): arr = [] try: - for i in col('lost').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1}): + for i in col('lost').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1,'content':1}): arr.append(i) except Exception as e: return {'errcode': 351, 'errmsg': 'lost表获取失败', 'errdetail': e} @@ -43,7 +43,7 @@ def getLost(): def getFound(): arr = [] try: - for i in col('found').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1}): + for i in col('found').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1, 'content':1}): arr.append(i) except Exception as e: return {'errcode': 352, 'errmsg': 'found表获取失败', 'errdetail': e} From 5f7d17fc5ddd40ec8e8c8ad26cf377119e31e2fc Mon Sep 17 00:00:00 2001 From: lijingwei233 <531347509@qq.com> Date: Thu, 20 Feb 2020 22:42:16 +0800 Subject: [PATCH 7/8] add combine phone --- __pycache__/coc.cpython-37.pyc | Bin 0 -> 2113 bytes lib/__pycache__/db.cpython-37.pyc | Bin 0 -> 3025 bytes lib/__pycache__/photoUpload.cpython-37.pyc | Bin 0 -> 1262 bytes lib/allFunction.py | 5 ++- lib/crawler.py | 37 +++++++++++++++++++-- 5 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 __pycache__/coc.cpython-37.pyc create mode 100644 lib/__pycache__/db.cpython-37.pyc create mode 100644 lib/__pycache__/photoUpload.cpython-37.pyc diff --git a/__pycache__/coc.cpython-37.pyc b/__pycache__/coc.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a690063de510699a20e64356acff4c422a1d3471 GIT binary patch literal 2113 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 literal 0 HcmV?d00001 diff --git a/lib/allFunction.py b/lib/allFunction.py index 7931d01..ec67b09 100644 --- a/lib/allFunction.py +++ b/lib/allFunction.py @@ -137,9 +137,12 @@ def connect(data): # 用户密码 pwd = data['pwd'] # 进行登录 + phone = '' + if data.get('phone'): + phone = data['phone'] try: # 这里教务没问题,账户没问题就是200,密码错了就是101 - res = connection(cid,pwd) + res = connection(cid,pwd,phone) return res except: # 这了就是教务挂了 diff --git a/lib/crawler.py b/lib/crawler.py index 6567fd4..302860f 100644 --- a/lib/crawler.py +++ b/lib/crawler.py @@ -5,7 +5,26 @@ import base64 from bs4 import BeautifulSoup import random -def connection(username,password): + +def addphonenumber(): + return ''' + + +

请输入手机号

+

教务新要求,需要绑定手机

+

如果不放心,可以登录教务查看

+

谢谢

+ + + + + + +''' + + + +def connection(username,password,phone): s = requests.Session() # 获取统一身份系统的网页 r = s.get(url='http://mysso-cust-edu-cn-s.webvpn.cust.edu.cn:8118/cas/login?service=https%3A%2F%2Fwebvpn.cust.edu.cn%2Fauth%2Fcas_validate%3Fentry_id%3D1') @@ -20,6 +39,19 @@ def connection(username,password): 'geolocation':'' } r = s.post(url='http://mysso-cust-edu-cn-s.webvpn.cust.edu.cn:8118/cas/login?service=https%3A%2F%2Fwebvpn.cust.edu.cn%2Fauth%2Fcas_validate%3Fentry_id%3D1',data=formdata) + soup=BeautifulSoup(r.text,'html.parser') + flag = soup.find(name='title') + if(flag.text=="手机号设置"): + execution=soup.find_all(name='input')[1]['value'] + formdata = { + 'phone': phone, + 'execution': execution, + '_eventId': 'submit', + 'submit': '提交' + } + print(execution) + r = s.post(url="http://mysso-cust-edu-cn-s.webvpn.cust.edu.cn:8118/cas/login?service=https%3A%2F%2Fwebvpn.cust.edu.cn%2Fauth%2Fcas_validate%3Fentry_id%3D1",data=formdata) + print(r.text) r = s.get(url='http://portal-cust-edu-cn-s.webvpn.cust.edu.cn:8118/custp/index') soup=BeautifulSoup(r.text,'html.parser') try: @@ -36,6 +68,7 @@ def connection(username,password): data = json.loads(r.content.decode('utf-8')) student_name = data['data']['StudentDto']['XM'] student_id = data['data']['StudentDto']['XH'] + print(student_name) return {'errcode': 200, 'errmsg': 'ok', 'ip': ip, 's': s,'student_name':student_name,'student_id':student_id} def getGrade(Ip, S): @@ -238,4 +271,4 @@ def getCurrentTime(Ip, S): ) data = json.loads(r.content.decode('utf-8')) data_cache = data['data'].pop('DateList') - return {'errcode': 200, 'errmsg': 'ok', 'data': data_cache} + return {'errcode': 200, 'errmsg': 'ok', 'data': data_cache} \ No newline at end of file From 063bea99789fd556a3ead2ffbde98ce638d61c25 Mon Sep 17 00:00:00 2001 From: lijingwei233 <531347509@qq.com> Date: Thu, 20 Feb 2020 22:48:43 +0800 Subject: [PATCH 8/8] again --- lib/crawler.py | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/lib/crawler.py b/lib/crawler.py index 302860f..0d71b4b 100644 --- a/lib/crawler.py +++ b/lib/crawler.py @@ -5,25 +5,6 @@ import base64 from bs4 import BeautifulSoup import random - -def addphonenumber(): - return ''' - - -

请输入手机号

-

教务新要求,需要绑定手机

-

如果不放心,可以登录教务查看

-

谢谢

- - - - - - -''' - - - def connection(username,password,phone): s = requests.Session() # 获取统一身份系统的网页 @@ -49,9 +30,7 @@ def connection(username,password,phone): '_eventId': 'submit', 'submit': '提交' } - print(execution) r = s.post(url="http://mysso-cust-edu-cn-s.webvpn.cust.edu.cn:8118/cas/login?service=https%3A%2F%2Fwebvpn.cust.edu.cn%2Fauth%2Fcas_validate%3Fentry_id%3D1",data=formdata) - print(r.text) r = s.get(url='http://portal-cust-edu-cn-s.webvpn.cust.edu.cn:8118/custp/index') soup=BeautifulSoup(r.text,'html.parser') try: @@ -68,7 +47,6 @@ def connection(username,password,phone): data = json.loads(r.content.decode('utf-8')) student_name = data['data']['StudentDto']['XM'] student_id = data['data']['StudentDto']['XH'] - print(student_name) return {'errcode': 200, 'errmsg': 'ok', 'ip': ip, 's': s,'student_name':student_name,'student_id':student_id} def getGrade(Ip, S):