大项目的进展和总结

大作业报告

准备工作:

在做第二次大作业之前,我从同学和老师那里得知了第一次作业的一些遗漏的问题,由于大作业是基于第一次作业来完成的,我还是决定将其整理进报告。

首先是信息源的问题,上次选取的信息源数量不达标,那么这次就先额外爬取一个新闻网页作为信息源。我选取了上次爬取失败的新浪新闻作为第三个信息来源,有了上次爬取新浪体育的经验,爬取网页源代码相似的新浪新闻就显得容易了一些:

在这里插入图片描述

另外也很顺利的在mysql数据库里找到了对应的信息:

在这里插入图片描述

解决信息源的问题后,就可以开始本次的项目了。

安装必要模块和更新数据库:

这部分内容很少,只需少量操作即可完成。首先是在示例文件final_project里安装必要模块,但很不幸的出现了node-jieba模块安装失败的问题,按照助教的提示操作后,成功安装了模块,在bin文件夹下node www,之前没有注意到的是运行后进入网页才能看到效果,这次吸取了教训,保持cmd运行的状态进入localhost:3000,看到了登录注册界面。
在这里插入图片描述

但此时登录和注册操作都是无法完成的,原因是账户的信息还没有储存的地方。为了解决这个问题,我在mysql里原本crawl数据库里的表格上扩增了空间,使其可以储存username,password和额外要求的历史操作记录即user_action,包括访问时间,访问内容等。具体操作就是在mysql里use crawl后运行项目实例给出的代码。运行后,原先的表格变成了这个样子:
在这里插入图片描述
完成之后,localhost:3000里就可以注册登录了。
在这里插入图片描述

搜索相关:

完成网页创建后就可以考虑开始完善搜索任务。这次的搜索比起上次多了一个要求,即可以使用布尔关系式来加强筛选搜索的内容。这样一个搜索方式主要在于dao文件夹下newsDAO.js里的search函数实现。

在这里插入图片描述

简单来讲就是在搜索页面填写的标题、内容分别代指t1,t2,c1,c2,其对应的布尔关系符用ts,cs指代。首先判断t1、t2的非空性来给sql添加标题语句,其次判断c1的非空性来给sql添加衔接词,最后判断c1,c2的非空性给sql添加内容语句,最后通过sql在mysql数据库里寻找对应信息。

搜索效果如下图:
在这里插入图片描述
在这里插入图片描述

明显看得出通过内容关键字检索出来的结果远多于标题关键字。

分页相关:

下一个目标是对搜索结果分页展示,代码部分在public\javascript\news.js里面:

在这里插入图片描述

大概意思就是每页显示5条搜索结果,用总结果数除以5上取整作为分页数,保证分页显示的页数编号不超过5个,最后用slice方法分页。

下面是分页编号的显示的代码:
在这里插入图片描述

这部分没什么好说的,值得一提的是当此时页面编号是2的时候下面的页面编号栏显示的是2,3,4,5,6,而不是1,2,3,4,5,优化这个问题很简单,多加一条分支语句就行了。

在这里插入图片描述
在这里插入图片描述

下面的代码就不放图片了,Next函数在事件“下一页”被点击是回调,让page+1来翻页,Previous类似,searchsortASC和searchsortDESC来实现升降序排列。

图表相关:

由于图标我们用的都是别人已经设计好的样式,我只需要确定横纵轴的数据即可。比如histogram图现显示的是近两个月新闻发布数在各个时间点的数值。

在这里插入图片描述

这个图表的数据会根据数据库的更新而更新。

再比如折线图,折线图统计了关键词在最近新闻中出现的词频,final_project文件里最初的关键字是“疫情”,这个关键词可以在后端路由news.js里修改。这是关键字“新冠”的词频折线图:

在这里插入图片描述

这是关键词“疫情”的:

在这里插入图片描述

实现获取前端关键字的词频折线图有点麻烦,我没能成功,主要是不知道怎么让输入栏与折线图同时显示和不显示。另外要说的是,修改后端的关键字要重启cmd运行www才行。

然后是词云,它显示的是最近新闻关键字组成的一张图,从关键字大小可以大概估计它的频率:
在这里插入图片描述

操作日志:

因为在app.js里引用了morgan模块将用户操作记录保存在了mysql里的user_action里,在mysql里直接select * from user_action就可以访问操作记录,*表示显示所有记录:
在这里插入图片描述
看得出来不同用户的所有操作都记录了下来。

总结:

这次项目难度对于我这种基础很差的初学者来说还是很难的,对于代码基本是一个“只读”的状态,原因主要在于练习与记忆不够。这个项目本身还是很有意思的,让我首次接触到了web网页的应用,前后端的合作运行,虽然总有种云里雾里的感觉,但也让我多了个努力的方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值