UML 第二次结对作业
条目 |
数据 |
分析时间 |
10m |
编码时间 |
80m |
代码行数 |
220行 |
解决思路
- 分为两个模块,一个是爬虫模块,一个是解析模块
- 爬虫模块,登陆网站存储cookie信息,先爬取活动列表页,拿到所有活动链接,在爬取各个活动链接
- 解析模块,解析爬虫爬取下来的网页,进行统计分析,并写入文件
具体实现
- 采用java http客户端
okhttp3
解析库jsoup
- 爬虫模块利用
okhttp
的 Cookie Jar
来保存和添加cookie具体实现如下
// CookieJarManager.java
import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.HttpUrl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* 通过cookieJar来管理cookie
*/
public class CookieJarManager implements CookieJar {
private final String TAG = "CookieJarManager";
private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
if (null == url || null == cookies || cookies.size() <= 0) {
return;
}
cookieStore.put(url.host(), cookies);
//
// for (Cookie cookie : cookies) {
// Log.d(TAG, "cookie Name:" + cookie.name());
// Log.d(TAG, "cookie Path:" + cookie.path());
// }
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
if (null != url) {
List<Cookie> cookies = cookieStore.get(url.host());
return cookies != null ? cookies : new ArrayList<>();
} else {
return new ArrayList<>();
}
}
}
// 在创建httpClient的时候使用这个cookiejar
private static final OkHttpClient CLIENT = new OkHttpClient.Builder()
.cookieJar(new CookieJarManager())
.build();
- 进行模拟登陆
- 爬取活动列表页
- 拿到所有课堂活动的链接,因为是js跳转,发现链接在div的data-url里面
- 爬取所有网页,存储在列表里面
- 解析模块解析并存储
结对
结对过程
因为是室友,所以结对过程十分顺利,中间沟通和交流也十分方便,两个人有不同的想法,产生思想碰撞,然后积极解决,对问题的解决有很大的帮助。
评价to徐大洲
是一个冷静不会昏头的人,能在复杂的讨论中不迷失方向,一针见血的指出解决方案
评价to陶大锐
编码能力不错,能很快的完成需求。
结对照片
资料链接