import requests import json import pymysql import datetime # def getHeader(): # return { # "User-Agent":"Mozilla/5.0 (Linux; Android 10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36 MMWEBID/1122 MicroMessenger/7.0.20.1781(0x27001439) Process/toolsmp WeChat/arm64 NetType/4G Language/zh_CN ABI/arm64" # } db = pymysql.connect(host="localhost", user="root", password="password", db="zk") # json时间问题和bytes问题解决 class JsonEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj,datetime.datetime): return obj.strftime("%Y-%m-%d %H:%M:%S") elif isinstance(obj,bytes): return str(obj, 'utf-8') else: return json.JSONEncoder.default(self,obj) def start(): session = requests.session() f_login(session) def f_login(session): session.post("https://sdjrzk.xuanyun.tech/api/auth/user/login/", {"username":"ZK_USER","password":"ZK_PASSWORD"}) f_getCourse(session) def f_getCourse(session): r = session.get("https://sdjrzk.xuanyun.tech/api/course/course/?page_size=100") data = json.loads(r.text) res = data["results"] cursor = db.cursor() sql="call insert_course(%s)" cursor.execute(sql, r.text) db.commit() #ids = []e for i in res: #ids.append(i["id"]) f_getQuestionList(session, str(i["id"])) def f_getQuestionList(session, id): r = session.get("https://sdjrzk.xuanyun.tech/api/exam/paper/?owner_type=50&relation_limit=course.course&page_size=300&owner_id="+id) data = json.loads(r.text) res = data["results"] cursor = db.cursor() sql="call insert_question_list(%s, %s)" cursor.execute(sql, (id, r.text)) db.commit() for i in res: f_getQuestionContent(session, str(i["id"])) def f_getQuestionContent(session, id): r = session.get("https://sdjrzk.xuanyun.tech/api/exam/paper/"+id+"/") print(id) data = json.loads(r.text) content = data["content"] content_object = json.dumps(data["content_object"], cls=JsonEncoder, ensure_ascii=False) cursor = db.cursor() sql="call insert_question_content(%s, %s, %s)" cursor.execute(sql, (id, content, content_object)) db.commit() # print(r.text) if __name__ == '__main__': start()