今天依旧是和平的一天。花了两个半小时把boss计划里的活儿干完后,我有充分的时间为Athena增添新的功能。
今天的主要内容是,后台爬虫。
2.让Athena拥有自己的心情——用Mongo建立一个心情库,然后根据随机爬取的新闻进行心情变更。
早上我花了一大部分时间在做各种简单的尝试,比如——
我尝试让她可以打开一个iFrame,静态的没问题,但是如何像一个电脑屏幕那样弹窗口,虽然我觉得ng-repeat+Push的方法可以,但是我还没准备好踏足这块领域——很大的一个原因是给iFrame的外框写样式很麻烦,我不是很喜欢写样式。
之后顺着这个,我让她在接受了一个words之后,先进行分词,抽取权重最大的两个关键词进行分析。如果包含“打开”两个字,我就会emit一个open方法给前台,把另一个关键词传回去。
我本来的想法是,在后台用crawler搜索"https://www.baidu.com/s?wd=something"的。结果发现这个页面爬出来的是对“~”的搜索结果,我也没有继续去研究。
随后,我试图能够让Athena的头像可以拖动,准备翻写一个拖拽的方法。后来……也搁置了,不过大概的方法有了——而且比较简单。
以上就是种种未实现的尝试。
随后是下午下班前的时间。
首先我添加了Mongoose作为数据库操作工具。坑有一个:
varMyModel=mongoose.model('Ticket',mySchema);
Then Mongoose will create the model for your
ticketscollection, not your ticket collection.
我未Athena建立了Dao文件夹,为资讯建立了一个数据集,用于记录所有爬取的资讯,对外开放了存、取、唯一性检查三个接口。
随后我为Athena建立了自己的human文件夹,用于存储她有点智能的部分。今天主要写的是里面的explore方法——让她自由的爬取资讯。
当服务启动后,Athena会调用一个init方法(这个方法也是新增的),进行定时任务的初始化。随后就开始每隔1分钟爬取一次资料库,如果遇到资讯数据集里没有的资讯,就插入数据库,同时放到内存中的一个数组中。
当有socket连接后,Athena把socket指派给explore方法,每隔2分钟,explore方法就会检索这个数组中是否有元素,如果有,就自动推送给我。
——这样的一个问题是,多个socket无法判断……
随后我更新了资讯的处理方法——当分词权重中出现“资讯”两个字的时候,我会直接从库中取(理论上应该是10条)最新的消息,返回给我。
做完这部分,已经晚上七点半了。今天的工作结束。
之后的想法:
继续我的研究,让“打开”这个操作变得可行——在百度的问题解决前,先用映射的方式进行文字与地址的对应。随后让iFrame变得可行。
继续修改init方法,让Athena记住应该记住的东西——基本配置。
对资讯的处理方式进行微调,然后增加一个新的数据源作为尝试。
以上。今天很开心,吃了两个馒头,两个鸡腿……
晚安。明天也要开心哦~