摘要:但是半年来,养成积极帮助他人的习惯后,我发现自己不知不觉也跨过了声望的门槛。总之,这两个因素让我决定爬一爬自己通过回答得到的声望。有的操作可能被用户取消,但仍保留在声望记录上。看来通过文章,尤其是翻译文章,得到的声望占的水分挺大的。
起因
我注册SegmentFault账号是在2016年12月,但是正式开始参与社区贡献是2017年9月。那时候我刚刚毕业,参加工作。到现在已经半年了。
当时只是想着帮助别人,并且通过别人提出的问题和回答来积累自己实际经验。毕竟靠每天工作得到的项目经验太少了,个人成长实在有限。
以前觉得1000声望很难得,更不用说能上排行榜的5位数声望了。但是半年来,养成积极帮助他人的习惯后,我发现自己不知不觉也跨过了1000声望的门槛。从个人角度来讲,我想做点事情来纪念一下。
上周,我翻译了一篇关于react-vis的文章。而我想起以前一直对爬虫很感兴趣,当然现在没兴趣了。总之,这两个因素让我决定爬一爬自己通过回答得到的声望。没有文章被赞,没有文章被收藏等声望,就是单纯的,回答、回答被赞和回答被采纳。
实现过程要实现这个项目,需要先分解需求,然后选取技术栈,最后发布。
分解需求爬取SF页面
将得到的数据存入json,放在gitpage上
利用fetch api获取该json
根据得到的数据使用react-vis生成柱形图,x轴为时间,y轴为声望数,每一个x点分别有3个长方形,代表问答、被赞和被采纳。
技术栈node-crawel + cheerio:解决需求1
react + react-vis:解决需求3、4
jest:测试代码单元
json存储格式{ answer:{ "2018-3-20":1 }, answerBeHonored:{ "2018-3-20":10 }, answerBeAdopted:{ "2018-3-20":15 } }关键思路
需要将SF声望记录里的x小时、x天前转成格式为yyyy-MM-dd。这个只需要判断不同情况,然后根据当天减去每天的毫秒数或每小时的毫秒数得到的毫秒数生成一个Date对象。然后再转换格式。
有的操作可能被用户取消,但仍保留在声望记录上。这时要通过判断是否存在[已取消]来跳过处理。
利用react-vis生成柱形图时,x坐标轴的类型要设置为oridinary。
效果展示最终效果
最后算了一下大概553点声望来自问答。看来通过文章,尤其是翻译文章,得到的声望占的水分挺大的。
我不了解Node.js,之前没听说过node-crawel,所以纯粹是一时兴起尝试了一下,有一些坑,但最终还是解决了。满打满算一共是花了4.5小时,主要是尝试使用crawel以及测试各单元功能。
爬虫的代码不打算开源,一是因为很简单,照着教程写没什么问题。二是觉得爬虫这个东西或多或少有点危害?姑且算是我不开源的理由之一吧。
大概就是这样了,还是很感慨能够跨入1000声望呢,下一个目标大概是5000声望,继续努力吧。
参考文章使用node-crawler和jsdom完成爬虫
Node Crawler:强大的Node开源爬虫
react-vis:一个数据可视化库
react-vis文档
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/52036.html
摘要:跟年一样,年也给自己定下了一个任务,就是在得到每天听本书听本以上,至少订阅一个以上的大小专栏并完成学习如图,这个小任务,今年算是完成了。 跟2017年一样,2018年也给自己定下了一个任务,就是在得到《每天听本书》听 300 本以上,至少订阅一个以上的大小专栏并完成学习! showImg(https://segmentfault.com/img/bVblSBq?w=750&h=1334...
摘要:正则模块使语言拥有全部的正则表达式功能。函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。表示或者匹配项未找到匹配项匹配项未找到匹配项 正则 re = regular experssionre 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对...
阅读 852·2021-10-27 14:19
阅读 1043·2021-10-15 09:42
阅读 1483·2021-09-14 18:02
阅读 719·2019-08-30 13:09
阅读 2967·2019-08-29 15:08
阅读 2061·2019-08-28 18:05
阅读 924·2019-08-26 10:25
阅读 2739·2019-08-23 16:28