中国各高校数据分析
一、爬取数据
爬取的网站:中国教育在线
对应的网址:https://gkcx.eol.cn/school/search
打开网址,按F12打开开发者工具
- 切换页数发现网址的参数page在发生变化,
所以想获取某一页的数据集,首先需将url的page参数改为这一页的页数,找到对应的url; - 需遍历多少页才能获得整个数据集呢?
页面数 = 总个数/每页的个数
- 获取总个数
import json
import pandas as pd
import numpy as np
import warnings
import requests
url = "https://api.eol.cn/gkcx/api/?access_token=&admissions=¢ral=&department=&dual_class=&f211=&f985=&is_doublehigh=&is_dual_class=&keyword=&nature=&page=1&province_id=&ranktype=&request_type=1&school_type=&signsafe=&size=2&sort=view_total&top_school_id=[2941]&type=&uri=apidata/api/gk/school/lists"
headers={
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}
res = requests.post(url, headers = headers)
data = json.loads(res.text)
size=data["data"]["numFound"]
- 爬取数据集
- 利用总个数,求取总页数(集总请求数)
- 遍历请求次数,构造每一次的请求 url,其实主要是更新page参数
- 解析每一页的数据
# 构建爬取函数
def get_university_info(size, page_size=20):
page_cnt = int(size/page_size) if size%page_size==0 else int(size/page_size)+1
print('一共{0}页数据,即将开始爬取...'.format(page_cnt))
df_result = pd.DataFrame()
for index in range(1,page_cnt+1):
print('正在爬取第 {0}/{1} 页数据'.format(index, page_cnt))
url = "https://api.eol.cn/gkcx/api/?access_token=&admissions=¢ral=&department=& \
dual_class=&f211=&f985=&is_doublehigh=&is_dual_class=&keyword=&nature=&page={
0} \
&province_id=&ranktype=&request_type=1&school_type=&signsafe=&size=20&sort=view_total \
&top_school_id=[2941]&type=&uri=apidata/api/gk/school/lists".format(index)
res = requests.post(url, headers = headers)
data = json.loads(res.text)
if data["message"] == "成功":
df_data = pd.DataFrame(data["data"]["item"])
df_result = df_result.append(df_data)
return df_result
#爬取数据
df_data = get_university_info(size)
df_data.head()
df_data.to_excel("11.xlsx") #保存数据
结果如下:
二、数据分析思维
数据包含字段:地点,官网,所属部门,城市,区域,是否双一流,是否211,是否985,是否招生,普通本科还是专科(高职),校名,性质,省份,类别,总浏览,周浏览,月浏览,年浏览