Lzy's Hobby

  • 首页
  • IT教程
    • 操作系统相关
    • 网络相关
    • 网站运维相关
  • IT资源
    • 建站资源
    • 软件资源
  • IT学习
    • 知识体系
    • 学习笔记
    • 学习资源
  • 关于
    • 博主简介
    • 建设历史
    • 朋友
    • 留言
  • Lzy's Life
Lzy's Hobby
一个关注IT科技的个人独立博客
  1. 首页
  2. IT教程
  3. 正文

用Python编写爬虫爬取福建省新高考选科要求数据

2019年8月27日 371点热度 0人点赞 0条评论

为方便学生选科走班,福建省教育厅学生工作处开发了《福建省高考综合改革——选科走班指南》程序。本来想提取数据整理一份自己规定的报考专业目录内的专业选科要求。但苦于电脑版页面不知用的何种“奇技淫巧”,HTML代码中没有数据,也没办法复制。手机版虽然可以复制,但不支持自定义显示数量,只能一个一个点,极其麻烦。
后来学习了Python爬虫开发,发现这问题很容易解决。

《福建省高考综合改革——选科走班指南》程序

抓包获取接口

打开Chrome浏览器开发人员工具,切换到“Network”选项卡,进行抓包。
抓取到的API
API地址(调用方式:GET) https://wjt-subject-tool-api.sdp.101.com/v1/actions/manage
参数
2019年8月30日补充,若不发送前两个参数,可以取到所有院校和专业的数据。
按院校或专业查询:

参数 说明
school_name 院校名称
subject_name 专业名称
page 当前页数
page_size 每页显示数目
_ 用途不明,默认值:1566884950161

按科目查询:

参数 说明
f_subject: 首选科目
s_subject 再选科目
page 当前页数
page_size 每页显示数目
_ 用途不明,默认值:1566884950161

编写Python程序

将下列代码保存为.py文件,用Python运行。运行前需要用pip安装requests、retrying、pandas库。
本文提供的程序代码的查询方式均为“按科目查询”。若要实现“按院校或专业查询”,改一下变量即可。

'''
福建省教育厅《2021年拟在闽招生普通高校本科专业选考科目要求指引》
数据全自动爬取 v2
'''
import requests
from retrying import retry
import json
import pandas as pd
import sys

def getTerm1():
    #输入查询条件
    print("福建省教育厅《2021年拟在闽招生普通高校本科专业选考科目要求指引》")
    print("数据全自动爬取 v2")
    print("")
    print("支持的首选科目要求:")
    print("物理或历史均可")
    print("仅物理")
    print("仅历史")
    f_subject = input("请输入首选科目要求:")
    return f_subject
def getTerm2():
    print("支持的再选科目要求:")
    print("不提再选科目要求")
    print("地理必须选考方可报考")
    print("化学、地理均须选考方可报考")    
    print("化学、地理选考其中一门即可报考")
    print("化学、生物均须选考方可报考")
    print("化学、生物选考其中一门即可报考")
    print("化学、思想政治选考其中一门即可报考")
    print("化学必须选考方可报考")
    print("生物、地理均须选考方可报考")
    print("生物、地理选考其中一门即可报考")
    print("生物、思想政治选考其中一门即可报考")
    print("生物必须选考方可报考")
    print("思想政治、地理均须选考方可报考")
    print("思想政治、地理选考其中一门即可报考")
    print("思想政治必须选考方可报考")
    s_subject = input("请输入再选科目要求:")
    return s_subject
@retry(stop_max_attempt_number = 5)
def getData(f_subject,s_subject):
    print("数据量较大,请稍后......")
    #获取数据总数
    url1 = "https://wjt-subject-tool-api.sdp.101.com/v1/actions/manage?f_subject="+f_subject+"&s_subject="+s_subject+"&page=1&page_size=1&_=1566823308884"
    headers = {"user-agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"}
    response1 = requests.get(url1,headers=headers,timeout = 10)
    data1 = json.loads(response1.content.decode())
    total = str(data1["total"])
    if total == '0':
        print("此组合无数据!")
        sys.exit(0)
    else:
        #获取全部数据
        url2 = "https://wjt-subject-tool-api.sdp.101.com/v1/actions/manage?f_subject="+f_subject+"&s_subject="+s_subject+"&page=1&page_size="+total+"&_=1566823308884"
        response2 = requests.get(url2,headers=headers,timeout = 60)
        data2 = json.loads(response2.content.decode())    
        return data2['items']
        print("网络错误,请检查网络后重试!")
def run():
    #实现主要逻辑
    data = getData(getTerm1(),getTerm2())
    filename = input("请输入欲导出的文件名(不需要输入后缀名):")
    print("正在输出格式化数据...")
    df = pd.DataFrame(data)
    df.to_csv(filename+'.csv',encoding='utf_8_sig')
    print("数据处理完成!")
if __name__ == '__main__':
    run()

程序导出的数据是.csv格式,可以处理后用Excel另存为为.xlsx文件进行筛选、排序等操作。

导出结果截图

程序下载

百度网盘:https://pan.baidu.com/s/1dv9h0Ts8hs6vlXvIrR3zkQ
含.py文件和Pyinstaller导出的.exe文件(可直接运行,无需安装Python和程序依赖的库)

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
标签: python Python爬虫 福建新高考 福建省教育厅
最后更新:2019年8月27日

lzy20021010

一个研究了N年IT的博主

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

文章目录
  • 抓包获取接口
  • 编写Python程序
  • 程序下载
最新 热点 随机
最新 热点 随机
WordPress屏蔽海外非中文垃圾评论(2023版) Dell Inspiron 15-3541 笔记本折腾记 本站架构由Typecho迁回WordPress 世界,您好! 利用FreshRSS自建RSS在线订阅平台 阿里云国际版日本轻量应用服务器——联通精品线路|$3.5/月|单核|0.5G|20G|1T
2017-2018学年度大戏《开学》即将上映 WinRAR简体中文版去广告 从Windows 7升级至Windows 10 AMD Ryzen处理器评测解禁时间确定:2月28日见分晓 在Typecho主题上添加表格样式和热门文章功能 解决国内WordPress网站无法自动正常更新的方法
标签聚合
来源 域名 用户 文件 服务器 博客 网站 Windows

COPYRIGHT © 2015-2022 Lzy's Hobby ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

Powered by WordPress

Server by Aliyun

闽ICP备18019376号-1

闽公网安备 35052102000284号