上篇说了怎么实现登录的原理以及实现,接下来就是实现如何获得课程表,成绩以及空课室的信息了。其实原理很简单,如果你真的有认真看上一篇的登录实现步骤的话,其实很快就会得到结果。
因为原理都差不多,这里我只说如何获取课程表的信息,因为其他的功能都和这个功能的数据获取差不多。
那么下面就来进行对课程表的获取把!
登录正方教务系统,然后点击"学生个人课表",我们可以看到以下这个界面
我们这时候就要用到上篇所教的HttpWatch进行抓包,注意要在点击"学生个人课表"进行Record,接下来我们就会获得以下信息
点击这个post请求,我们可以看到
是不是觉得很熟悉,没错,这个就是正方教务系统获取特定数据所需要的参数,所以按照我们之前那样把这些参数都加入到post中就可以得到对应的数据
那么我们看看我们究竟会得到什么数据?
之前没碰过html的人可能会惊呆了,这究竟是什么东西?如果觉得看到这个不知道是什么,请自己看下html,这里就不说了。
现在我们看上去可以看到我们的信息在里面了,但是里面夹杂着很多我们不需要的东西,那我们究竟要怎么获取到我们需要的数据?
在我接触java爬虫的时候,我也不知道究竟要怎么处理下载下来的html,但是有一天看到了hongyang大神的博客,学习了基本的java爬虫以及如何获取里面的信息,真的
觉得收益无穷,也是因为看了他的博客,我才会开启了这几个信息对java爬虫的兴趣,并进行对学校新闻的爬取,当然也包括这个。
所以如果这里看完之后觉得对html的数据解析不够明白,可以看一下hongyang大神的博客学习学习。
说了这么多废话,那么究竟怎么才能获取到html中的特定数据呢?没错,就是jsoup。通过jsoup进行html的解析。其实通过jsoup进行对html进行解析没什么难度,难度只是
在于你要分析你下载下来的html,然后根据一些标签的特点或者规律进行适当的解析,这是我在实现解析时候的越到的一个大困难。无疑,解析我学校的课程表真的很痛苦,因为它有些格式不是很好,所以解析的时候我尽量要避免。
下面来说一下究竟怎么解析html:
public class ExtractService
{
/**
* @param rule
* @return
*/
public static List<NewsInfo> extract(Rule rule)
{
// 进行对rule的必要校验
validateRule(rule);
List<NewsInfo> datas = new ArrayList<NewsInfo>();<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
NewsInfo data = null;
try
{
/**
* 解析rule
*/