【软工实践】第四次作业--爬虫结合WordCount
具体分工
我主要负责用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的更多相关文章
- 《软工实践》第零次作业 - 一些QA
<软工实践>第零次作业 - 一些QA Q&A (1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的? 你认为过去两年中接触到的课程是否符合你对计算机 ...
- 福州大学2020年春软工实践W班第一次作业
作业描述 这个作业属于哪个课程 福州大学2020年春软工实践W班 这个作业要求在哪里 寒假作业(1/2) 这个作业的目标 建立博客.回顾,我的初心.当下和未来.学习路线 作业正文 福州大学2020年春 ...
- 软工实践第五次作业-WordCount进阶需求
软工实践作业(五) GitHub 作业链接 结对博客 031602240 具体分工 PSP表格 代码规范 解题思路与设计说明 爬虫使用 代码组织与内部实现设计(类图) 算法关键 实现方法 流程图 附加 ...
- 软工实践 - 第三十次作业 Beta答辩总结
福大软工 · 第十二次作业 - Beta答辩总结 组长本次博客作业链接 项目宣传视频链接 本组成员 1 . 队长:白晨曦 031602101 2 . 队员:蔡子阳 031602102 3 . 队员:陈 ...
- 软工实践 - 第二十一次作业 BETA 版冲刺前准备
软工 · BETA 版冲刺前准备(团队) 过去存在的问题 组员之间缺乏沟通,前后端缺乏沟通协作 组员积极性不高 基础知识不够扎实 手动整合代码效率过低 我们已经做了哪些调整/改进 通过会议加强组员之间 ...
- 2015级软工实践k班第一次作业-准备
第一次作业-准备······ 几篇文章阅读下来发现一个事实,还是要有明确的目标,清楚自己需要做什么最为重要.然后根据目标确定需要为之所做的准备工作,考研也好,工作也罢,都是服务于自己的目标. 问题答应 ...
- 软工实践 - 第十一次作业 Alpha 冲刺 (3/10)
队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/9972061.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去 ...
- 2018软工实践第八次作业-团队项目UML设计
团队信息 队员姓名与学号 学号 姓名 博客链接 124 王彬(组长) 点击这里 206 赵畅 点击这里 215 胡展瑞 点击这里 320 李恒达 点击这里 131 佘岳昕 点击这里 431 王源 点击 ...
- 软工实践第八次作业(课堂实战)- 项目UML设计(第五组)
本次作业博客 团队信息 队名:起床一起肝活队 原组长: 白晨曦(101) 原组员: 李麒 (123) 陈德斌(104) 何裕捷(214) 黄培鑫(217) 王焕仁(233) 林志华(128) 乐忠豪( ...
随机推荐
- nexus3使用docker运行/创建docker私有仓库/maven私有仓库
version: '3.2' services: nexus3: container_name: nexus3 hostname: nexus3 image: sonatype/nexus3:3.14 ...
- U盘,移动硬盘显示显示需要格式化怎么修复
冷静别怕,用windows系统自带磁盘修复CHKDSK命令即可解决此问题. 首先,在开始菜单栏站到“运行”窗口,也就是c:\(命令提示符),win7可直接在开始菜单的搜索窗口中输入“cmd”. 其次, ...
- golang基础--Gocurrency并发
Go并发特点 goroutine只是由官方实现的超级"线程池"而已,每个实例4-5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销. 并发不是并行(多CPU): Concu ...
- java入门---变量类型&类变量&局部变量&实例变量&静态变量
在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; ...
- 20155301 《Java程序设计》实验五网络编程与安全
20155301 <Java程序设计>实验五网络编程与安全 实验内容 实验1: 两人一组结对编程:参考http://www.cnblogs.com/rocedu/p/6766748.htm ...
- 20155331 实验四 Android开发基础
20155331丹增旦达实验四报告 实验四 Android程序设计-1 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java ...
- PostgreSQL通过mysql_fdw访问MySQL数据库
Mysql与PostgreSQL的安装过程省略. 为简便起见,把MySQL和PostgreSQL都安装在一个机器上,然后在此机器上(准确地说是在PostgreSQL运行的机器上)安装mysql_fdw ...
- 原生与JS交互 iOS
前言 Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势” ...
- 了解ASP.NET Core 依赖注入,看这篇就够了
DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET Core的DI实现以及对实例 ...
- Spring学习(四)-----Spring Bean引用同xml和不同xml bean的例子
在Spring,bean可以“访问”对方通过bean配置文件指定相同或不同的引用. 1. Bean在不同的XML文件 如果是在不同XML文件中的bean,可以用一个“ref”标签,“bean”属性引用 ...