一、前言
前段时间看到一篇文章,对国外某编程技术论坛文章标签进行爬取分析,得出了该论坛周一到周末各个技术分类的热门程度,分析哪些技术在周末用的多,再根据人们周末通常研究学习自己感兴趣的技术,进而得出未来某些技术发展趋势。受到这一启发,我也想分析分析国内这方面的趋势,于是找到了比较火热的博客园(www.cnblog.com),根据博问里面大家提问题的标签,分析一下在博客园上体现出来的技术趋势。
(多图预警)
图1
二、爬取标签信息
(一)首先分析网址信息。
我们打开一个问题,看一下网址
https://q.cnblogs.com/q/91307/
对应内容为
图2
通过几个问题可以发现,对于不同的问题,网址主要是后面的数字不同,而且数字是根据问题的序列顺序排列的,那么我们就可以构造出爬虫的网址
https://q.cnblogs.com/q/编号
(二)其次分析网页内容,打开源码
图3
图4
上图标记的为我们要提取的信息:问题、标签和时间。
利用bs4库提供的方法分别提取出来问题、标签和时间,并保存在CSV文件里留作后面分析使用。
其中标签提取有两种方法,一种是利用图3中方框内的
<title>Action action获取方法名称问题_博问_博客园</title>
<metaname="keywords" content="c#,.net技术Actionaction 获取方法名称问题" />
利用bs4获取两个字符串s1(获取方法名称问题_博问_博客园)和s2(c#,.net技术Action action 获取方法名称问题)
后,取差集获得问题s3(Action action 获取方法名称问题),再利用s2和s3差集获得标签s4(c#,.net技术)
另一种是在图3中获得标题行“Action action 获取方法名称问题_博问_博客园”,再去掉后几个字符“_博问_博客园”,获得问题。在图4中利用类似方法获取标签。
时间的提取用bs4把下面内容
图5
提取成字符串,再截取字符串获得时间。之后再将时间转化为星期。
代码如下:
图6
图7
图8
完整代码可在GitHub上面找到。
(三)获得的数据
获得的数据保存在CSV文件中,如下图所示:
图9
本次获取的是近一年的数据,共计8000+条标签。由于博客园网站只能够查询近一年来的数据,所以这个数据量相对来说还是有些少。而且由于网站原因,没有8、9月分的数据。下次试试CSDN网站的数据。
三、数据分析
把数据传入数据分析软件,生成词云。
(一)近一年来的总体概况(2016.03到2017.02)
图10
近一年来,排在前面的分别是C#、Java、asp.net、.net、JavaScript等。
(二)各月份分布情况(2016.03到2017.02各个月份)
以上几个月份的分析中,C#一直稳居中央,7月份nodejs火了一阵子。Python有增长的趋势。怎么看着Android在减少呢?
(三)一周七天内分布情况(周一到周日)
可以看出,周五问的问题最多,周日比较少,周一最少,是大家都还没有回到工作状态吗?!
(四)一周内词云分析
周一和周五用Python的人表较多。其他数据基本没有变化。看来程序员普遍周末加班比较多吧,因为工作日和休息日各种问题占得比例变化并不大,可以认为他们在周末还在为工作忙碌着,而不是学习新知识,给自己充电。
四、小结
(一)博客园博问用户量并不大,导致数据有限。
(二)C#、Java、JavaScript、.net、asp.net等技术还是主流
(三)国内程序员在休息日的时候也没能逃脱工作的压力,这是病态的加班文化吧。