起因
主要是公司想要规范化工程师的提交信息,虽说不是我来弄,但是我想试试用之前学的爬虫来尝试抓取,并且可以初步的数据处理分析,然后可视化。正好一整套的流程走一遍。说干就干,打开网页,F12。
发现数据在表格里。抓呗!
但是发现抓出来的数据长的乱七八糟,最关键的是并没有这个table。所以就猜想,应该是动态加载的,转到network,xhr。
再刷新下页面,发现数据都在这个接口里嘛,这就简单了!
设计流程:获取数据,处理数据,可视化。
第一步:先获取数据,存到表格里。
一定要记得cookie啊,血的教训,我折腾了好久,得到的都是几个字符,后来才醒悟过来。
1 | 复制代码def requesst(url,limit_time): |
continue_flag是为了主程序里超过我限定的时间后就不再爬取下一页。
gerrit的默认url是下面这个url,然后下一页按钮的url是这个url加上这一页最后一项的_sortkey(形如0049b98c0000f3b8)。所以我要把下一页的url也return出来。
1 | 复制代码DOWNLOAD_URL = 'http://192.168.8.40:8080/changes/?q=status:merged&n=25&O=1' |
嘿嘿,这个是最后的结果,中间编写过程就不放了,总之是不断丰富,不断简化的过程。
第二步:处理数据。
1 | 复制代码#用正则表达式统计不符合规范的人员及其出现的个数 得到一个DataFrame |
正则表达式可以度娘在线正则表达式测试找到最合适的正则。如果符合正则表达式则不处理,如果不符合,则将其存到nonstandard_count并且值+1。然后得到的nonstandard_count按照值排序,大的在前面。返回一个DataFrame,方便后续处理。
第三步:可视化
1 | 复制代码##可视化处理############### |
注释很详细了,就是画出df,然后在柱形图上加上这个值的text。
第四步 main
1 | 复制代码def main(): |
这个只是串起来了。关键的代码基本都贴出来了,其他的几个稍微处理数据的,没有贴出,可以访问我github查看。
这个直接爬是没用的哈,我是内网。
结果
额,我升级PyCharm前还好好的啊。升级完咋就这样了呢……我后面再琢磨琢磨。
##总结一下
总的来说收获很大,自己实打实的从0开始做一个小的工具(都不算项目)。整个过程虽说小困难不断,但是基本都能找到问题所在,网上找到解决方法。其实没想象的难的,只要拆分成一部分一部分然后开始动手就好。虽说之前学得部分实在生疏,但做这个确实熟练了很多,就好像以前学习的时候,看着老师讲都懂,但是自己实际做题就懵了。多练就好!然后建议大家也在学习的过程中不断的找一些对自己能用上的小项目去做,会有成就感的!
本文转载自: 掘金