• 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陶大锐

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

    结对照片

    资料链接

  • 相关阅读:
    定义一个动态的二维数组?
    学习STL map, STL set之数据结构基础
    CMM
    详细解说STL string
    仔细选择你的容器
    C++字符串类string简析
    流氓软件及反流氓软件的技术分析
    标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
    C++资料下载
    unix系统操作命令大全
  • 原文地址:https://www.cnblogs.com/c-aha/p/13767997.html
Copyright © 2020-2023  润新知