当前位置: 首页 > news >正文

助力高考,利用python获取本专科专业选考科目要求

大家好,今天我们来利用python技术助力高考,获取网上的本专科专业选考科目要求,用到的Python模块有:Requests、Json、BeautifulSoup、Pandas ,主要思路是Requests获取接口请求,利用BeautifulSoup 解析网站的数据,最后利用Pandas库生成Excel文件。本期我们来获取江苏省,历史类的所有高校的专业选考科目要求实现的结果展示如下:

截屏2024-06-15 下午7.07.07

截屏2024-06-15 下午7.10.11

下面我们就来看看如何实现:

首先打开网址我们按F12检查网站信息,我们选择江苏,首选科目选择历史,点击查询 浏览器 NetWork中就会显示出调用的URL,和相对应的请求参数

截屏2024-06-15 下午9.23.50

请求参数,经过分析 我们可以得出 江苏代码32 ,历史类代码08 记住这个在后面查看详情里面用到。

截屏2024-06-15 下午7.14.44

这时我们通过requests请求就能得到系统返回的json数据。

下面我们来分析详情的参数:

yxdm为学校编码,yxmc为学校名称,xkm为所选科目:08代表历史

截屏2024-06-15 下午9.08.48

我们利用BeautifulSoup模块进行解析,最终提取出所有的信息导出到excel。

截屏2024-06-15 下午7.21.36

具体实现代码如下:

import requests
from urllib.parse import urlencode
from urllib.parse import unquote
import time
import hashlib
import pandas as pd
import random
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
}
​
json_data = {'ssdm': '32',
'sxkm': '08',
'kskms': '',
'xkml': '',
'qttj': '',
'cxtj': ''
}
​
def get_xk(yxdm, ssmc, zswz,dq):list = []url = 'https://xkcx2024/xxdetail.jsp?yxdm={}&yxmc={}&sxkm=08&kskms=&qttj=&cxtj=&xkml='.format(yxdm, ssmc)response = requests.post(url, headers=headers)content = response.textpage = BeautifulSoup(content, 'html.parser')   for trs in page.findAll('tr'):for tds in trs.findAll('td'):list.append(tds.text)
​chunks = 7chunks_list = [list[i:i + chunks] for i in range(0, len(list), chunks)]lists_with_new_element = [sublist + [yxdm, ssmc, zswz, '历史',dq] for sublist in chunks_list]print(lists_with_new_element)result.extend(lists_with_new_element)print(yxdm+':'+ssmc+':已下载...'
​
​
if __name__ == '__main__':result=[]title = ['序号', '层次', '专业(类)名称', '首选科目', '再选科目及选考要求', '所含专业和代码', '招考方向', '学校代码', '学校名称', '学校网址', '首选科目','地区']response = requests.post('https://xkcx2024/GetYxxxServlet', headers=headers,data=json_data)data = response.json()schools=data['yxs']for  school in schools:random_time = random.uniform(1, 2)time.sleep(random_time)dm=school['yxdm']mc=school['yxmc']wz=school['zswz']dq=school['ssmc']get_xk(dm, mc, wz,dq)        df = pd.DataFrame(result, columns=title)df.to_excel('历史类选科.xlsx', index=False)print('done')

希望得到大家的关注和点赞,我们下期见。

相关文章:

  • 【CMake基础入门教程】第八课:构建并导出可复用的 CMake 库(支持 find_package() 查找)
  • 02【C++ 入门基础】标准输入输出初识/缺省参数
  • 【力扣 中等 C】64. 最小路径和
  • 分布式session解决方案
  • qemu运行Ubuntu 18.04/arm64
  • 树的重心(双dfs,换根)
  • 如何从零开始掌握Pandas的DataFrame使用
  • 信息抽取领域关键Benchmark方法:分类体系
  • 基于Spring Cloud Alibaba构建微服务架构的实践探索
  • EXCEL数据报表
  • 在vitepress网站添加全局的公告弹窗,以方便告知某些重要通告
  • 【学习总结】evo工具的一些记录
  • 绕过 GraphQL 暴力破解保护
  • RISC(精简指令集计算机)和CISC(复杂指令集计算机)
  • 【Linux】ghb工具
  • Ubuntu18.04/Mysql 5.7 建立主备模式Mysql集群
  • OpenTiny 体验官实操活动 | 快速体验 TinyVue 组件库的智能化交互能力
  • SQL Server 中 GO 的作用
  • 深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系
  • Zemax光学设计二次成像