吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6635|回复: 39
收起左侧

[Python 转载] 获取指定城市大学的历年高考分数线

  [复制链接]
Hatsune_miku 发表于 2019-6-26 09:18
本帖最后由 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

运行完毕的时候,程序会在运行目录生成一个University.xls,这个就是我们获取到的数据啦。
Snipaste_2019-06-26_09-10-03.png


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()


免费评分

参与人数 6吾爱币 +8 热心值 +5 收起 理由
wushaominkk + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
evolution + 1 + 1 我很赞同!
mhaitao + 1 用心讨论,共获提升!
zq7831664 + 1 + 1 可以放上成品么 小白不会用。。。
Windy渊虹 + 1 + 1 谢谢@Thanks!
时空之外 + 1 + 1 666可以哒

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

1e3e 发表于 2020-7-10 14:27
===== RESTART: C:\Users\Administrator.USER-20200210NV\Desktop\查高考的分数.py =====
xls格式表格写入数据成功!
Traceback (most recent call last):
  File "C:\Users\Administrator.USER-20200210NV\Desktop\查高考的分数.py", line 133, in <module>
    main()
  File "C:\Users\Administrator.USER-20200210NV\Desktop\查高考的分数.py", line 121, in main
    schools = getSchool()
  File "C:\Users\Administrator.USER-20200210NV\Desktop\查高考的分数.py", line 55, in getSchool
    r = requests.get(f'http://daxue.eol.cn/{city}.shtml')
AttributeError: module 'requests' has no attribute 'get'
>>>
Nice、z 发表于 2019-6-26 22:13
Hatsune_miku 发表于 2019-6-26 15:15
应该是暂时性的故障

求做个完整版,我一长方形固态空间移动专业的  看不懂哇
绿叶红花 发表于 2019-6-26 09:35
无敌小儿 发表于 2019-6-26 09:49
你是不是要报计算机专业呢?
Zz6103162 发表于 2019-6-26 09:55
谢谢分享!下载试试。
zpwz 发表于 2019-6-26 10:26
真是高手!
svnr 发表于 2019-6-26 10:26
这简直是人间天使啊,这么应景的工具,nice
薄荷叶1996 发表于 2019-6-26 10:28
感谢分享
lllggghhh 发表于 2019-6-26 10:30
支持支持
153826 发表于 2019-6-26 10:34
感谢分享
tangzhai 发表于 2019-6-26 10:36
这个很有用!下来用用!写了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-24 14:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表