网络知识 娱乐 2011年本科各专业就业率情况的数据获取

2011年本科各专业就业率情况的数据获取

2011年本科各专业就业率情况的数据获取

网友提问怎么获取这个数据:

2011年本科各专业就业率情况的数据获取

需要点击每个专业才能弹出一个对话窗口:

2011年本科各专业就业率情况的数据获取

其实一点也不复杂,我们来看这个网站的数据传递方式:

2011年本科各专业就业率情况的数据获取

我们找到这个预览,看看查询方法:

2011年本科各专业就业率情况的数据获取

同样的,我们看看点击本科专科:

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方式获取的。

2011年本科各专业就业率情况的数据获取

上面两个参数是URL,下面三个是后面三个参数,然后我们要做一个头文件,新建空查询:

h= = [#"Content-Type"=ct,#"User-Agent"=ua,Cookies=ck]

2011年本科各专业就业率情况的数据获取

这里要注意的是#的用法,因为名称中含有特殊字符,所以要使用#

Power BI Desktop 中的Power Query有些过于自作主张了,总是自动htmltable的表格分析,所以我们在写POST查询时要手动编写,根据需要采用JSON,CSV,TXT等不同格式:

2011年本科各专业就业率情况的数据获取

本文中数据是html代码段,所以我们要分成一行行的代码,然后进行数据清洗,整理成我们需要的数据表格,其实也简单,就是筛选出包含onclick行,然后提取,然后拆分列:

2011年本科各专业就业率情况的数据获取

这是我们需要的结果。

好了,到这里专业的id获取就完成了,你会说不是吧,怎么完成的?

关键的步骤在这里:

Web.Contents(uri,[Headers=h,Content=Text.ToBinary("cc=本科")])

如果你要获取专科的专业id,就把上面一行中的本科修改为专科就可以了。

接下来的步骤有点复杂,我们要先做一个测试,通过单个专业id获取这个专业的就业率数据,然后通过这个测试性质的查询创建一个函数,到上面的表格中引用id列查询出所有专业的就业率数据。

其实有了上面一步的查询,我们稍作修改就可以完成测试查询,随便找一个专业id:

2011年本科各专业就业率情况的数据获取

其实修改的地方不多:

Table.FromColumns({Lines.FromBinary(Web.Contents(uid,[Headers=h,Content=Text.ToBinary("id=375127027")]))})

Uri变成Uid

cc=本科变成id= 375127027

当然这个样子的数据是不能用的,还需要整理一下,这个整理过程的方法就有很多了,我简单弄一下:

2011年本科各专业就业率情况的数据获取

这一步有点复杂,文字描述,通过筛选找出包含td的行,一共是8行,然后把8行拆分成4个表格,然后每个表格加个索引列根据索引列合并表格。大概是这么个意思。

然后我们根据这个查询创建一个函数,参数是pid就是专业id:

2011年本科各专业就业率情况的数据获取

接下来就简单了,回到最初的那个查询,添加列,调用这个函数,参数是id列:

2011年本科各专业就业率情况的数据获取

展开表格中的列:

2011年本科各专业就业率情况的数据获取

至此,数据就获取完成了。

最后,我们把数据加载到Power BI Desktop做个图:

2011年本科各专业就业率情况的数据获取

2011年数据显示就业率95%以上的有这么几个专业。