上次爬取高考分数线这部分收了个尾,今天咱们来全面爬取全国各省有多少所理工类大学,并简单实现一个数据可视化。话不多说,咱们开始吧。
第一步,拿到url地址
第二步,获取高校数据
第三步,地图可视化
第四步,调用函数实现需求
第一步,拿到url地址
这一部分需要导入这些库:
import requests
首先,拿到初始的url地址:
url_start='https://gkcx.eol.cn/school/search?recomschprop=%E7%90%86%E5%B7%A5'
将“理工”进行转码处理,就变成了url后面那样。
进入后页面如下:
可以看到,共匹配到866所学校,共有44页。感觉能继续往下爬了吗?别急,接着往下看。
我们先进行常规的get请求,发现得不到网页信息。同时发现,这些高校数据并不在网页源代码中,怎么办呢?
如果数据不在当前的url当中,要通过抓包工具network来分析数据,再通过search来查询我们需要的数据。
我们先搜索关键字“重庆工程学院”,可以看到response获取信息成功,切换到Headers处,能够确定请求的方法为post请求,得到数据请求的真正url地址。
这就是真正的url地址:
url='https://api.eol.cn/gkcx/api/?access_token=&admissions=¢ral=&department=&dual_class=&f211=&f985=&is_dual_class=&keyword=&page=1&province_id=&request_type=1&school_type=&signsafe=&size=20&sort=view_total&type=5001&uri=apigkcx/api/school/hotlists'
其中page参数代表页数,可以看到,page=1,以第1页为例开始爬。通过遍历即可获取所有数据。其中post方式需提交一个data表单。
这一部分代码如下:
# 获取44页的url
i = 1
j = 0
links = []
while i <= 44:
link = 'https://api.eol.cn/gkcx/api/?access_token=&admissions=¢ral=&department=&dual_class=&f211=&f985=&i
s_dual_class=&keyword=&page={
}&province_id=&request_type=1&school_type=&signsafe=&size=20&sort=view_
total&type=5001&uri=apigkcx/api/school/hotlists'.format(i)
links = links