正则表达式提取主要内容

正则表达式简介

正则表达式(Regular Expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

总之,正则匹配是一种及其常用的提取子串的方法。具体用法请参考相关文档。

测试正则表达式的方法

打开Notepad++

先把返回内容粘贴进去

然后按Ctrl-F打开查找界面

选择正则表达式,勾选 .匹配新行,然后输入正则表达式,点击查找下一个即可。

提取返回数据的主要内容

CAS登录ticket的提取

由于请求1和请求2是单纯的跳转,没有设置任何Cookie或传递其他参数,这两个请求直接忽略,从第3个请求开始匹配

name="lt" value="(.*?)".*?name="execution" value="(.*?)".*?name="_eventId" value="(.*?)"

这个正则表达式提取了括号中的内容,即lt、execution、_eventId的值,直接使用提取出来的这个值,发送第4个请求。

CAS登录成功后跳转网址的提取

登录成功后,匹配出meta标签中跳转的目的网址

url=(.*?)"

然后发送请求5。将返回302,对于302我们不需要任何处理,程序会自动跳转,自动发送下一条请求。

自动发送请求6,然后返回了师生服务首页,这个我们不需要的,不进行匹配。

每一课程的评教链接的提取

由于教学评价的首页的真正网址是请求11的网址,所以发送请求11,并用如下正则表达式,提取出所有的链

<a href="(.*?)">评教</a>

不过这回要把 .匹配新行 的勾去掉。

然后使用这个网址发送请求8,返回了具体课程的教学评价页面,匹配出所有的表单数据

评教表单的提取

首先提取提交表单的网址。单行匹配

post" action="(.*?)"

然后是用到的一些基本数据,也不需要知道什么意思,拿来直接用就好。都是单行匹配

wid_pgjxb" value="(.*?)"
wid_pgyj" value="(.*?)"

这里有个表单项type,值恒为2

继续是基本数据 都是单行匹配

sfytj" value="(.*?)"
pjType" value="(.*?)"
wid_pjzts" value="(.*?)"
status" value="(.*?)"
sfmxpj" value="(.*?)"

这个是为了把每一行的评价指标区分开。多行匹配

教师评价(.*?)</tr>

然后在每一个指标提取的文本内继续提取所需的表单。单行匹配

zbbm" type="hidden" value="(.*?)"
(wid_.*?)" type="hidden" value="(.*?)"
(qz_.*?)" type="hidden" value="(.*?)"
(pfdj_.*?)"  value="(.*?)"

最后这个可以提取到5个,就是评教的5个等级,只提交1个即可。

ztpj(总体评价)和pgyj(评估意见)都是固定的表单。

通过分析js代码得知,“提交”操作的actionType始终为2,type也是根据js确定为2的。

然后就可以POST这个表单了!

提取评教成功后的页面

返回的结果也没什么意义,就不匹配了。

results matching ""

    No results matching ""