结对第二次作业

相关链接

结对同学博客链接

作业链接

github项目地址

分工

我进行了爬虫的实现

队友进行WordCount代码的更新

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划2020
· Estimate· 估计这个任务需要多少时间1015
Development开发300350
· Analysis· 需求分析 (包括学习新技术)2020
· Design Spec· 生成设计文档1515
· Design Review· 设计复审2030
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)3040
· Design· 具体设计3045
· Coding· 具体编码00
· Code Review· 代码复审00
· Test· 测试(自我测试,修改代码,提交修改)1020
Reporting报告4050
· Test Repor· 测试报告1010
· Size Measurement· 计算工作量2020
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划2030
合计545665

一、解题思路与设计描述

1、爬虫使用

  • 使用JAVA实现从CVPR2018官网爬取今年的论文列表。实现思路:通过jsoup来解析url的html文档,通过查看网页的html可以看出论文链接都在class名为ptitle的标签下,然后再使用select选择器获取a标签,然后选择a标签下的attr属性获取每篇论文的url链接,插入队列中。接下来就是遍历队中的url,解析html,就可以通过选择获取需要的内容(如title,abstract),最后通过字符串的连接组合成要求的输出样式。

2、代码组织与内部实现设计(类图)

关键代码解释

int lines=0,words=0,c_length=-1;
         for(;(s=in.readLine())!=null;)
         {
            Matcher m=Pattern.compile("(Title|Abstract): (.*)").matcher(s);//匹配论文
            int flag=0;
            if(m.find()){
         if(s.matches("Title: .*"))//匹配标题部分
             flag=1;//
         lines++;
         s=m.group(2).toLowerCase();//标题正文
         c_length+=1+s.length();
         m=Pattern.compile("(.*?)[a-z]{0,3}[0-9]+.*?[^a-z0-9]").matcher(s+" 1 ");//匹配不合法单词,
         //通过不合法单词将正文切割成一段段
        for(;m.find();)
        {
        Matcher m2=Pattern.compile("([a-z]{4}[a-z0-9]*)([^a-z0-9]+)").matcher(m.group(1));
        //m2单词与分隔符
        List<String>words_group=new ArrayList<String>(),//存下单词
        char_group=new ArrayList<String>();//存下分隔符
        for(;m2.find();words++)
        {
            words_group.add(m2.group(1));
            char_group.add(m2.group(2));
        }
        for(i=0;i<=words_group.size()-m0;i++)
        {
            for(s=words_group.get(i),j=0;j<m0-1;j++)
               s+=char_group.get(i+j)+words_group.get(i+j+1);//通过-m判断是否将单词串起来
             j=1+9*w0*flag;
            if(!test.containsKey(s))test.put(s,j);
            else 
                test.put(s,test.get(s)+j);
        }
        }
        }
      }

单元测试样例

输入:
0
Title: Monday Tuesday Wednesday Thursday 1254
Abstract: Monday Tuesday Wednesday Thursday Friday

命令行:java Main -i C:\Users\Desktop\result.txt -m 3 -n 3 -w 1 -o o.txt

输出:
characters: 79
words: 9
lines: 2
<monday tuesday wednesday>: 11
<tuesday wednesday thursday>: 11
<wednesday thursday friday>: 1

输入:
0
Title: abcd 25abcd abcd (abcde
Abstract: abcd a1abcd abcd (abcde abc1 abcd

命令行:java Main -i C:\Users\Desktop\result.txt -m 2 -n 3 -w 1 -o o.txt

输出:
characters: 57
words: 7
lines: 2
<abcd (abcde>: 11

遇到的代码模块异常或结对困难及解决方法

一开始不知如何爬虫,后来队友通过上网查资料了解了一些,对于词组的统计一开始也是一筹莫展。


评价你的队友

我的队友阿晗是个很老实的人,总是承担着很重要的部分,很好。

学习进度条

第?周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
5 200 300 11 28 学会了简单爬虫

转载于:https://www.cnblogs.com/tyughjbnm/p/9781147.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值