{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# 高考志愿管理" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2020年高考录取信息导入MongoDB" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [] }, "outputs": [], "source": [ "import pymysql\n", "import pymongo\n", "import decimal\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"gaokao\"]\n", "mycol = mydb[\"college\"]\n", "mycol1 = mydb[\"admission_2020\"]\n", "\n", "m_col = {}\n", "m_spe = {}\n", "m_xx = {}\n", "for x in mycol.find({\"code\":{'$exists': 'true'}},{\"_id\": 0, \"code\": 1, \"name\": 1}):\n", " m_col[x['code']] = x['name']\n", "\n", "\n", "db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"gaokao\" )\n", "cursor = db.cursor()\n", "sql = 'SELECT a.code,a.college,a.name FROM speciality AS a WHERE a.nian=\"2020\"'\n", "cursor.execute(sql)\n", "results = cursor.fetchall()\n", "for result in results:\n", " m_spe.setdefault(result[1],{}) \n", " m_spe[result[1]][result[0]] = result[2]\n", "sql = 'SELECT * FROM admission_2020 AS a ORDER BY a.rank_min'\n", "cursor.execute(sql)\n", "results = cursor.fetchall()\n", "i = 0\n", "m_min = 0\n", "ii = 0\n", "for result in results:\n", " m_xx.clear()\n", " if result[6] == m_min:\n", " ii = ii\n", " i = i+1\n", " else:\n", " i = i+1\n", " ii = i\n", " m_min = result[6]\n", " m_xx['pos'] = ii\n", " m_xx['col_code'] = result[1]\n", " m_xx['col_name'] = m_col[result[1]]\n", " m_xx['spe_code'] = result[2]\n", " m_xx['spe_name'] = m_spe[result[1]][result[2]]\n", " m_xx['plan'] = result[3]\n", " m_xx['dispense'] = result[5]\n", " m_xx['num_min'] = result[6]\n", " m_xx['num_avg'] = int(result[7])\n", " m_xx['rank_min'] = result[8]\n", " m_xx['nian'] = '2020' \n", " mycol1.insert_one(m_xx)\n", "#print(m_spe)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2021年全国高等学校信息更新" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2021年全国高等学校信息导出至json文件" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "filename = 'data/2021年全国普通高等学校名单.xlsx'\n", "wb = openpyxl.load_workbook(filename)\n", "sheet = wb.active\n", "data1 =list(sheet.values)\n", "del data1[0:3]\n", "i = 1\n", "dict1 = {}\n", "for items in data1:\n", " list1 = (items[1],str(items[2]),items[3],items[4],items[5],items[6])\n", " dict1[i] = list1\n", " i += 1 \n", "with open('data/2021年全国普通高等学校名单.json','w') as fl2:\n", " json.dump(dict1,fl2) \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 整理2021年全国高等学校信息" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "import pymongo\n", "\n", "\n", "filename = 'data/2021年全国普通高等学校名单.json'\n", "with open(filename,'r') as fl:\n", " m_xx = json.load(fl)\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"gaokao\"]\n", "mycol = mydb[\"college_2021\"]\n", "\n", "m_col = {}\n", "\n", "\n", "for x in mycol.find({\"id_code\":{'$exists': 'true'}},{\"_id\": 0, \"id_code\": 1, \"name\": 1}):\n", " m_col[x['id_code']] = x['name']\n", "#print(m_col.keys())\n", "for k, v in m_xx.items():\n", " m_code = v[1]\n", " #print(m_code)\n", " if m_code not in m_col.keys():\n", " dict1 = {}\n", " dict1['id_code'] = v[1]\n", " dict1['name'] = v[0]\n", " dict1['charge'] = v[2]\n", " dict1['city'] = v[3]\n", " dict1['grade'] = v[4]\n", " dict1['note'] = v[5]\n", " mycol.insert_one(dict1) \n", " print(dict1['name'] + '导入成功!')\n", " #print(v[0],v[1])\n", " \n", "\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 计算志愿分数概率" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import random\n", "\n", "array2 = []\n", "for i in range(300000):\n", " array1 = []\n", " s = 0\n", " for ii in range(60):\n", " m1 = random.randint(580,595)\n", " array1.append(m1)\n", " s = s + m1 \n", " m_avg = round(s/60,2)\n", " if m_avg == 582.8 and (580 in array1) and (595 in array1):\n", " #print(array1)\n", " array2.extend(array1)\n", " \n", "#print(array2)\n", "m_set = set(array2)\n", "for m in m_set:\n", " print(m,array2.count(m))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 导入山东大学录取明细" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import openpyxl\n", "import pymongo\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"gaokao\"]\n", "mycol = mydb[\"admission_college\"]\n", "wb = openpyxl.load_workbook('./data/shandongdaxue.xlsx')\n", "sheet = wb.active\n", "#sheets = wb.sheetnames\n", "code = 'A422'\n", "name = '山东大学'\n", "new_col = []\n", "dict1 = {}\n", "\n", "new_code = []\n", "dict1['code'] = code\n", "dict1['name'] = name\n", "for n in range(1,sheet.max_row+1):\n", " nian = str(sheet.cell(n,1).value)\n", " dict2 = {}\n", " \n", " dict1.setdefault(nian,[])\n", " if sheet.cell(n,2).value =='理工':\n", " m_lb = 'l'\n", " elif sheet.cell(n,2).value =='文史':\n", " m_lb = 'w'\n", " else:\n", " m_lb = 'z' \n", " dict2['type'] = m_lb\n", " dict2['spe_name'] = sheet.cell(n,4).value\n", " dict2['max_score'] = sheet.cell(n,5).value\n", " dict2['min_score'] = sheet.cell(n,6).value\n", " dict2['avg_score'] = sheet.cell(n,7).value\n", " dict2['dispense'] = sheet.cell(n,8).value\n", " dict1[nian].append(dict2)\n", "mycol.insert_one(dict1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 导入山东师范大学录取明细" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import openpyxl\n", "import pymongo\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"gaokao\"]\n", "mycol = mydb[\"admission_college\"]\n", "wb = openpyxl.load_workbook('./data/中国海洋大学.xlsx')\n", "sheet = wb.active\n", "#sheets = wb.sheetnames\n", "code = 'A423'\n", "name = '中国海洋大学'\n", "new_col = []\n", "dict1 = {}\n", "\n", "new_code = []\n", "dict1['code'] = code\n", "dict1['name'] = name\n", "for n in range(1,sheet.max_row+1):\n", " nian = str(sheet.cell(n,1).value)\n", " dict2 = {}\n", " \n", " dict1.setdefault(nian,[])\n", " if sheet.cell(n,2).value =='理工':\n", " m_lb = 'l'\n", " elif sheet.cell(n,2).value =='文史':\n", " m_lb = 'w'\n", " else:\n", " m_lb = 'z'\n", " dict2['type'] = m_lb\n", " dict2['spe_name'] = sheet.cell(n,4).value\n", " dict2['max_score'] = sheet.cell(n,7).value\n", " dict2['min_score'] = sheet.cell(n,5).value\n", " dict2['avg_score'] = sheet.cell(n,6).value\n", " if sheet.cell(n,8).value:\n", " dict2['dispense'] = sheet.cell(n,8).value\n", " dict1[nian].append(dict2)\n", "mycol.insert_one(dict1)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 按地区列示高校" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pymongo\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"gaokao\"]\n", "mycol = mydb[\"college\"]\n", "m_city = []\n", "m_xx = {}\n", "myquery = {'code':{'$exists': 'true'},'note':{'$not':{'$regex':'民办'}}}\n", "colleges = mycol.find(myquery,{ \"_id\": 0, \"name\": 1, \"code\": 1,'city':1 })\n", "for x in colleges:\n", " m_xx1 = []\n", " c = x['city']\n", " m_xx.setdefault(c,[])\n", " m_xx1.append(x['code'])\n", " m_xx1.append(x['name'])\n", " m_xx[c].append(m_xx1)\n", "#print(m_city)\n", "#按照原顺序对高校所在城市排序\n", "'''\n", "city = list(set(m_city))\n", "city.sort(key=m_city.index)\n", "for c in city:\n", "# m_xx['city'] = c\n", " m_xx.setdefault(c,[])\n", " for y in colleges:\n", " print(y['code'],y['name'])\n", " \n", "#m_xx \n", "''' \n", "for k,v in m_xx.items():\n", " print(k)\n", " for mm in v:\n", " print(mm[0],mm[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 显示学校2020年招生信息" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pymongo\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"gaokao\"]\n", "mycol = mydb[\"admission_2020\"]\n", "code = 'A422'\n", "m_city = []\n", "m_xx = {}\n", "myquery = {'col_code':code}\n", "colleges = mycol.find(myquery,{ \"_id\": 0 , \"col_code\":0,\"col_name\":0,'plan':0,'nian':0}).sort('pos')\n", "for x in colleges:\n", " print(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2021年拟在山东招生普通高校专业(类)选考科目要求" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from os import mkdir\n", "from time import sleep\n", "from re import findall,sub,S\n", "from os.path import isdir,isfile\n", "from urllib.request import urlopen\n", "from urllib.parse import urlencode,quote\n", "from openpyxl import Workbook\n", "import ssl\n", "from bs4 import BeautifulSoup\n", "import pymongo\n", "ssl._create_default_https_context = ssl._create_unverified_context\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"gaokao\"]\n", "mycol = mydb[\"xuankaokemu\"]\n", "list2 = []\n", "for x in mycol.find({},{ \"_id\": 0, \"code\": 1}):\n", " list2.append(x['code'])\n", "#m_xx = dict()\n", "start_url = 'https://xkkm.sdzk.cn/web/xx.html'\n", "with urlopen(start_url) as fp:\n", " content = fp.read().decode('utf8')\n", " \n", "pattern = (r'