達到1000聲望之後

原由

我註冊SegmentFault帳號是在2016年12月,可是正式開始參與社區貢獻是2017年9月。那時候我剛剛畢業,參加工做。到如今已經半年了。 node

當時只是想着幫助別人,而且經過別人提出的問題和回答來積累本身實際經驗。畢竟靠天天工做獲得的項目經驗太少了,我的成長實在有限。 react

之前以爲1000聲望很可貴,更不用說能上排行榜的5位數聲望了。可是半年來,養成積極幫助他人的習慣後,我發現本身不知不覺也跨過了1000聲望的門檻。從我的角度來說,我想作點事情來記念一下。 git

上週,我翻譯了一篇關於react-vis的文章。而我想起之前一直對爬蟲很感興趣,固然如今沒興趣了。總之,這兩個因素讓我決定爬一爬本身經過回答獲得的聲望。沒有文章被贊,沒有文章被收藏等聲望,就是單純的,回答、回答被贊和回答被採納。github

實現過程

要實現這個項目,須要先分解需求,而後選取技術棧,最後發佈。json

分解需求

  1. 爬取SF頁面
  2. 將獲得的數據存入json,放在gitpage上
  3. 利用fetch api獲取該json
  4. 根據獲得的數據使用react-vis生成柱形圖,x軸爲時間,y軸爲聲望數,每個x點分別有3個長方形,表明問答、被贊和被採納。

技術棧

  1. node-crawel + cheerio:解決需求1
  2. react + react-vis:解決需求三、4
  3. jest:測試代碼單元

json存儲格式

{
    answer:{
        "2018-3-20":1
    },
    answerBeHonored:{
        "2018-3-20":10
    },
    answerBeAdopted:{
        "2018-3-20":15
    }
}

關鍵思路

  1. 須要將SF聲望記錄裏的x小時、x天前轉成格式爲yyyy-MM-dd。這個只須要判斷不一樣狀況,而後根據當天減去天天的毫秒數或每小時的毫秒數獲得的毫秒數生成一個Date對象。而後再轉換格式。
  2. 有的操做可能被用戶取消,但仍保留在聲望記錄上。這時要經過判斷是否存在[已取消]來跳過處理。
  3. 利用react-vis生成柱形圖時,x座標軸的類型要設置爲oridinary

效果展現

最終效果
最後算了一下大概553點聲望來自問答。看來經過文章,尤爲是翻譯文章,獲得的聲望佔的水分挺大的。segmentfault

總結

我不瞭解Node.js,以前沒據說過node-crawel,因此純粹是一時興起嘗試了一下,有一些坑,但最終仍是解決了。滿打滿算一共是花了4.5小時,主要是嘗試使用crawel以及測試各單元功能。api

爬蟲的代碼不打算開源,一是由於很簡單,照着教程寫沒什麼問題。二是以爲爬蟲這個東西或多或少有點危害?姑且算是我不開源的理由之一吧。dom

大概就是這樣了,仍是很感慨可以跨入1000聲望呢,下一個目標大概是5000聲望,繼續努力吧。測試

參考文章

  1. 使用node-crawler和jsdom完成爬蟲
  2. Node Crawler:強大的Node開源爬蟲
  3. react-vis:一個數據可視化庫
  4. react-vis文檔
相關文章
相關標籤/搜索