本文来源吾爱破解论坛
本帖最后由 Hatsune_miku 于 2019-6-26 13:37 编辑
高考完了,是时候填志愿了,去哪里呢,去哪所大学呢,大学历年录取分数线多少呢?
我老弟(不是我)也遇到这样的问题,干脆写个脚本获取所有想去城市的大学的本科院校,来慢慢看。
软件介绍
获取高校的地址是:daxue.eol.cn,查询分数线的API是百度的。查询院校均为本科院校。
使用教程
安装依赖:
[Shell] 纯文本查看 复制代码
pip install requests lxml xlrd xlwt xlutils
目前获取的是【上海】【北京】【浙江】【广东】四个地方的本科学校:
分别对应getSchool函数里的alis:
[Python] 纯文本查看 复制代码
alis = ['sh', 'bj', 'zj', 'gd'] for city in alis: if city == 'sh': num = 39 if city == 'bj': num = 69 if city == 'zj': num = 59 if city == 'gd': num = 67
alis列表里面的字母是每个城市or省的名称拼音缩写。sh=上海,bj=北京,以此类推,这里可以修改为自己想查的城市。
下面的num是一个城市所有的本科院校,可以打开:https://daxue.eol.cn/mingdan.shtml,然后找自己想查找的城市,进去之后看序号,到最后一个本科学校的序号是多少,这里就依次对应填多少。
myCity = '江西' # 你户口所在地(高考所在地)
mySubject = '理科' # 可选【文科】【理科】【综合】综合一般是新高考政策才会选,一般户口所在地为浙江或者上海或者别的地方。
如果想查211,985大学,把main函数里的schools = getSchool() 改成 schools = getProjectSchool()
运行截图:
TIM图片20190626091322.jpg (230.13 KB, 下载次数: 0)
下载附件 保存到相册
运行完毕的时候,程序会在运行目录生成一个University.xls,这个就是我们获取到的数据啦。
Snipaste_2019-06-26_09-10-03.png (103.57 KB, 下载次数: 0)
下载附件 保存到相册
Python运行版本:Python3
最后祝高三学子都能找到自己满意的大学。
完整代码:
[Python] 纯文本查看 复制代码
import requests import xlrd import xlwt from xlutils.copy import copy from lxml import etree book_name_xls = 'University.xls' sheet_name_xls = 'University' def write_excel_xls(path, sheet_name, value): index = len(value) # 获取需要写入数据的行数 workbook = xlwt.Workbook() # 新建一个工作簿 sheet = workbook.add_sheet(sheet_name) # 在工作簿中新建一个表格 for i in range(0, index): for j in range(0, len(value[i])): sheet.write(i, j, value[i][j]) # 像表格中写入数据(对应的行和列) workbook.save(path) # 保存工作簿 print("xls格式表格写入数据成功!") def write_excel_xls_append(path, value): index = len(value) # 获取需要写入数据的行数 workbook = xlrd.open_workbook(path) # 打开工作簿 sheets = workbook.sheet_names() # 获取工作簿中的所有表格 worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格 rows_old = worksheet.nrows # 获取表格中已存在的数据的行数 new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象 new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格 for i in range(0, index): for j in range(0, len(value[i])): new_worksheet.write(i+rows_old, j, value[i][j]) # 追加写入数据,注意是从i+rows_old行开始写入 new_workbook.save(path) # 保存工作簿 print("xls格式表格【追加】写入数据成功!") def read_excel_xls(path): workbook = xlrd.open_workbook(path) # 打开工作簿 sheets = workbook.sheet_names() # 获取工作簿中的所有表格 worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格 for i in range(0, worksheet.nrows): for j in range(0, worksheet.ncols): print(worksheet.cell_value(i, j), "\t", end="") # 逐行逐列读取数据 print() def getSchool(): alis = ['sh', 'bj', 'zj', 'gd'] for city in alis: if city == 'sh': num = 39 if city == 'bj': num = 69 if city == 'zj': num = 59 if city == 'gd': num = 67 r = requests.get(f'http://daxue.eol.cn/{city}.shtml') r.encoding='utf-8' page = etree.HTML(r.text) for i in range(num): cengci_a = page.xpath(f'/html/body/div[3]/div[2]/div[2]/table/tbody/tr[{i+3}]/td[2]') for cengci in cengci_a: schools.append(cengci.text) return schools def getProjectSchool(): # 211 985 alis = ['211', '985'] for project in alis: if project == '211': num = 116 # 116所 x = 3 if project == '985': num = 39 x = 2 r = requests.get(f'https://daxue.eol.cn/{project}.shtml') r.encoding='utf-8' page = etree.HTML(r.text) for i in range(num): tag_a = page.xpath(f'/html/body/div[3]/div[2]/div[{x}]/table/tbody/tr[{i+1}]/td[1]/a') for a in tag_a: schools.append(a.text) tag_b = page.xpath(f'/html/body/div[3]/div[2]/div[{x}]/table/tbody/tr[{i+1}]/td[2]/a') for b in tag_b: schools.append(b.text) return schools def Query(school): url = 'https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \ AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36' } params = { 'resource_id': '34559', 'query': school, 'co': f'tr[select1={myCity},select2={mySubject}]|th[select1={myCity},select2={mySubject}]', 'format': 'json', 'oe': 'utf-8', 'ie': 'utf-8', '_': '1561384786050' } r = requests.get(url, params = params, headers = headers).json() for i in range(len(r['data'][0]['tr'])): year = r['data'][0]['tr'][i]['col'][0]['info'][0]['text'] average = r['data'][0]['tr'][i]['col'][1]['info'][0]['text'] low = r['data'][0]['tr'][i]['col'][2]['info'][0]['text'] shengkong = r['data'][0]['tr'][i]['col'][3]['info'][0]['text'] batch = r['data'][0]['tr'][i]['col'][4]['info'][0]['text'] value1 = [[year, average, low, shengkong, batch, school],] write_excel_xls_append(book_name_xls, value1) read_excel_xls(book_name_xls) def main(): value_title = [["年份", "平均分", "最低分", "省控线", "批次", "学校"],] write_excel_xls(book_name_xls, sheet_name_xls, value_title) schools = getSchool() for school in schools: try: Query(school) except: pass if __name__ == '__main__': schools = [] myCity = '江西' mySubject = '理科' main()
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: python调用钉钉机器人(发送群消息)
- 下一篇: 北京地区二手房爬虫数据处理与展示