门户网站制作服务,北京网站建站系统平台,建行官方网站多少钱,农药化肥网站建设大家好#xff0c;今天我们来利用python技术助力高考#xff0c;获取网上的本专科专业选考科目要求#xff0c;用到的Python模块有#xff1a;Requests、Json、BeautifulSoup、Pandas #xff0c;主要思路是Requests获取接口请求#xff0c;利用BeautifulSoup 解析网站的…
大家好今天我们来利用python技术助力高考获取网上的本专科专业选考科目要求用到的Python模块有Requests、Json、BeautifulSoup、Pandas 主要思路是Requests获取接口请求利用BeautifulSoup 解析网站的数据最后利用Pandas库生成Excel文件。本期我们来获取江苏省历史类的所有高校的专业选考科目要求实现的结果展示如下 下面我们就来看看如何实现
首先打开网址我们按F12检查网站信息我们选择江苏首选科目选择历史点击查询 浏览器 NetWork中就会显示出调用的URL和相对应的请求参数 请求参数经过分析 我们可以得出 江苏代码32 历史类代码08 记住这个在后面查看详情里面用到。 这时我们通过requests请求就能得到系统返回的json数据。
下面我们来分析详情的参数
yxdm为学校编码yxmc为学校名称xkm为所选科目08代表历史 我们利用BeautifulSoup模块进行解析最终提取出所有的信息导出到excel。 具体实现代码如下
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{}sxkm08kskmsqttjcxtjxkml.format(yxdm, ssmc)response requests.post(url, headersheaders)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, headersheaders,datajson_data)data response.json()schoolsdata[yxs]for school in schools:random_time random.uniform(1, 2)time.sleep(random_time)dmschool[yxdm]mcschool[yxmc]wzschool[zswz]dqschool[ssmc]get_xk(dm, mc, wz,dq) df pd.DataFrame(result, columnstitle)df.to_excel(历史类选科.xlsx, indexFalse)print(done)
希望得到大家的关注和点赞我们下期见。