-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathdownloads.py
More file actions
126 lines (104 loc) · 6.01 KB
/
downloads.py
File metadata and controls
126 lines (104 loc) · 6.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# -*- coding: utf-8 -*-
# 下载课程信息到本地
import setting
import util
import json
import os
headers = setting.headers
session = util.get_session()
# 方案内课程
def in_course(page):
form_data = {
"querySetting": r'''{"data":{"studentCode":"%s","campus":"01","electiveBatchCode":"%s","teachingClassType":"FANKC","checkConflict":"2","isMajor":"1","queryContent":"MOOC:2,"},"pageSize":"10","pageNumber":"%s","order":"null","orderBy":"courseNumber"}'''%(setting.user_id,setting.electiveBatchCode,str(page))
}
response = session.post(util.get_url("xsxkapp/sys/xsxkapp/elective/programCourse.do"),headers=setting.headers,data=form_data)
return response.text
# 推荐班级课程
def recommended_course(page):
url = util.get_url("xsxkapp/sys/xsxkapp/elective/recommendedCourse.do")
form_data = {
"querySetting": r'''{"data": {"studentCode": "%s", "campus": "01","electiveBatchCode": "%s", "isMajor": "1","teachingClassType": "TJKC", "checkConflict": "2", "checkCapacity": "2","queryContent": "MOOC:2,"}, "pageSize": "10", "pageNumber": %s, "order": "","orderBy": "courseNumber"}'''%(setting.user_id,setting.electiveBatchCode,str(page))
}
response = session.post(url=url,headers=headers,data=form_data)
return response.text
# 方案外课程
def out_course(page):
form_data = {
"querySetting": r'''{"data": {"studentCode": "%s", "campus": "01","electiveBatchCode": "%s", "isMajor": "1","teachingClassType": "FAWKC", "checkConflict": "2", "checkCapacity": "2","queryContent": "MOOC:2,"}, "pageSize": "10", "pageNumber": %s, "order": "","orderBy": "courseNumber"}'''%(setting.user_id,setting.electiveBatchCode,str(page))
}
response = session.post(util.get_url("xsxkapp/sys/xsxkapp/elective/programCourse.do"),headers=setting.headers,data=form_data)
return response.text
# 公共课程
def public_course(page):
form_data = {
"querySetting": r'''{"data": {"studentCode": "%s", "campus": "01","electiveBatchCode": "%s", "isMajor": "1","teachingClassType": "XGXK", "checkConflict": "2", "checkCapacity": "2","queryContent": "MOOC:2,"}, "pageSize": "10", "pageNumber": %s, "order": "","orderBy": "courseNumber"}'''%(setting.user_id,setting.electiveBatchCode,str(page))
}
response = session.post(util.get_url("xsxkapp/sys/xsxkapp/elective/programCourse.do"),headers=setting.headers,data=form_data)
return response.text
# 体育课程
def sport_course(page):
form_data = {
"querySetting": r'''{"data": {"studentCode": "%s", "campus": "01","electiveBatchCode": "%s", "isMajor": "1","teachingClassType": "TYKC", "checkConflict": "2", "checkCapacity": "2","queryContent": "MOOC:2,"}, "pageSize": "10", "pageNumber": %s, "order": "","orderBy": "courseNumber"}'''%(setting.user_id,setting.electiveBatchCode,str(page))
}
response = session.post(util.get_url("xsxkapp/sys/xsxkapp/elective/programCourse.do"),headers=setting.headers,data=form_data)
return response.text
# 辅修课程
def fuxiu_course(page):
form_data = {
"querySetting": r'''{"data": {"studentCode": "%s", "campus": "01","electiveBatchCode": "%s", "isMajor": "1","teachingClassType": "FXKC", "checkConflict": "2", "checkCapacity": "2","queryContent": "MOOC:2,"}, "pageSize": "10", "pageNumber": %s, "order": "","orderBy": "courseNumber"}'''%(setting.user_id,setting.electiveBatchCode,str(page))
}
response = session.post(util.get_url("xsxkapp/sys/xsxkapp/elective/programCourse.do"),headers=setting.headers,data=form_data)
return response.text
# 慕课
def mooc(page):
form_data = {
"querySetting": r'''{"data": {"studentCode": "%s", "campus": "01","electiveBatchCode": "%s", "isMajor": "1","teachingClassType": "MOOC", "checkConflict": "2", "checkCapacity": "2","queryContent": "MOOC:2,"}, "pageSize": "10", "pageNumber": %s, "order": "","orderBy": "courseNumber"}'''%(setting.user_id,setting.electiveBatchCode,str(page))
}
response = session.post(util.get_url("xsxkapp/sys/xsxkapp/elective/programCourse.do"),headers=setting.headers,data=form_data)
return response.text
# 数据下载到本地
def save_to_file(type,methods):
for i in range(1000):
s = methods(page=i)
data = json.loads(s)
if data['dataList'] is None or len(data['dataList'])==0:
break
path = os.path.abspath("data/"+type+('.csv'))
#print(path)
file = open(path,mode="a+")
for course in data['dataList']:
for j in range(1000):
if len(course['tcList']) <= j:
break
teacher = "\""+str(course['tcList'][j]['teacherName'])+"\""
item = [course['courseName'],course['tcList'][j]['teachingClassID'],str(course['tcList'][j]['teachingPlace'])]
#print(item)
file.write(",".join(item)+","+str(teacher)+"\n")
"""
if course['tcList'][j]['conflictDesc'] == None and (course['tcList'][j]['numberOfSelected'] < course['tcList'][j]['classCapacity']) and (course['selected'] == False):
file.write(",".join(item)+","+str(teacher)+"\n")
else:
pass
"""
def clear_data():
path = os.path.abspath("data")
for dirpath,dirnames,filenames in os.walk(path, topdown=True):
for filename in filenames:
filepath = os.path.join(path,filename)
with open(filepath,mode="w+") as f:
f.write("")
print("清空",filename)
# 下载课程相关数据到本地
def downloads():
# 清空文件
clear_data()
# 下载文件
print("正在下载课程id到data文件夹")
save_to_file(type="方案内课程",methods=in_course)
save_to_file(type="方案外课程",methods=out_course)
save_to_file(type="本班课程",methods=recommended_course)
save_to_file(type="校公选课",methods=public_course)
save_to_file(type="体育课程",methods=sport_course)
save_to_file(type="辅修课程",methods=fuxiu_course)
save_to_file(type="慕课",methods=mooc)
print("文件下载完成")