当前位置: 首页 > 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')

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

http://www.lqws.cn/news/550837.html

相关文章:

  • 开疆智能CCLinkIE转ModbusTCP网关连接组态王配置案例
  • 开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作
  • Ollama+Gemma3模型+Open WebUI,无公网IP如何内网穿透远程访问?
  • 【Linux 设备模型框架 kobject 和 kset】
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)
  • 【k近邻】 K-Nearest Neighbors算法原理及流程
  • 机器学习3——参数估计之极大似然估计
  • C++并发编程-4.unique_lock,共享锁和递归锁
  • 详解HashMap底层原理
  • 电脑远程控制另一台电脑无法连接怎么办
  • PostgreSQL 容器化分布式技术方案
  • 基于51单片机-蜂鸣器演奏《飞雪玉花》
  • 什么是故障注入测试
  • 强化联邦学习的车联网 DDoS 攻击检测
  • 【图像处理入门】12. 综合项目与进阶:超分辨率、医学分割与工业检测
  • FLUX.1 Kontext(Dev 版)训练lora基础教程
  • TiDB AUTO_RANDOM 超大主键前端精度丢失排查:JavaScript Number 限制与解决方案
  • 内测开启!看海量化回测系统V2.0版本更新,基于miniQMT的回测系统问世!
  • Threejs开发指南(第七篇 利用AI进行threejs开发)
  • 封装nuxt3的SSR请求和CSR请求方法
  • 1 Studying《Is Parallel Programming Hard》6-9
  • 双指针技巧深度解析
  • C#系统学习第二章——第一个C#程序
  • P27:RNN实现阿尔茨海默病诊断
  • 华为云Flexus+DeepSeek征文|基于Dify+ModelArts开发AI智能会议助手
  • 本地部署 WordPress 博客完整指南(基于 XAMPP)
  • nt!MiFlushSectionInternal函数分析从nt!IoSynchronousPageWrite函数到Ntfs!NtfsFsdWrite函数
  • 三阶落地:腾讯云Serverless+Spring Cloud的微服务实战架构
  • React中的ErrorBoundary
  • 【经验】新版Chrome中Proxy SwitchyOmega2已实效,改为ZeroOmega