Python 分析程序员最关心的竟不是技术,而是…

通过对优快云程序人生公众号的发文数据进行分析,本文揭示了程序员群体关注的社会热点、行业新闻和个人成长话题,以及他们对技术内容的兴趣偏好。

640?wx_fmt=gif

今天是2019年元旦,优快云小姐姐们,祝大家新年快乐!

640?wx_fmt=jpeg

在过去的一年里,优快云程序人生的职场、生活、行业热点、技术干货等几类文章,引起了很多开发者的共鸣。

这一年,程序人生收到了很多鼓励和认可的留言,也收到了很多建议和批评。新的一年,优快云程序人生,愿和你一道,共同打造业内程序员第一内容阵地。

所以,今天的这篇文章,是特意写给你的。优快云程序人生特约作者罗昭成,用Python爬取了程序人生一整年的文章,用数据来告诉你,这一年哪些文章最受欢迎,哪些文章曾激起了大家的思维涟漪,以及哪些词语,是今年文章中的高频词......

以下为正文:

从工业时代进入到信息服务时代,互联网行业逐渐兴起,传统行业逐渐没落。现如今,很多人混迹于互联网+的时代,人人都要学习编程已经逐渐被重视起来。

作为一个入行五年的老鸟,回首看看这五年的经历,恍若隔世。

从PC互联网时代到移动互联网时代的转变,也就是前几年的事情。IT界的快节奏已经成为常态。小步快跑 ,产品的快速的迭代,移动互联网有了飞速的发展。

现在,更加快捷方便的生活体验,都是由一群怀揣着“改变世界”的梦想的人,一群不辞辛劳的程序员实现的。

“程序员”在大众心里,有很多刻板印象的标签:死宅 、呆板、加班、智商很高情商却很感人,极客、一年四季的格子衫等,更有那句著名的“钱多话少死得早”。

这些刻板印象,对也不全对,它们只是程序员众多特性中的一个方面。

这样的一群人,他们对电脑的性能要求极高,对机械键盘非常热衷,对耳机追求到极致,除了我们常见的一些,他们还关心、喜欢的还有啥。

笔者将从优快云程序人生 近几年的发文数据中,从数据的角度,来分析一下这群极客的人,脑子里面装的究竟都有些什么。


640?wx_fmt=png

数据获取


本次数据来源为优快云程序人生公众号发文,第一步需要从获取公众号近几年的发文数据。公众号内容因发布在微信官方平台,所以只能通过微信,才能获取到对应的数据。

抓包

抓包是将网络传输发送与接收的数据包进行截获、重发、编辑等操作。在这里,我们需要使用我们自己的个人电脑,安装相应的抓包工具进行抓包(Mac推荐使用Charles,Windows推荐使用Fiddler)。

• HTTPS

HTTPS是安全为目标的HTTP通道,HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS的出现增加了抓包的难度,但并不是不可解的。

为了解决这个问题,抓包工具会作为一个中间代理人,手机端与抓包工具进行通信,抓包工具在与服务端进行通信。

手机端与抓包工具建立HTTPS请求使用的公钥是抓包工具下发给他的。所以,为了能正常通信,需要安装抓包工具生成的根证书并信任该证书。

从抓取到的数据包中,可以分析出公众号文章列表对应的请求接口,只需要分页发送所有数据请求,就可以拿到整个文章列表。

但点赞(好看)数与阅读数量就比较难获取。这两项数据只在微信客户端上有,经过分析(猜测),此请求是微信客户端触发并更新到页面中的,要获取到此数据,只能使用笨办法,让微信打开文章详情页面,发送请求,我们将请求返回的数据存储起来,在与文章标题进行关联,数据就可以使用了。

自动化才能解放双手,所以此处使用AnyProxy+ADB Shell 。

AnyProxy是一个基于Node.js的、可供插件配置的HTTP/HTTPS代理服务器。和上面提到的Charles 、 Fiddler类似,但更加适合开发者使用。

ADB是Android开发SDK中的一个工具,它可以使用屏幕点击、输入、滑动等功能,由此实现自动化点击屏幕。

启动AnyProxy,设置指定插件JS的路径,并运行ADB脚本,自动化打开页面,使得插件能够自动地将微信发送的请求中的Request与Response数据存储在数据库文件中,插件核心代码如下:


 

var url = require("url")
module.exports = {
   *beforeSendResponse(requestDetail, responseDetail)
  {
       try {
           var pathName = url.parse(requestDetail.url).pathname
           if(pathName == "/mp/getappmsgext") {
               saveReadCount(requestDetail, responseDetail)
          }
      } catch(err) {
           console.log("err")
      }
  }
};


640?wx_fmt=png

数据清洗与分析


经过一段时间的数据抓取,并且对数据进行了关联,本地一共获取到的数据有2630条,与动辄成千上万的电影评论数据相比,虽然量不是很多,但也足够我们从中分析出一些关键信息。

点赞是对网络上的某个内容(比如一条贴子、一篇文章或者一条微博等)表示赞同、喜爱。所以我们先来看一下程序人生公众号推文的点赞TOP10:

因为数据是存储在数据库中,所以只需要使用简单的SQL查询就可以拿到我们想要的数据,SQL代码如下:

select title as标题、author as作者、CAST(likeCount as int) as点赞数。from messages order by点赞数DESC limit 10。

执行上述SQL,拿到的结果如下:

640?wx_fmt=png

从上图可以看到,“长春长生‘’最受关注,点赞数量远高于其它文章,可以看出我们程序员小哥哥们,也是时实关注社会重大事件,忧国忧民。

当然,点赞只是其中的一个指标,不能表示全部。毕竟有好多程序员连赞都懒得点。

除了点赞数量,我们来看看阅读数量的排行,此处使用的是控制台打印输出的数据,为了更好地格式化结构,使用了PrettyTable, 代码如下:


 

def getArticInfos(min, max):
   conn = sqlite3.connect('wechat.db')
   conn.text_factory = str
   cursor = conn.cursor()
   cursor.execute("select title, author, datetime, CAST(readCount as intas readCAST(likeCount as intas like from messages where datetime > '2018-01-01 00:00:00' order by read desc")
   values = cursor.fetchall()
   table = PrettyTable(["
Title", "Author", "Time", "Read Count", "Like Count"])
   table.align["
Title"] = "l
   table.align["
Author"] = "l
   table.padding_width = 1
   totalCount = 0
   for item in values:
       readCount = item[3]
       if  readCount >= min and readCount < max:
           table.add_row([str(item[0]), str(item[1]), str(item[2]), str(item[3]), str(item[4])])
           totalCount += 1
   print table
   print "
Total Count:" + str(totalCount)
   conn.close()

此处列出了从7W+到10W+的文章列表:

640?wx_fmt=png

从图中我们可以看到,张小龙微信第一版需求启发地的龙泉寺备受关注,程序员的负面新闻也是众多程序员关注的焦点。行业新闻及与他们相关的事情,更能够吸引他们的注意。

最后,我们再整体地来看一下,这些文章中,标题里面都会出现哪些高频的词语。特此,使用Jieba分词来进行分词,并使用Matplotlib生成词云图,如下:

640?wx_fmt=png

从图中,我们可以看到,“学习”可以说是相当高频的一个词语,当然,在各行各业,学习都是一个很重要的话题以及技能。

尤其是在 IT 行业,更新迭代更是异常迅捷,甚至快到前两天刚学的知识,过两天就过时了。

所以,众多的程序员都很关注自己的个人成长,学习自然必不可少。架构、框架、指南是一个吸引程序员比较好的词语。

最后最后,我想说的是,很想不通,作为一个程序员,你没有女朋友,你new一个对象不就完了吗?居然还要去相亲?

最最后,福利来啦!


640?wx_fmt=png

好酒留在末后


为了感谢广大陪伴优快云程序人生一起前行的读者朋友们。本次优快云程序人生联合博文视点,为大家送出5类总计10本的高评分科技图书。

在本文评论区留言点赞最高的前十名,即可获得一本科技图书(随机发货哦),开奖时间为1月2日下午17:00整,喜欢就赶快留言吧!

《疯狂Python》


640?wx_fmt=png从零开始,Python编程从入门到实践一网打尽。网络爬虫、大数据分析与展现、并发编程等一个不漏。

《Redis 深度历险:核心原理与应用实践》


640?wx_fmt=png

本书作者老钱在使用 Redis 上积累了丰富的实战经验,可以帮助更多后端开发者更快、更深入地掌握 Redis 技能,还能帮助读者更轻松地通过技术面试,进入心仪企业。

《Netty进阶之路:跟着案例学Netty》


640?wx_fmt=png

Netty将Java NIO接口封装,提供了全异步编程方式,是各大Java项目的网络应用开发必备神器。本书作者是国内Netty技术的先行者和布道者,本书是他继《Netty木又威指南》之后的又一力作。

《你也能看得懂的Python算法书》


640?wx_fmt=png本书面向算法初学者,首先介绍当下流行的编程语言Python,详细讲解Python语言中的变量和循序、分支、循环三大结构,以及列表和函数的使用,为之后学习算法打好基础。然后以通俗易懂的语言讲解双指针、哈希、深度优先、广度优先、回溯、贪心、动态规划和至短路径等经典算法。

《智能问答与深度学习》


640?wx_fmt=png本书由浅入深地介绍了人工智能在文本任务中的应用。不但介绍了自然语言处理、深度学习和机器阅读理解等基础知识,还简述了信息论、人工智能等的发展过程。

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=gif

 热 文 推 荐 

为什么 ofo 彻底凉了?

华为狼性文化遭质疑,那我们当个佛系程序员可好?

突发!12306 脱库 410 万用户数据究竟从何泄漏?

恒大贾跃亭和解;快播处罚细节曝光;天津三星工厂关闭 | 极客头条

等了20年的物联网,这次真的会成功吗?

实现通用人工智能还要多久?Hinton与AlphaGo之父这样回答

老程序员肺腑忠告:千万别一辈子靠技术生存!

2019年区块链最大悬念:谁将捡起以太坊掉落的王冠


 

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!";

640?wx_fmt=gif点击“阅读原文”,打开 优快云 App 阅读更贴心!


640?wx_fmt=png 喜欢就点击“好看”吧!
Python”这个英文单词的发音似“派森”,因此中文可以称之为派森。Python是一个有10年历史的Windows编程语言。Python的创始人为Guido van Rossum。<br/><br/> <br/><br/>Python是一种即译式的,互动的,面向对象的编程语言,它包含了模组式的操作,异常处理,动态资料形态,十分高层次的动态资料结构,以及类别的使用。Python揉合了简单的语法和强大的功能。它的语法表达优美易读。它具有很多优秀的脚本语言的特点:解释的,面向对象的,内建的高级数据结构,支持模块和包,支持多种平台,可扩展。而且它还支持交互式方式运行,图形方式运行。它拥有众多的编程界面支持各种操作系统平台以及众多的各类函数库。利用C和C++可以对它进行扩充。个别的应用软件如果需要有一个可程序化界面也可以利用它来做为扩展语言用。后,Python的可移植度非常高:它可以在许多的Unix类平台上运行,在Mac,MS-DOS,视窗Windows,Windows NT,OS/2,BeOS,以至RISCOS上都有相关的Python版本。<br/><br/> <br/><br/>Python核心网站是: http://www.python.org/ ,其中你可以找到很多资料。如果您第一次使用 Python, 可以下载一个试试。目前,Python已经有成百上千的公共资源可以供你调用。 <br/><br/> <br/><br/>Python作用 <br/><br/> <br/><br/>Python可以用在许多场合。当你需要大量的动态调整,要容易使用,功能强大并且富有弹性的情况,Python可以发挥很好的功效。 <br/><br/> <br/><br/>一个宏编程语言 <br/><br/>你可以用Python给现有的应用程序添加一个宏语言或底稿编制(scripting)能力。经过稍微的训练,它使用户级别的底稿编制变得简单。发展一种新的语言常常被认为是大公司独家专利。Python是一个你可以加入你现有工具的宏语言并适合不同的层次的人使用。<br/><br/> <br/><br/>一个快速的对象模型和算法的原型开发工具 <br/><br/>开发软件花费钱财需要很多时间才能达到很好的效果。在Python下创建对象,你可以比我们知道的任何语言用更短的代码和更少的时间,并且全部支持继承,密封和多形性。一个比较流行的办法是在Python中原型一个程序,直到你相信设计是正确的再换到C++中,一个更好的办法是将Python应用程序轮廓化,然后在C++中重写速度至关重要的部分。<br/><br/><br/><br/>一个调试工具 <br/><br/>新程序和代码库需要测试。有经验的开发人员知道给一个新功能或程序建立一个测试套件会节约时间并减少麻烦。如果一个程序可以与输入输出文件工作,Python 可以生成输入,运行这个程序,然后检查输出并进行分析。如果问题在于数据,你可以编写一次性的脚本来检查数据是否一致。<br/><br/> <br/><br/>数据清除和转换<br/><br/>你可能会将数据由一个数据库移到一个新的数据库,或新建一个界面让数据在互不兼容的系统中流动。如果人工来做,这会是一个很繁琐而且容易犯错误的过程,你总会遗漏东西,到头来你还得重做以前的工作。Python对列表和字典的本地支持使复杂的数据转换更加容易。而且这种交互式模式可以让编程人员在转换过程的每一阶段观看数据。还可以编写由源到目标的数据转换的脚本并按需要不断运行,直到它正确完成工作。<br/><br/> <br/><br/>Python作为粘合剂 <br/><br/>互不兼容的系统常常需要被联在一起,而且这个过程需要自动进行。Python支持所有的集成关键技术。同时也很好的与文件,协议,DLLs及COM对象工作。Python还提供广泛的库帮助你得到几乎任何种类的数据。它还是很好的控制其他套件、进行系统管理以及控制其他系统数据流动的工具。<br/><br/> <br/><br/>运行方式<br/><br/> <br/><br/>Python可以以命令行方式运行,也可以交互式方式运行,还具有图形集成环境,这样开发Python就相当方便。现在已经出现了许多用Python编写的可视化编程软件,用于实现象Delphi一样的功能。<br/><br/> <br/><br/>面向对象<br/><br/> <br/><br/>Python是一个真正的面向对象语言。它甚至支持异常的处理。如果学过Java,应该对这个不陌生。但其它的脚本语言,如PHP,好象就没有。这使得程序的编写更加清晰,而不需要许多的错误检查了。<br/><br/> <br/><br/>模块和包<br/><br/> <br/><br/>这一点更象是Java。对于Java的支持,大家可以了解JPython。JPython是用Java写的Python,它完全支持Java,在这个环境下使用Python可以随意地使用Java的类库。语言扩展可以用C、C++或Java为Python编写新的新言模块,如函数。或者与Python直接编译在一起,或者采用动态库装入方式实现。也专门有人编写了一个工具,可以实现为Python自动实现函数接口封装,这就是SWIG(Simplified Wrapper and Interface Generator),或称做简单封装和接口生成器(可以在http://sourceforge.net/projects/swig/)。<br/><br/> <br/><br/>有趣的语法 <br/><br/> <br/><br/>Guido认为Python的语法是非常优美的。其中一点就是,块语句的表示不是C语言常用的{}对,或其它符号对,而是采用缩近表示法!有趣吧。就这一点来说,Guido的解释是:首先,使用缩近表示法减少了视觉上的混乱,并且使程序变短,这样就减少了需要对基本代码单元注意的范围;其次,它减少了程序员的自由度,更有利于统一风格,使得阅读别人的程序更容易。感觉还是不错的,就C语言来说,在if语句后面大括号的写法就好几种,不同的人喜欢不同的样子,还不如统一起来,都不会看得别扭。 <br/><br/>在每个类或函数的定义后面,第一行可以是说明语句,根本不需要注释符标记。对于后面跟块语句的语句,后面应跟上一个冒号。一行语句不能太长,因为没有行结束符,如果超长则要使用续行符(\)。还有一些有趣的比如说,象下面的一个比较处理,用C语言为: <br/><br/> <br/><br/>if (2<br/><br/>用Python可以表示为<br/><br/>if (2 <br/><br/> <br/><br/>什么是Zope? <br/><br/> <br/><br/>Zope是一个开放源代码的Web应用服务器,采用Python语言开发,使用它您可以方便的构建内容管理、内部网、门户网站、和其他的定制应用。<br/><br/> <br/><br/> 高度面向对象的Web开发平台,采用Python语言开发。<br/><br/> 可以运行在几乎所有流行的操作系统上,支持多语言。<br/><br/> 能集成到其他流行的服务器,也自带服务器。<br/><br/> 提供清晰的数据/逻辑/表示的分离。<br/><br/> 带有可扩展的内置对象和强大的集成安全模块。<br/><br/> <br/><br/> 什么是Plone?<br/><br/> <br/><br/>Pone是一个Zope上的一个用户友好、功能强大的开放源代码内容管理系统。Plone适合用作内部网/外部网的服务器、文档发布系统、门户服务器和异地协同群件工具,到目前,Plone其实已经发展成为了一个应用开发平台。<br/><br/> <br/><br/> 是一种功能强大的开放源码(Open Source)内容管理系统(CMS)。<br/><br/> 通过Web浏览器来访问、编辑内容和管理,易于更新内容。<br/><br/> 无需编程,即可创建新的内容类型。<br/><br/> 协同的编辑和发布机制。<br/><br/> <br/><br/>Python的IDE开发环境: <br/><br/> <br/><br/>Wingide:http:// www.wingide.com<br/><br/>ipython: http://ipython.scipy.org/ <br/><br/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值