结对第二次作业
相关链接
分工
我进行了爬虫的实现
队友进行WordCount代码的更新
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 15 |
Development | 开发 | 300 | 350 |
· Analysis | · 需求分析 (包括学习新技术) | 20 | 20 |
· Design Spec | · 生成设计文档 | 15 | 15 |
· Design Review | · 设计复审 | 20 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 40 |
· Design | · 具体设计 | 30 | 45 |
· Coding | · 具体编码 | 0 | 0 |
· Code Review | · 代码复审 | 0 | 0 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 20 |
Reporting | 报告 | 40 | 50 |
· Test Repor | · 测试报告 | 10 | 10 |
· Size Measurement | · 计算工作量 | 20 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 30 |
| | 合计 |545 |665
一、解题思路与设计描述
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 学会了简单爬虫