import ssl
import json
import urllib
#規避警告
context = ssl._create_unverified_context()
# 登陸以后去訪問
from requests import Request,Session
class Mogu():
def get_login(self):
login_data = {
'loginType': 'iphone',
'password': 'wyzy19851021',
'phone': '18691098998'
}
request_data = urllib.request.Request(
url='https://api.moguding.net:9000/session/user/v1/login',
data=json.dumps(login_data).encode(),
headers={'Content-Type': 'application/json; charset=UTF-8'}
)
try:
#urllib.request.urlopen 模擬瀏覽器請求
# json.loads() #字符串改成字典
#.read()方法可以得到網頁內容
token = json.loads(urllib.request.urlopen(request_data, context=context).read().decode())['data']['token']
if token:
return {
'code': '200',
'info': '登錄成功',
'token': token
}
except Exception as e:
if str(e) == '<urlopen error Remote end closed connection without response>':
return {
'code': '404',
'info': '網絡鏈接超時'
}
else:
return {
'code': '505',
'info': '賬號或密碼錯誤'
}
# 獲取學生日報(day)、周報(week)、月報(month)列表
def GetReports(self,token):
ids = []
day = {"currPage": 1, "pageSize": 25, "batchId": "81925354", "classId": "",
"teaId": "", "reportType": "day", "planId": "", "state":"","studentNumber":""}
request_data = urllib.request.Request(
url='https://api.moguding.net:9000/practice/paper/v1/list',
headers={
'Authorization': token,
'Content-Type': 'application/json; charset=UTF-8',
'roleKey':'depManager'
},
data=json.dumps(day).encode("utf-8")
)
try:
request = urllib.request.urlopen(request_data, context=context).read().decode()
print("**********",request)
print("----------",type(request))
for dayID in json.loads(request)['data']:
ids.append(dayID['reportId'])
print('正在獲取批閱文件,類型: ' + "day" + ' ' + dayID['reportId'])
return ids
except Exception as e:
print(e)
def get_report(self):
ids = []
day = {"currPage":1,"pageSize":25,"batchId":"81925354","classId":"","teaId":"","reportType":"day","planId":"","state":"","studentNumber":""}
url = 'https://api.moguding.net:9000/practice/paper/v1/list',
content = self.session.post(url,data=day)
print("content",content.text)
if __name__ == '__main__':
mo = Mogu()
response = mo.get_login()
print("登錄:",response)
token = response['token']
mo.GetReports(token)