结对同学博客链接

本次作业博客链接

github项目地址

具体分工

我主要负责用python写爬虫部分,他负责C++部分

PSP表格

解题思路

代码的核心思路是利用爬虫,爬取论文网址,之后吧对应信息(标题和摘要)写入文件,然后利用上次的WordCount代码把文件读进去然后进行分析,并且要加上权重分析,之后便是统计词频,然后这次的作业还新加了一个功能叫做词项统计,在不断询问大佬之后,大佬说用队列容器,把检测到的合法单词压入队尾,如果单词不合法就清空,确认词项之后再输出队列。

部分代码展示

代码组织与内部实现设计



爬虫部分

爬虫爬取论文地址

#定义一个函数,用来爬取网页内容
def Web(www):
try:
w = requests.get(www)
w.raise_for_status()
w.encoding = w.apparent_encoding
except:
print("fail!!!")
temp = w.text
wz = BeautifulSoup(temp,"html.parser")
return wz www = "http://openaccess.thecvf.com/CVPR2018.py"
wz = getWeb(www)

简单处理一下标签,获取标题和摘要,然后写入文件

#定义一个函数,用来论文页面内容
def info(paperLink):
www = "http://openaccess.thecvf.com/" + paperLink
wz = Web(www)
#标签
bq=re.compile('</?\w+[>]*>')
#消除
title =bq.sub('', str(wz.find('div',id="papertitle"))).strip()
abstract = bq.sub('',str(wz.find('div',id="abstract"))).strip()
return title,abstract

C++部分

词组划分部分代码

void Count(string tline, int maxn, int start,int quanzhong)
{
for (int i = start; i < tline.length(); i++)
{ int count = 0;//计数
int charcounts = 0;//字符数
int numflag = 0;//判断是否数字
for (int k = i;; k++)//判断是否是单词
{
if (tline[k] >= 'a'&&tline[k] <= 'z'&&numflag == 0)
{charcounts++;count++;}//小写字母
else if (tline[k] >= 'A'&&tline[k] <= 'Z'&&numflag == 0)
{charcounts++;count++;}//大写字母
else if (tline[k] >= '0'&&tline[k] <= '9')
{count++;numflag = 1;}//出现数字
else break;
}
if (charcounts >= 4) //记录
{ char words[100] = { "\0" };
//存储单词
for (int k = i; k < i + count; k++)
{
words[k - i] = tline[k];
}
string s = words;
b.push_back(s);
s = "\0";
if (b.size() == maxn)//队列以满
{
int nowNum = maxn;
for (it1 = b.begin(); it1 != b.end(); it1++)
{
s.append(*it1);
nowNum=nowNum-1;
if (nowNum != 0)s.append(" ");
}
if(start==7&&quanzhong==1)essay[s]+=10;//记录
else essay[s]++;
b.pop_front();
s = "\0";
}
i += count - 1;
}
else if (count > 0 && count < 4)
{
b.clear();
i += count - 1;
}
else continue; }
if (start == 7)b.clear();//清空
}

性能分析

遇到的困难与解决方法

因为我负责的是爬虫部分,一开始的困难就是虽然学过一点python,但是爬虫没写过,好在爬虫的学习资料网上非常多,我在慕课网上找了一个网课看,之后便照猫画虎写了一个,之后反复修改,比如没有东西爬出来,或者是爬出来的东西都是乱掉的,不懂怎么写进文件等等,询问大佬之后,总算能用了。

收获:写了第一个爬虫

评价队友

我的队友虽然不强,但是比较肯学,而且愿意开口问,中间出现问题基本都是他带着电脑去找大神帮忙解决,我觉得这点很值得我学习,不过在做事情的效率上还是需要改进。

学习进度条

【软工实践】第四次作业--爬虫结合WordCount的更多相关文章

  1. 《软工实践》第零次作业 - 一些QA

    <软工实践>第零次作业 - 一些QA Q&A (1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的? 你认为过去两年中接触到的课程是否符合你对计算机 ...

  2. 福州大学2020年春软工实践W班第一次作业

    作业描述 这个作业属于哪个课程 福州大学2020年春软工实践W班 这个作业要求在哪里 寒假作业(1/2) 这个作业的目标 建立博客.回顾,我的初心.当下和未来.学习路线 作业正文 福州大学2020年春 ...

  3. 软工实践第五次作业-WordCount进阶需求

    软工实践作业(五) GitHub 作业链接 结对博客 031602240 具体分工 PSP表格 代码规范 解题思路与设计说明 爬虫使用 代码组织与内部实现设计(类图) 算法关键 实现方法 流程图 附加 ...

  4. 软工实践 - 第三十次作业 Beta答辩总结

    福大软工 · 第十二次作业 - Beta答辩总结 组长本次博客作业链接 项目宣传视频链接 本组成员 1 . 队长:白晨曦 031602101 2 . 队员:蔡子阳 031602102 3 . 队员:陈 ...

  5. 软工实践 - 第二十一次作业 BETA 版冲刺前准备

    软工 · BETA 版冲刺前准备(团队) 过去存在的问题 组员之间缺乏沟通,前后端缺乏沟通协作 组员积极性不高 基础知识不够扎实 手动整合代码效率过低 我们已经做了哪些调整/改进 通过会议加强组员之间 ...

  6. 2015级软工实践k班第一次作业-准备

    第一次作业-准备······ 几篇文章阅读下来发现一个事实,还是要有明确的目标,清楚自己需要做什么最为重要.然后根据目标确定需要为之所做的准备工作,考研也好,工作也罢,都是服务于自己的目标. 问题答应 ...

  7. 软工实践 - 第十一次作业 Alpha 冲刺 (3/10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/9972061.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去 ...

  8. 2018软工实践第八次作业-团队项目UML设计

    团队信息 队员姓名与学号 学号 姓名 博客链接 124 王彬(组长) 点击这里 206 赵畅 点击这里 215 胡展瑞 点击这里 320 李恒达 点击这里 131 佘岳昕 点击这里 431 王源 点击 ...

  9. 软工实践第八次作业(课堂实战)- 项目UML设计(第五组)

    本次作业博客 团队信息 队名:起床一起肝活队 原组长: 白晨曦(101) 原组员: 李麒 (123) 陈德斌(104) 何裕捷(214) 黄培鑫(217) 王焕仁(233) 林志华(128) 乐忠豪( ...

随机推荐

  1. 记一次学习PHP中的错误

    今天学习PHP时,回想起一段代码 <?php> $i = true; $o = true; $p = false; if($i or $o and $p){ echo '输出为'.'tru ...

  2. PTA基础编程题目集6-7 统计某类完全平方数 (函数题)

    本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144.676等. 函数接口定义: int IsTheNumber ( const int N ); 其中 ...

  3. 20155236 《Java程序设计》实验二实验报告

    20155236 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 ...

  4. C#基础之反射

    虽然还在学校读书,反射实际写的不多.但感觉反射在程序开发中用得还是挺多的,对我来说也是.NET中的一个难点.通过反射,我们可以在运行时获得.NET中的每一个类型的成员,这些类型包括类.结构.委托和枚举 ...

  5. python 多线程笔记(3)-- 线程的私有命名空间

    线程的私有命名空间实现: threading_namespace = threading.local() import threading import time import random thre ...

  6. C++ OI图论 学习笔记(初步完结)

    矩阵图 使用矩阵图来存储有向图和无向图的信息,用无穷大表示两点之间不连通,用两点之间的距离来表示连通.无向图的矩阵图是关于主对角线对称的. 如图所示: 使用dfs和bfs对矩阵图进行遍历 多源最短路径 ...

  7. angular 缓存模板 ng-template $templateCache

    由于浏览器加载html模板是异步加载的,如果加载大量的模板会拖慢网站的速度,这里有一个技巧,就是先缓存模板. 使用angular缓存模板主要有三种方法: 方法一:通过script标签引入 <sc ...

  8. 【JUC源码解析】LinkedBlockingQueue

    简介 一个基于链表的阻塞队列,FIFO的顺序,head指向的元素等待时间最长,tail指向的元素等待时间最短,新元素从队列尾部添加,检索元素从队列头部开始,队列的容量,默认是Integer#MAX_V ...

  9. 深入解析QML引擎, 第2部分: 绑定(Bindings)

    原文  QML Engine Internals, Part 2: Bindings 译者注:这个解析QML引擎的文章共4篇,分析非常透彻,在国内几乎没有找到类似的分析,为了便于国内的QT/QML爱好 ...

  10. Windows Powershell统计代码行数

    dir .\ -Recurse *.py | Get-Content | Measure-Object