今天依舊是和平的一天?;藘蓚€(gè)半小時(shí)把boss計(jì)劃里的活兒干完后,我有充分的時(shí)間為Athena增添新的功能。
今天的主要內(nèi)容是,后臺(tái)爬蟲。
2.讓Athena擁有自己的心情——用Mongo建立一個(gè)心情庫,然后根據(jù)隨機(jī)爬取的新聞進(jìn)行心情變更。
早上我花了一大部分時(shí)間在做各種簡單的嘗試,比如——
我嘗試讓她可以打開一個(gè)iFrame,靜態(tài)的沒問題,但是如何像一個(gè)電腦屏幕那樣彈窗口,雖然我覺得ng-repeat+Push的方法可以,但是我還沒準(zhǔn)備好踏足這塊領(lǐng)域——很大的一個(gè)原因是給iFrame的外框?qū)憳邮胶苈闊?,我不是很喜歡寫樣式。
之后順著這個(gè),我讓她在接受了一個(gè)words之后,先進(jìn)行分詞,抽取權(quán)重最大的兩個(gè)關(guān)鍵詞進(jìn)行分析。如果包含“打開”兩個(gè)字,我就會(huì)emit一個(gè)open方法給前臺(tái),把另一個(gè)關(guān)鍵詞傳回去。
我本來的想法是,在后臺(tái)用crawler搜索"https://www.baidu.com/s?wd=something"的。結(jié)果發(fā)現(xiàn)這個(gè)頁面爬出來的是對(duì)“~”的搜索結(jié)果,我也沒有繼續(xù)去研究。
隨后,我試圖能夠讓Athena的頭像可以拖動(dòng),準(zhǔn)備翻寫一個(gè)拖拽的方法。后來……也擱置了,不過大概的方法有了——而且比較簡單。
以上就是種種未實(shí)現(xiàn)的嘗試。
隨后是下午下班前的時(shí)間。
首先我添加了Mongoose作為數(shù)據(jù)庫操作工具??佑幸粋€(gè):
varMyModel=mongoose.model('Ticket',mySchema);
Then Mongoose will create the model for your?
tickets?collection, not your?ticket?collection.
我未Athena建立了Dao文件夾,為資訊建立了一個(gè)數(shù)據(jù)集,用于記錄所有爬取的資訊,對(duì)外開放了存、取、唯一性檢查三個(gè)接口。
隨后我為Athena建立了自己的human文件夾,用于存儲(chǔ)她有點(diǎn)智能的部分。今天主要寫的是里面的explore方法——讓她自由的爬取資訊。
當(dāng)服務(wù)啟動(dòng)后,Athena會(huì)調(diào)用一個(gè)init方法(這個(gè)方法也是新增的),進(jìn)行定時(shí)任務(wù)的初始化。隨后就開始每隔1分鐘爬取一次資料庫,如果遇到資訊數(shù)據(jù)集里沒有的資訊,就插入數(shù)據(jù)庫,同時(shí)放到內(nèi)存中的一個(gè)數(shù)組中。
當(dāng)有socket連接后,Athena把socket指派給explore方法,每隔2分鐘,explore方法就會(huì)檢索這個(gè)數(shù)組中是否有元素,如果有,就自動(dòng)推送給我。
——這樣的一個(gè)問題是,多個(gè)socket無法判斷……
隨后我更新了資訊的處理方法——當(dāng)分詞權(quán)重中出現(xiàn)“資訊”兩個(gè)字的時(shí)候,我會(huì)直接從庫中取(理論上應(yīng)該是10條)最新的消息,返回給我。
做完這部分,已經(jīng)晚上七點(diǎn)半了。今天的工作結(jié)束。
之后的想法:
繼續(xù)我的研究,讓“打開”這個(gè)操作變得可行——在百度的問題解決前,先用映射的方式進(jìn)行文字與地址的對(duì)應(yīng)。隨后讓iFrame變得可行。
繼續(xù)修改init方法,讓Athena記住應(yīng)該記住的東西——基本配置。
對(duì)資訊的處理方式進(jìn)行微調(diào),然后增加一個(gè)新的數(shù)據(jù)源作為嘗試。
以上。今天很開心,吃了兩個(gè)饅頭,兩個(gè)雞腿……
晚安。明天也要開心哦~