{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [], "toc-hr-collapsed": true }, "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": [ "## 计算志愿分数概率" ] }, { "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'