本篇博客主要和大家分享编写一个学校教务系统的客户端版本,主要是关于登录以及数据获取方面,结尾还会附上本人以前编写的客户端源代码,有兴趣的可以自行下载玩耍~
阅读本文大概需要5分钟。
前言
好久没有更新博客了,最近有点忙。今天对之前在学校做的一个项目开源,并以正方教务系统为例,分享下如何抓取教务系统的数据~ 好了废话不多说直接开始。
分析
搭建一个App,首先离不开的肯定就是数据,在通常情况下,App的数据都是由服务器提供的接口返回的,但是一般来说,学校都是不会把数据以及服务器提供给学生的,所以就要采取一些非正常手段。我们知道,网页是由浏览器解析html代码后展现出来的,那么只要我们拿到html代码,自己抓取html里我们所需要的数据,就能完成对数据的获取了。
这里我使用的是一个能方便处理html文本的java库Jsoup,对于它的具体用法可以参考我之前的文章《Android利用Jsoup抓取数据,再也不怕写App没有数据啦》,这里就不再赘述了。
登录
Cookie保存
通常我们使用浏览器去访问我们的教务系统的时候,服务器都是通过cookie来对我们当前的状态进行判断以便获取我们的登录状态,那么为了能让我们的登录状态得以持续,以便我们后续对其他数据的抓取,我们在客户端中需要对cookie进行一下存储。
因为我采用的是OkHttp来作为网络请求,所以这里以OkHttp为例
OkHttpClient okHttpClient = new OkHttpClient.Builder().
connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS).
readTimeout(READ_TIMEOUT, TimeUnit.SECONDS).
writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS).
cookieJar(new OkHttpCookieJar()).
build();
public class OkHttpCookieJar implements CookieJar {
private Map> cookieStore = new HashMap<>();
@Override
public