达到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文档
相关文章
相关标签/搜索