Loading

uml第二次结对作业

UML 第二次结对作业

作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11250
作业目标 爬取数据,分析数据,存储数据
作业源代码 https://gitee.com/coderPlus-tr/pair
队员1 211806404
队员2 211806353
条目 数据
分析时间 10m
编码时间 80m
代码行数 220行

解决思路

  1. 分为两个模块,一个是爬虫模块,一个是解析模块
  2. 爬虫模块,登陆网站存储cookie信息,先爬取活动列表页,拿到所有活动链接,在爬取各个活动链接
  3. 解析模块,解析爬虫爬取下来的网页,进行统计分析,并写入文件

具体实现

  1. 采用java http客户端okhttp3解析库jsoup
  2. 爬虫模块利用okhttpCookie 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();

  1. 进行模拟登陆
    • fiddle抓包获取登陆参数
    • 模拟登陆
  2. 爬取活动列表页
  3. 拿到所有课堂活动的链接,因为是js跳转,发现链接在div的data-url里面
  4. 爬取所有网页,存储在列表里面
  5. 解析模块解析并存储

结对

结对过程

因为是室友,所以结对过程十分顺利,中间沟通和交流也十分方便,两个人有不同的想法,产生思想碰撞,然后积极解决,对问题的解决有很大的帮助。

评价to徐大洲

 是一个冷静不会昏头的人,能在复杂的讨论中不迷失方向,一针见血的指出解决方案

评价to陶大锐

    编码能力不错,能很快的完成需求。

结对照片

资料链接

posted @ 2020-10-04 18:49  coderplus  阅读(152)  评论(1编辑  收藏  举报