毕业设计备忘
毕设备忘
题目定为《爬虫软件及定向搜索服务的设计与实现》
1. 任务书
1.1 主要内容以及目标
"由于互联网中的包含海量的信息资源,用户每次检索获取的信息量过于庞杂,很难在大量的检索结果中抽取出我们真正需要的信息。
本系统设计的目的就是可以根据特定用户的定制检索要求,为用户定期提供符合用户需要的搜索服务,并将搜索结果推送给用户。
为此,我们需要利用爬虫软件在互联网上抓取数据,并根据不同用户的需要对抓取到的结果进行分析、整理后保存在特定的数据库中,再根据不同用户的不同需要,定时为用户提供推送服务。
通过实际项目的开发,锻炼学生的科研开发能力和工程实践能力,以便能够提升就业竞争力和实际工作能力。"
1.2 思考
我针对这个需求进行了一系列检索之后 -> RSS 被我发现了
定阅自己想看的,这不就是我需要的么?
依稀记得当年 Google Reader 要停止服务的时候 Google 公司门前「万人签名拯救 Google Reader」这样的标题似乎引起过我的注意
Google Reader 基础上就是一个 RSS 阅读器 那么它 为什么被停用了?
可见类似的需求还是有的,但也不会是非常大众的,这是当年。
从 Google Reader 关闭的 2013 年到现在 互联网的蓬勃发展有目共睹 用户需求与应用技术日新月异 更别说是 4 年之久了
在这些年中 智能手机广泛普及 各种应用层出不穷代代更迭 我们的阅读与浏览有了怎么样的改变?
毫无疑问 在这个"信息时代" 数据的爆炸是存在的,但数据不等同于信息,数据是物理的而信息是释义的。
把所有数据都当作信息来试图丢给人来理解肯定是不行的 会造成 信息过载
人人网 QQ 空间 在过去的几年里曾经如如中天 如今人们却纷纷 逃离 这种现象不一而足
究其原因肯定不会是单一的,但肯定有信息中夹杂了越来越多噪音的份————信息不再是信息而更像是数据了,被多次转载的老段子和自己毫无关联的新闻已经淹没了正常需要的东西。
就我来说,打开浏览器 我有收藏夹 里面是一些优秀的网站满足我各种各样的需求 交流社区 视频&直播网站 wiki 博客 学习 乃至 和谐内容
需要搜索的时候 比较新的技术类我会用 Google 而百度俨然已经成为了贴吧经验搜索专用
bing 由于其反馈的信息较少把我的注意力一再吸引到别的地方成为日常所用,然而陌生的词汇一带二二带三依然难以避免。
我很少的用手机,几乎不发也很少看朋友圈,没感觉到信息过载,因为我合理的手动过滤掉了不需要的。
可这就像 RSS 订阅源一样对用户有很高的要求,需要自己去一一发现甄别哪些是自己需要的,如果设置不当,RSS 订阅也会演变成消灭未读的战争。
1.3 结论
我的水平去做一个类似搜索引擎的爬取互联网上成千上万的网页来达成目标肯定是不现实的,也许爬取 RSS 源是更正确的选择?
1.4 初步设想
也许用 Spring boot 构建 Web 页面
在 Web 页面可以选择提供的 RSS 源 可以发送到邮箱供查看
这俨然成了一个 RSS 阅读器?
这个想法和具体实现或许有许多问题啊,不过没有问题解决就没有学习的动力啊···
1.5 远方的灯塔
有了初步设想之后总感觉怪怪的
看了 当谈到 RSS 的现状 为什么只有一声叹息 还有 为什么 RSS 存在,还会出现今日头条?更加恍惚了
这时候一篇在 Github Pages 的文章 How to write an RSS reader, readme for 番茄阅读被我发现了
文章的作者 everettjf 制作了他的 App 番茄阅读
我也许大体上知道我想要做个什么出来了。
2. 最后的结果
已然到了六月中旬毕业的日子,毕设答辩已经过去,回来简单补充一下。
其实我有冲动想删掉这篇东西,但想想没必要,留着回忆也好。
2.1 内容收集
1.写了一个谷歌浏览器插件,实际上就是一个表单,用来添加 RSS 源。
2.用 Anaconda 3 装的爬虫环境,用它提供的 Jupyter Notebook 写了几个定向爬虫
2.2 内容处理
1.爬虫爬到的东西上传到了 GitHub Pages(当静态内容服务器用)上,提供访问。
2.爬虫爬到的东西还丢到了 ElasticSearch 里提供全文检索,其实这个有很多检索功能不过只用了这个。
3.RSS 内容的检索我用三个字段:RSS 源名称,在添加的时候人为加入的 RSS 源描述、TextRank 算法根据最近内容提取出的关键词,建立索引提供全文检索
2.3内容展现
1.SpringBoot 框架,各种功能对应各种 RESTful API
2.前端用 Angular JS 前端只负责请求后端提供的 Restful API,前后端用 JSON 做数据交互
3.一些简单的邮件推送