2011年到2013年大学本科热门专业:2011年本科各专业就业率情况的数据获取
2011年到2013年大学本科热门专业:2011年本科各专业就业率情况的数据获取四个基本参数:既然确定是POST方式,那么我们就要做些准备工作:我们找到这个预览,看看查询方法:同样的,我们看看点击本科专科:连本科专科各专业的查询也是POST,相比GET方式,POST方式更稳定,只是获取数据的方法要稍微复杂一些。
2011年本科各专业就业率情况的数据获取
网友提问怎么获取这个数据:
需要点击每个专业才能弹出一个对话窗口:
其实一点也不复杂,我们来看这个网站的数据传递方式:
我们找到这个预览,看看查询方法:
同样的,我们看看点击本科专科:
连本科专科各专业的查询也是POST,相比GET方式,POST方式更稳定,只是获取数据的方法要稍微复杂一些。
既然确定是POST方式,那么我们就要做些准备工作:
四个基本参数:
URL:Request URL后面全部的内容
Content-Type:在Request Headers中找
Cookies:在Request Headers中找
User-Agent: 在Request Headers中找
上面四个基本参数是可以直接从上面的页面来复制的,其中URL是需要两份:一份是获取专业代码的URL,一份是获取具体就业率数据的数据.
method=showJyxxByCc
method=showJyxxById
接下来还需要一个Content数据,这个数据也是两份:第一份比较简单:
cc=本科或专科
都二份比较复杂,是每个专业对应的一串数字,这个需要我们使用第一份数据使用POST方式获取的。
上面两个参数是URL,下面三个是后面三个参数,然后我们要做一个头文件,新建空查询:
h= = [#"Content-Type"=ct #"User-Agent"=ua Cookies=ck]
这里要注意的是#的用法,因为名称中含有特殊字符,所以要使用#
Power BI Desktop 中的Power Query有些过于自作主张了,总是自动htmltable的表格分析,所以我们在写POST查询时要手动编写,根据需要采用JSON CSV TXT等不同格式:
本文中数据是html代码段,所以我们要分成一行行的代码,然后进行数据清洗,整理成我们需要的数据表格,其实也简单,就是筛选出包含onclick行,然后提取,然后拆分列:
这是我们需要的结果。
好了,到这里专业的id获取就完成了,你会说不是吧,怎么完成的?
关键的步骤在这里:
Web.Contents(uri [Headers=h Content=Text.ToBinary("cc=本科")])
如果你要获取专科的专业id,就把上面一行中的本科修改为专科就可以了。
接下来的步骤有点复杂,我们要先做一个测试,通过单个专业id获取这个专业的就业率数据,然后通过这个测试性质的查询创建一个函数,到上面的表格中引用id列查询出所有专业的就业率数据。
其实有了上面一步的查询,我们稍作修改就可以完成测试查询,随便找一个专业id:
其实修改的地方不多:
Table.FromColumns({Lines.FromBinary(Web.Contents(Uid [Headers=h Content=Text.ToBinary("id=375127027")]))})
Uri变成Uid
cc=本科变成id= 375127027
当然这个样子的数据是不能用的,还需要整理一下,这个整理过程的方法就有很多了,我简单弄一下:
这一步有点复杂,文字描述,通过筛选找出包含td的行,一共是8行,然后把8行拆分成4个表格,然后每个表格加个索引列根据索引列合并表格。大概是这么个意思。
然后我们根据这个查询创建一个函数,参数是pid就是专业id:
接下来就简单了,回到最初的那个查询,添加列,调用这个函数,参数是id列:
展开表格中的列:
至此,数据就获取完成了。
最后,我们把数据加载到Power BI Desktop做个图:
2011年数据显示就业率95%以上的有这么几个专业。