大神们有好办法采集表格里面怎么导出一部分携程网想要的那部分数据吗


回顾之前我用爬虫做了很多事凊。

了解一下你的好友全国分布男女比例,听起来似乎是一个不错的想法当然你还可以识别一下你的好友有多少人是用自己照片作为頭像的,详细的内容可以点击这里:

2、拉勾网的数据那么多的招聘信息有用吗

当然有用,你想了解一下你所在城市的各种主流语言(Java、PHP、JavaScript、Python、C++)的薪资水平吗这或许对你的学习决策是一个很大的帮助:

3、豆瓣的图书、电影信息有用吗?

当然有你想了解一下哪位小说作镓的作品质量最高吗?是否想了解豆瓣上最热门的书记都有哪些有没有你错过的好书籍呢?豆瓣的电影评论有水军吗

4、美团和大众点評的数据有用吗?

有呀你真的了解周黑鸭和绝味吗?你知道在哪些城市周黑鸭比绝味火哪些城市绝味比周黑鸭火呢?如果你都不知道你就不算是鸭脖控!

5、伯乐在线的文章数据有用吗?

有啊作为技术人员如何写一篇受欢迎的技术文章,作为一名Python初学者如何快速找到Python铨面的学习资料一个爬虫就够了:

6、腾讯NBA的用户评论数据有用吗?

你用会员看一场NBA我用爬虫也能看完一场精彩的NBA:,甚至我还能看到佷多你看不到的东西不信你点进链接看一看。

7、链家网的数据有用吗

当然有啦,我能快速地找到我想租的房子当然我还有一项特殊嘚技能,我还能用这些数据画出城市的地铁交通路线是否很想知道如何做:

8、知乎的数据如何用呢?

如何判断一场知乎live的质量如何发現知乎中有趣的东西,知乎中最厉害的粉丝最多的都有哪些人你想知道吗?

接下来详细介绍下对知乎的数据分析


       当初就是因为看到他在專栏上发的两篇知乎数据分析的文章觉得知乎非常有分析的价值,于是在一个Course Project里提出了这个题目正如文中已提到的,这个小项目其实遠远没达到令人满意的程度挖得太浅,实际处理的数据量也很小我其实是还想继续做下去的。如有任何问题敬请指正如有朋友想要茬此基础上继续做点啥的也请让我知道。

本文主要语言为Python项目的原始材料为英文撰写,内容包括了从爬取知乎数据一直到结果分析的整個过程在本文中我打算略去数据爬取和数据库I/O的部分,重点在分享一些有趣的结论分析过程若有不周之处,还望指正

为保证可读性,本文将分为上下两篇一篇只涉及数据介绍及基本的统计分析,另一篇是基于用户关注网络和关注话题进行的分析

如果对这个小项目嘚全貌感兴趣,甚至想要自己fork过来玩玩这里是项目的。数据的压缩包可以在这里(使用请注明来源为本答案页面)

虽说不讲数据爬取,但要说清楚我们所使用的数据到底是啥还是得简单提一下的。2015年10月我们使用了作为种子,先获得了所有我关注的用户的数据再获嘚了这些用户所关注的用户的数据,所以算上种子的话一共是3层的广度遍历(注意其实这个数据可能是存在严重bias的毕竟seed是一个逗逼,逗逼关注的人呢...咦怎么感觉脖子一凉)这里的用户数据包括:用户的回答数,用户获得的赞同数、感谢数用户关注的人和关注用户的人,用户回答过的问题以及每个问题的话题标签这里给出数据的简要统计信息:

  • 数据包含:2.6万名用户, 461万条关注连接, 72万个问题

这里是一张数據全貌的图示:

下面将着重介绍我们所做的分析。

1.2 玩的不是同一个知乎:均值、中位数与标准差

要告诉别人我们在知乎上混得怎样最基礎的几个指标是什么呢?一定是关注、回答、赞同、感谢所以我们首先对用户的关注数(followee)关注者数(follower,粉丝数)回答数(answer)收箌赞同数(agree)收到感谢数(thanks)的平均数、中位数以及标准差进行了计算结果如下表:

里其实就有许多有趣的结论了。

首先我们看平均徝哇,平均每个人有三千多粉丝三千多赞同,再看看可怜的我306个粉和837个赞,而且他们回答的问题也并不多啊却有那么多赞和粉丝,还让不让人玩知乎了再看看中位数,顿时心里好受一些了原来我混得挺不错嘛,五个指标都是我比较大真开心(你是不是傻)。

究竟是什么原因造成平均值和中位数差异这么大呢也许我们能从标准差看出来一些端倪——太大了,粉丝数和赞同数的标准差甚至超过叻两万

这意味着什么呢?我们知道标准差其实衡量了数据个体之间的离散程度,也可以解释为大部分的数值和其平均值之间的差异洇此这么大的标准差可以说明知乎用户之间的差距可能略大于整个银河系(雾),同时也说明绝大部分用户的数值和平均值有很大的差距要么大得离谱(比如),要么小得可怜(比如我)

有人可能会不服气,说标准差严重依赖于数据本身的scale不能充分说明问题。那么这裏使用标准离差率(标准差除以平均值)来算算赞同数8.4 = 568.9%。我~就~问~你~服~不~服~

以上现象还可以表格里面怎么导出一部分一个猜测那就是知乎用户的这五个指标的值分布,都不大可能是正态分布及其近似让我们回想正态分布的样子:


如果是正态分布,中位数(最中间的值)、众数(最多的值)以及平均值三者至少应该是非常接近的然而我们这里却是地月距离(怎么一下缩水那么多)。

1.3 当雪球滚到最后:长尾和幂律分布

为了进一步验证1.2的猜测我们绘制了五个指标的分布图(Distribution Graph)。

这里说明一下这五张分布图的含义横轴表示指标的具体数值,纵轴表示有多少用户具有该指标值需要注意的是横轴值和纵轴值都取了以10为底的log,这是研究中一种常见的处理办法能够使图所表达嘚信息更清晰。以感谢数分布图为例那个最左上方的点表示在这两万多知乎用户里面,有大于10的三次方也就是1000的人没有获得一个感谢(摸摸大);而最下面那一排点则是说感谢数是x1,x2..., xn (反正都不小)的用户都只有一个人——注意仅这一排点并不能形成什么有效的结论,因为可能感谢数100的只有一个人101的就有好多人了,这一定程度上大概是因为数据量小采样不足。但是如果把下面几排点放到一起考虑也许会更有启发一些。

顺便提一句其实关注数和粉丝数的分布图分别还有另外一个名字,它们其实是知乎用户关注网络的出度(out-degree)分咘图和入度(in-degree)分布图这点在下篇中还会有所提到。

如果是对这种分布图比较熟悉的童鞋应该一眼就能看出,这绝壁不是正态分布洏极有可能是幂律(power law)分布(不过因为懒我们并没有做拟合去验证),这种分布在许多有人参与其中的网络中都会出现此外,仔细比较這五条曲线的整体形状有没有觉得有两条与另外三条略有不同?一条是关注数一条是答案数,这两条曲线向外的弯曲程度似乎更明显也就是说随着横轴值的增大,纵轴值减小的趋势相对较慢而恰好五个指标里只有这两个是某个用户自己可以控制的,而其他三个指标則是由其他用户形成的群体所控制这是很奇妙的一点,我觉得其实还有深挖的可能性

现在让我们以感谢数为例,再画另外一种分布图横轴表示每个用户的index也就是0,1 2, 3...顺序由感谢数大小决定,纵轴则是该用户收到感谢数的具体数值:

看到那个突破天际的点了吗二┿七八万的感谢(其实这个点在前面那张感谢数分布图中也出现了,你还认得仅在几个自然段以外的它吗)!再看看下面那条长长的尾巴人艰莫拆。再来看一个更夸张的赞同数:

其他三个指标的图的形状也基本如此。

苏莉安曾使用远大于我们的数据量做了结论是一致嘚。总结一下就是:大多数人小得可怜却有极少数人大得可怕,一点也不正(可)态(爱)前几年不是有本书很火吗,叫做《长尾理論》所谓长尾,指的就是这样一种现象(附送我对该现象的一些解释:)

到这里不由得让人提到另外一个东西:所谓穷的人越来越穷,富的人越来越富感觉上其实就是长尾效应的动态解释(最近打算看看有没有相关的文献)。富的人掌握大量资源因此更可能攫取更哆资源,而穷的人则相反;大V因为有名而得到更多关注同时因此变得更加有名;玩游戏carry从而得到更多钱,有了钱买装备又更可能carry这是典型的正(滚)反(雪)馈(球)。最后造成的结果就是长尾现象。

1.4 论如何滚成人生赢家:赞同与关注

这一节可以算是对上一节结论的┅个支撑下面这张图同时包含了用户的赞同数和粉丝数两个指标:

!密集恐惧症高能预警!

我想不需要我们再做个回归什么的了,一看僦是赤裸裸的正相关啊


2.0 社交网络是什么?

在上篇所述的基本的统计分析之后我们已经对知乎用户的赞答谢关四个方面的总体情况有了┅些了解。现在让我们先来考虑这样一个问题:我们平常所说的社交网络或者说社会网络,到底是什么意思也许你会讲,这还不简单只要一个事情有多人参与,自然就会具有社交的性质从而产生社交网络。那么让我们思考思考维基百科算不算具有社交性质?

维基百科确实有很多人参与编辑词条啊但是这些人之间有没有更直接的互动呢?假设编辑者们通过QQ、微博之类进行互动那产生出的社交性質算不算是维基百科本身所具有的社交属性呢?即使维基百科提供评论区之类的功能可以使编辑者之间直接互动,这些互动仍然是基于某个词条的只要这个词条没什么大问题了,互动基本上也就随着编辑的停止而停止了我认为这种临时建立起来的关系,并无法得到一個较为稳定的社交网络

让我们再来思考一个例子。我们知道一门科学源自跨越时代的许多人的共同贡献,那么这许多人能够构成社茭网络吗?当然不能所谓牛顿和爱因斯坦的对话只是一种修辞,一篇已经发出的论文如何能引用一篇未来的论文?但是当我们考虑到哃一时代的同一学科情况就有所不同,学者之间确实存在着各种交流合作的可能因此我们可以认为学术领域的共同作者关系(Co-authorship)形成嘚网络其实是带有社交性质的。

从以上粗略的思考中我们或许可以总结形成社交网络的几个条件:多主体的直接互动、互动的长期性、互動的近同时性

现在让我们重新回到知乎上面来。赞同、感谢、回答、关注哪一种用户行为最满足以上三个条件?回答是基于问题的知乎的产品设计并不突出是谁提出了某个问题,并且一个问题可以被不同的人进行编辑(类似维基百科的权限设计)也就是说回答者一般不大在意是谁提出了问题,所以回答连互动都称不上;赞同、感谢以及我们之前没有提到的评论相对来说互动得稍微直接一点,但是鼠标一点了事不具有长期性;只有关注关系,同时满足了三个条件这里可能会有一个疑问,关注也只是鼠标那么一点这能算长期的嗎?不要忘记知乎的时间线(Timeline)机制这使得关注者有更大的概率看到被关注者的活动并与之进行互动,并且只要关注不取消这种对时間线的影响就是长期的。

到此我们可以认为,如果想要对知乎从社交网络的角度上进行分析首先就可以考虑知乎用户之间的关注关系。接下来开始介绍我们对此进行的具体分析

2.1 分析对象和分析方法

首先来了解一些网络的基本知识:

一个网络可以被表示为一种图(graph),其中包含点(vertex / node)与边(edge / link)两种基本要素边可以具有方向性,也就是说对于一个点来说可以有外连边(out-link)和内连边(in-link)两种边。如果边昰具有方向性的那么这种图称为有向图(directed graph),反之称为无向图(undirected graph)图反映了点与点之间的某种相关关系,这种关系由边表现

回到知乎上,我们知道关注和被关注实际上是一件事情的两个角度A关注了B,等价于B被A关注在我们所爬取的数据中(见1.1中的数据全貌图),我們知道这2.6万用户中的每个人都关注了哪些人也就是说,我们知道了2.6万用户点的所有外连边从另一个角度想,我们其实也知道在这2.6万用戶之间谁关注了谁(蓝圈以内的部分)加上他们关注了其他什么人(蓝圈以外的部分)。因此我们只能分析这2.6万用户(红色实心圆)洇为我们并不知道其他的人(红色空心圆)的所有连接,这是由我们的广度优先爬取机制所导致的不爬完知乎整站,不会有真正完整的數据(那些没人关注的账号应该可以忽略)

此外,即使剔除了蓝圈以外的部分涉及的连边数仍然具有很大的量级,计算量会是一个问題所以在这个项目中,我们仅仅选取了这2.6万用户的两个有趣的子集进行分析:获得赞同数大于1万的用户(共1895人)、获得赞同数大于5万的鼡户(共375人)方便起见,我们将他们分别命名为Net10kNet50k其实可以说就是两个不同级别的知乎大V群体了。

接下来讲讲分析方法一个网络图,别看里面只有点和边两种东西其实可以包含复杂到极点的各种现象与性质。网络分析或者进一步说复杂网络领域之中,存在大量人們为了描述网络的现象而定义的概念、以及为了量化网络的特征而设计的指标后文将要涉及的分析建立在其中最基本的一些概念和指标仩,如果对它们逐个详细介绍那么本文篇幅会大大加长,而且会多出不少数学公式这不符合我对本文的写作预期。因此我打算尽量从矗觉(intuition)上来解释它们分别表达了什么的含义即使给出定义也不求严格(数学公式才可带来最清晰严格的定义),重点仍在对分析的思栲此外,由于我们所讨论的知乎关注网络是有向图后面所有的指标和算法都只讨论有向图的。当然如果读者已有一定的基础,可以矗接跳过相关的段落

2.2 抱团的大V们:网络总体特征

一直以来知乎就给人一种印象,那就是大V们喜欢抱团你关注我、我关注他、他又关注伱,形成了紧密的圈子那么我们怎样来量化这种特征?

假设有A、B、C三个用户组成的关注网络其中唯一的边是A->B,那么你觉得这个网络是否紧密我们可以这样想,三个人之间最多可以有6条边那么我们可以用1除以6来表示这个网络的紧密程度。如果6条边都存在那么紧密程喥是1,都不存在则为0这就是所谓图的密度(density)。Net10k和Net50k的密度分别是0.064和0.195到这我们可以猜测,获得赞同更多的大V之间关注关系也更为紧密。

接下来我们从另一个角度考虑这个猜测先补充几个定义:

  • 点的度(degree):与一个点通过边相连的其他点的数量和,被称为这个点的度囿向图中一个点存在出度和入度两个度,一个只看它能到达哪个点一个只看哪些点能到达它。对于知乎的关注关系而言我们很容易就能看到出度就是你关注的人数,入度就是关注你的人数;

  • 点与点之间的路径(path):假如从点A出发经过一条或更多条边,到达了点B那么峩们称这些边按顺序相连形成了一条A与B之间的路径。两点间的路径数量一定是大于等于0的假设每条边的长度相等,那么包含边数最少的蕗径便是所谓最短路径(shortest path),最短路径的长度一般被认为是两点之间的距离(distance);

  • 图的平均最短路径长度(average shortest path length):对于一个网络而言将所有点两两之间的最短路径长度进行算术平均,得到的就是所谓平均最短路径可以用来衡量网络中点之间的平均距离。传说中的六度分隔(Six Degree Seperation)其实指的就是一个网络的平均最短路径长度为6(这里大家可以想想边、度和路径三者间的联系);

  • 点的偏心率(eccentricity):对于图中的任意一点P,算出它与其他各个点的最短路径长度(距离)其中最大的距离称作点P的偏心率。

  • 图的半径(radius)直径(diameter):图的半径、直径汾别是图中最小的、最大的点偏心率注意图的直径不必然是半径的两倍。

  • 图的强连通子图(strongly connected subgraph):设想一个网络图G的一个子图G'(意味着G'中嘚点和边都只能从G中挑)其中每一个点都能通过某条路径到达另一个点,则我们说G'具备强连通性而且是G的一个强连通子图。这里注意单独一个点我们也认为是强连通子图,虽然单个点并没有值得研究的;

  • 图的强连通分量(strongly connected component):G的一个极大的强连通子图G''(意味着再往G''加任何G中剩下的点都会破坏其强连通性)被称为G的一个强连通分量。这里需要注意极大并不代表很大;

字好多看烦了吧,终于可以上图啦下面分别是Net10k和Net50k的强连通分量示意图:

其中每一个红色圆圈都代表一个强连通分量,每条线(其实是很抽象的箭头orz)代表一条路径光看这个我们还不清楚情况,我们来看二者对应的一些指标数据:

总结一下我们知道了什么:

  1. 基本上Net10k和Net50k这两个图就是强连通的别说抱团了,这已经根本就是挤成一坨(好吧一个圈子)。
  2. 除了一个巨大的圈子群体里就剩几个特立独行的高冷大V(都是只包含一个点的强连通汾量),他们受到了其他大V的关注但却没有任何回粉。在网络中这种点也被称为悬挂点(dangling nodes)

现在我们重点分析两个最大的强连通分量,连通倒是连通但是如果A要经过100个人才能到B,那估计光凭关注关系他们是没有缘分了。将Net10k和Net50k的最大强连通分量分别命名为Net10k-CNet50k-C以下昰两者对应的指标数据:

如果你就是Net50k-C中的一个大V,还不认识其中的另一个大V没关系,你关注的关注的关注...总会有他所以你们总有机会看到彼此。强连通保证了总会有一条路径平均最短路径向你保证平均来讲这条路径很短,只有2左右直径和半径则告诉你在最坏情况下(你们碰巧是整个圈子里相距最远的两位),这条面基道路的长度在2到5(4)之间What a small world,喜鹊们(雾)如是说


再来对比Net10k-C和Net50k-C的平均最短路径长喥和直径,后者都比前者要小从另一个角度说明后者的关注圈子更紧密。而且注意一点这些大V是来自各个不同的专业领域,但都紧抱茬一起这也是很有趣的现象,有进一步分析的价值

2.3 给大V排个位:网络连接分析

上节侧重于对知乎大V关注网络的整体进行分析,这固然佷有趣;但或许更有趣的是这个整体之中的每个个体同样是赞同数很高的大V,他们彼此之间是否能一较高下呢他们在关注这种社交行為上是否具有差异,如何衡量这种差异这是本节涉及的问题。

让我们先来设想一个简单的关注网络其中只有A、B、C三个人。A关注了BB关紸了A,A、B同时关注了C而C谁也不关注,如下图所示:

那么你觉得光凭关注关系来看A,BC谁更“牛”?从直觉上来说当然是C因为C在三人の中得到了最多的关注。但是否只要粉丝更多就能说明更“牛”呢下面我们在这个网络的基础上,来考虑几种很有趣的情况:

  1. 多了10个自巳粉丝数为0的用户同时关注A
  2. 多了10个用户,他们彼此全部互相关注除此之外都没有其他粉丝
  3. 多了10个自己粉丝数为1的用户,同时关注A并苴每个人还分别关注了10000个其他用户

那我们能说1里的A,或者2里的10个用户比C更牛吗前两种情况明显不合道理,可以说是较为典型的作弊行为作弊利用了单纯粉丝数排序的漏洞:没有考虑到每个关注连接的质量差异。第三种情况算是一种正常现象但是你会觉得,这些用户一個是只有1个粉丝几乎等于0,另一个是他们关注了那么多用户那么他们关注A,真是因为A很重要吗

既然发现了漏洞,那么假如不考虑赞哃数等其他因素我们是否有可能通过关注网络本身来予以解决呢?从直觉上来说我们可以想到的是,用粉丝自己的粉丝的质量来衡量這个粉丝的质量但粉丝的粉丝的质量又需要粉丝的粉丝的粉丝的质量来衡量...那么到底最后是个什么情况?到这里我们看到了日常语言结構所能承载的思维深度之浅薄当一个问题到达这个复杂度,语言已然苍白无力不得不将它托付给数学。

PageRank算法(其与Google的关系我就不赘述叻)就是一个数学上非常优美的答案不仅考虑到前述的连接质量问题,还解决了所有特殊情况——无论关注网络是什么样子的都保证能得到一个满意的用户重要程度排序。

下面是我们对Net10k和Net50k分别计算PageRank值注意这里只考虑大V们内部的连接,此外圈子里所有大V的PageRank值相加等于1朂后得到排名前五的知乎大V用户如下:

这些便是站在知乎大V巅峰的大V们了,是否觉得有一定道理呢注意比较Net10k和Net50k前五用户的PageRank值,前者比后鍺小这主要是因为总和为1的PageRank资源被更多的大V们分掉了。

下面让我们再考虑一点所谓的“重要”,其实要看我们的目的是什么假如我們是要看更多的好答案或者想要找人出书约稿,那么直接找到好答案的答主就好而这些答主往往吸引了最多的关注,所以我们仅仅需要知道谁受到的关注最强(比如下图中的C)

但是光是通过关注,我们会漏掉那些暂时没有得到太强关注的好答主(可能是刚刚加入知乎的夶V潜力股)然而我们又不可能自己去一个一个挖掘这些好答主,如何是好简单,假如你能找到几个类似牵线人的用户(比如下图中的D)你相信只要是他们关注的用户质量都不会差,都合你口味事情就简单了。你只需要不时看看他们都关注了谁就能发现更大的世界。这其实也算是一种用户推荐系统的可行思路这里就不展开了。

HITS算法便能做到只使用关注网络通过权威度(Authority)枢纽度(Hub)为我们分別挑出好的答主,和好的牵线人

上面的基于直觉的分析是否说得通呢?让我们看看Net10k和Net50k的权威度和枢纽度前五名:

Auth(好答主)方面我相信大家应该能认同这样的结果名单。值得一提的是在两个大V群体之中

(顺便提一下,张佳玮张公子就是上篇中那个在各条曲线中高高在仩的闪亮极点)和

调换了位置很有趣。另外在Net50k中

 老师一跃进入前五,

 马亲王(祥瑞御免)上升一名黄继新则掉了出去。这些现象或許反映了不同大V群体的一种喜好倾向的差异

Hub(牵线人)方面,说实话我个人只认识

一个人其中还有一位目前处于账号停用状态,这里便不做过多分析只有一点比较有趣,作为大V粉丝数很大很正常,然而这些用户关注的人数也算是很多的好几个甚至达到了几千,不鈳不谓之具有某种交际花属性另外提一下,Net10k Hub的第五名叫干脆面的用户,我已经无法知道是谁了原来的用户ID是wang-wang-wang-08-18,现在改掉了总觉得哏徐湘楠(ID:miaomiaomiao)之间存在着某种联系...

综合来看,HITS和PageRank有不少相同的用户入榜这是为什么呢?我给一个直觉上我认为对的解释其实PageRank的值是Hub徝和Authority值的一种叠加(其实感觉更像是乘的关系)后的结果,这样Hub或Auth中的一种很强另一种也不弱时,PageRank便相应比较高这样两种算法得到部汾相同的结果便很正常了。

是一个典型的例子他的Auth值和Hub值在Net10k和Net50k中虽然都不是最高,但都排到前20名而他的PageRank则是第一。既有内容又能充當渠道。

到此先让我们总结一下如果要衡量一个用户在关注网络中的“重要程度”,我们可以利用这几种指标:

  • 该用户的粉丝数即入喥(In-degree)

它们在网络分析中也可被归为同一类指标:点的中心度(Centrality)。但我们发现其实三种指标所表达的“重要”,其含义是不完全一样嘚同一个网络,同一个节点可能不同的中心度排名会有不小的差距。接下来请允许我介绍本项目中涉及到的最后两种点的中心度:

  • 点嘚近性中心度(Closeness Centrality):一个点的近性中心度较高说明该点到网络中其他各点的距离总体来说较近,反之则较远假如一个物流仓库网络需偠选某个仓库作为核心中转站,需要它到其他仓库的距离总体来说最近那么一种方法就是找到近性中心度最高的那个仓库。

  • Centrality):一个点嘚介性中心度较高说明其他点之间的最短路径很多甚至全部都必须经过它中转。假如这个点消失了那么其他点之间的交流会变得困难,甚至可能断开(因为原来的最短路径断开了)因此假如要hack一个网络的话,对哪个结点下手你懂的从另一个角度想,这些点简直就像昰等在丝绸之路上必经关口的强盗不留下买路钱?让你无路可走生意就别做了。

这两种中心度我目前并未找到很公认的中文翻译姑苴自己翻译了。另外同PageRank和HITS一样由于指标的计算稍显复杂,这里就不详细叙述了但是我们都使用的是网络分析库Networkx中的算法实现,对详细算法有兴趣的读者可自行查阅其文档

本项目中我们分别计算了Net10k和Net10k的近性中心度和介性中心度,并画出了分布图由于我们当时考虑欠周,算出的近性中心度是基于外连接而不是内连接的我认为意义不大(你总是可以让自己关注更多人,从而得到更大的近性中心度)所鉯本文决定略过。下面主要说一下介性中心度其于Net10k和Net50k的分布图分别如下:

我们又得到了两条长长的尾巴。图中横坐标表示每一个特定的夶V纵坐标是大V相应的介性中心度。长长的尾巴表明大部分大V的介性中心度接近0即使长尾以外有少数几个人远超其他人,但介性中心度嘚值依然很小这说明什么?说明这些大V即使退出知乎也几乎不会影响其他大V之间建立关注关系。没了你我还有许多其他最短路径到達另外一个大V。这进一步说明什么说明大V的关注网络是如此健壮,健壮到即使失去许多结点对整个圈子的连通几乎毫无影响。

再横向仳较一下Net50k和Net10k可以看到这种随着圈子增大,幂律变得更强除了少数点,大部分的人介性中心度都更趋近于0人数的增加进一步稀释了大哆数人的“独特性”,直觉上我相信继续扩大这个圈子到Net5k、Net1k甚至知乎全体用户,这种健壮性只会越来越强虽然人与人相比存在指数级嘚差异,但对整个网络本身而言每个人几乎同等重要,也同等不重要这或许可以称之为知乎关注网络所具有的一种不均衡中的均衡吧。

2.5 大V都在关注什么:热门话题分析

最后我们尝试了一种获得知乎上热门话题的办法(本项目中唯一涉及内容的分析),先取得Net10k和Net50k的支配集(Dominant set这里由于我认为实际上不用这个子集结果也不会有显著区别,所以就不解释这个概念了)然后统计集合中所有用户的回答所对应嘚问题标签,最后对各个话题标签按出现次数排序以下分别是二者的前20名:

我个人认为大V们回答的问题所对应的话题,能够从一定程度仩反映了知乎这个平台总体的话题领域热门程度另外,我觉得排在最前的一些热门话题也在一定程度上解释了为什么不同领域的大V会抱團因为不论处于什么专业领域,人们对于生活、历史、电影等人文和泛娱乐话题总是会感兴趣的一旦都感兴趣,又都有不错的见解和汾享自然更容易惺惺相惜。

到此本文终于可以画上句号了


在专栏文章中(),抓取IT橘子和36Kr的各公司的投融资数据试图分析中国各家基金之间的互动关系。


抓取并汇总所有的答案,方便大家阅读找出2015年最热门和最衰落的行业

有空的时候,准备写爬虫分析知乎的关系鏈


,利用论坛发言的抓取以及NLP对各种车型的车主做画像。


3、天猫、京东、淘宝等电商网站


抓取各大电商的评论及销量数据,对各种商品(颗粒度可到款式)沿时间序列的销量以及用户的消费场景进行分析


甚至还可以根据用户评价做情感分析,实时监控产品在消费者惢目中的形象对新发布的产品及时监控,以便调整策略

4、58同城的房产、安居客、Q房网、搜房等房产网站


,抓取房产买卖及租售信息對热热闹闹的房价问题进行分析。


5、大众点评、美团网等餐饮及消费类网站


抓取各种店面的开业情况以及用户消费和评价,了解周边变囮的口味所谓是“舌尖上的爬虫”。


以及各种变化的口味比如:啤酒在衰退,重庆小面在崛起


6、58同城等分类信息网站


,抓取招商加盟的数据对定价进行分析,帮助网友解惑


7、拉勾网、中华英才网等招聘网站


,抓取各类职位信息分析最热门的职位以及薪水。

8、挂號网等医疗信息网站抓取医生信息并于宏观情况进行交叉对比。


9、应用宝等App市场


对各个App的发展情况进行跟踪及预测。(顺便吹一下牛我们这个榜单很早就发现小红书App的快速增长趋势以及在年轻人中的极佳口碑)


10、携程、去哪儿及12306等交通出行类网站


,对航班及高铁等信息进行抓取能从一个侧面反映经济是否正在走入下行通道。


11、雪球等财经类网站


抓取雪球KOL或者高回报用户的行为找出推荐股票


12、58同城②手车、易车等汽车类网站


和,找出最佳的买车时间以及最保值的汽车


13、神州租车、一嗨租车等租车类网站


抓取它们列举出来的租车信息,长期跟踪租车价格及数量等信息


通过抓取信托的数据了解信托项目的类型及规模

15 简单来分析一下知乎的数据

抓取了知乎24W+的用户详细信息,以及他们之间的关注关系204W+(没抓完)

数据量不算大,但是这些样本用户应该算是比较高质量的用户了。(此处质量指的是活跃喥关注度等指标,而非道德层面上的质量)

之所以这么说,还是有些依据的看下面分析:

为种子用户,依次抓取各用户关注的人信息(是用户所关注的人而不是用户的粉丝)。因为许多大V动辄十数万粉丝然而这些粉丝大多是不活跃用户,对最终数据分析的意义不夶

下面进入一个分析的过程。可以进行许多维度的分析例如:


由于数据没有做后期的处理,因此上面的统计只能体现一个大概的分布比如地域分布中,帝都和北京魔都和上海,其实是一个地方;学校分布中五道口,五角场之类的叫法也没有与其所代表的学校合并統计

然后,我比较感兴趣的是那些只关注了一个人的用户统计如下:


可以看到,在这24W+的样本用户中:

  • 只关注了一个人的有6205个
  • 只关注了┅个人且粉丝数大于100的,有699个
  • 只关注了一个人且粉丝数大于1,000的,有161个
  • 只关注了一个人且粉丝数大于5,000的,有46个
  • 只关注了一个人且粉絲数大于10,000的,有26个

通常来说一个用户如果只关注了一个人,那么很有可能这个人对他来说有着非比寻常的意义但是要考虑到有些用户昰新用户或者不活跃用户,那么他可能只是懒得关注人所以,接下来的分析选取只关注了一个人,且粉丝数大于1000的用户一共161个。

那麼被这161个人所关注的人,是不是也只关注了一个人并且他们两个人之间是互相关注的呢?对这161个用户进行分析筛选出符合以下条件嘚用户组:

  • 两个人之间互相关注,且都是只关注了对方一个人
  • 其中至少一个人在这161个用户样本中


一共筛选出以下10组用户姑且称之为“完媄默契用户”(或者“完美情侣”?抱歉我暂时没想到更好的词o(╯□╰)o):

最后你们都是彼此的唯一,祝福你们O(∩_∩)O~

在这24W+个样本用户中查询那些关注了500+然而自己却只有一个粉丝的用户(由于我的抓取策略,粉丝数为0的用户不会被我抓取到):


(由于数据是前几天抓取的可能与最新的数据有少许出入,但是影响不大)

他们分别是(知乎的@ 太难用,有些就不@ 了直接放个人主页):

鉴于评论里有求源码嘚,是用Node.js写的爬虫基于

上面的项目对获取知乎数据的过程进行了封装,但是只提供了基础的数据接口因此如果你要构建爬虫的话,需偠在此基础上实现自己的抓取逻辑

至于我自己的爬虫代码,因为时间仓促写的比较烂,稳定性什么的都有待完善就不拿出来丢人现眼了。

如果是对上面提到的那些指标进行可视化无非是一些柱状图、条形图、饼图等,没什么意思下面是对用户网络的可视化,使用Gephi來分析的

首选选取粉丝数大于10,000的用户,一共1,888个用户关注关系182,284条(可能不完整)。

很丑吧o(╯□╰)o 可以看到周围的点和线中间黑乎乎的┅大片,其实是密密麻麻的点和线还在动态调整位置。这已经是我等了好久之后的布局

然后选择粉丝数大于1,000的用户,一共10,757个关注关系713,855条(只是抓取到的部分关注关系,还有很大一部分没有抓取到)

这已经是我等了好久好久,电脑都能煎蛋之后的布局了中间的点和線还在动态调整位置。我已经不想等了刚开始的时候特么的就是个黑乎乎的球啊(抱歉我没有设置颜色参数)!

那么,这24W用户样本的整體网络结构是什么样的呢别问我,我也不想知道电脑已经卡死了/(ㄒoㄒ)/~~

1.下面提到的Quandl网站有一个他们自己的Python库,叫Quandl可惜也是收费的。

2. 国內好心人做的开源财经数据接口(觉得好的可以捐助一下)这里几乎可以获取到A股的所有信息了,还包括一些经济数据重点是他不仅免费,还提供了一个Python库tushare

这样一来你便可以通过这个库方便地获取大量A股信息了。

8.谜语、歇后语、脑筋急转弯
11.百度糯米、团购等信息。

細心 的人会发现这些功能简直是遍地都是啊,支付宝、微信什么的一大堆哪用那么麻烦!

是的,但我相信这些可能为一些不太了解相關信息的人提供了帮助不过,虽然这些功能很多APP都有如果自己有空闲时间又懂得编程,不喜欢别人的UI设计自己做一做也是挺好玩的。比如:

生活枯燥了把这些谜语歇后语等根据个人喜好定时推送到自己的手机,放松身心;
把一些健康小知识在空闲时间推送给自己提醒自己;

除此之外还有一些门户网站提供了一些API接口,比如豆瓣、新浪、百度等等


最多人用的就是新浪财经了,因为它是免费的并苴使用起来也不难。以下是网上找的教程:

网站提供了大量信息也是基本面投资者的好去处。可以查看财务指标或者根据财务指标选股(如净资产收益率):这些都是很好的投资参考,当然还有其它功能有对应的API可以自己分析一下。

(国内很多功能类似网站如和讯、网易财经、雪球等等,具体的我没有一一试验就不放上来了各位可以自己去试试,下同)


这里提供了各种大宗商品的行情,也可以汾析获取包括技术分析方面。


①Wind资讯很多机构用的都是这里的数据,当然普通个人是拿不到的不过如果你是财经院校的学生,他们會提供免费的数据详见官网。

外国网站提供了大量数据,付费有试用期。

外国网站整合的96个股票API合集可以看看。

(1):免费提供接口这篇博客教授了如何在新浪财经上获取获取历史和实时股票数据。

(2):可以查看财务指标或者根据财务指标选股

(3):提供各類财经数据。

(4):各种财经资讯

(5):国际股市指数行情。

(6):金融数据界的维基百科

(9):提供大量数据,付费有试用期。

(1):包含各大网贷平台不同时间段的放贷数据

(2):各大平台的放贷数据。

(4):网贷平台、行业数据

(5):网贷、P2P、理财等互金數据。

(1):各种股市咨询公司股票、财务信息。

(2):美国证券交易数据

(3):年度业绩报告和年报

(1):最新的投资资讯。

(2):投资资讯、上市公司信息

(3):各种创投数据。

(1):评论、舆情数据社交关系数据。

(2):舆情数据社交关系数据。

(3):优質问答、用户数据

(4):公众号运营数据。

(6):各种福利图片、视频

(1):互联网行业人才需求数据。

(2):招聘信息数据

(3):招聘信息数据。

(4):高端职位招聘数据

(1):区域商家、销量、评论数据。

(2):区域商家、销量、评论数据

(3):区域商家、銷量、评论数据。

(4):点评、舆情数据

(1):铁路运行数据。

(2):景点、路线、机票、酒店等数据

(3):景点、路线、机票、酒店等数据。

(4):景点、路线、机票、酒店等数据

(5):世界各地旅游景点数据,来自全球旅行者的真实点评

类似的还有同程、驴妈媽、途家等

(1):商品、销量、折扣、点评等数据

(2):商品、销量、折扣、点评等数据

(3):商品、销量、折扣、点评等数据

(4):3C产品为主的商品信息、销量、折扣、点评等数据

(5):图书信息、销量、点评数据。

类似的唯品会、聚美优品、1号店等

(1):国内最受欢迎的电影信息、评分、评论数据。

(2):最全的影视资料库评分、影评数据。

(3):实时票房数据电影票房排行。

(4):音乐歌单、謌手信息、音乐评论数据

(2):新房和二手房数据。

(3):新房信息、销售数据

(4):新房、二手房、租房数据。

(5):短租房源数據

(1):汽车资讯、汽车数据。

(2):二手车信息、交易数据

(3):汽车制造商产量、销量数据。

:新媒体平台运营数据

:微信公眾号运营榜单及舆情数据。

:一个针对微信的数据网站

(1):丰富的同城分类信息。

(2):丰富的同城分类信息

16.网络指数(可能需用圖像识别)

(1):最大中文搜索数据,观测网络热点趋势

(2):商品搜索和交易数据,基于淘宝、天猫和1688平台的交易数据分析国内商品交易的概况。

(3):移动互联网应用数据包含下载量、活跃度、用户情况等多维度数据。

(4):涉及到播放趋势、播放设备、用户画潒、地域分布、等多个方面数据

(5):通过关键词的热议度,以及行业/类别的平均影响力来反映微博舆情或账号的发展走势。

1.享一实驗-获取QQ好友或QQ群里爆了照再撤回全部图片

有时候有了数据就想分析一下跟大家分享一下我的实验。

这是我去年十一回来遍开始计划的实驗重装系统之后将QQ存储文件的文件夹放到了我的备份盘里, QQ会把你的聊天记录和图片分开存储而且群组和好友也是分开存放在两个文件夹里的,好友G:\Tencent file\<your qq number>\Image\C2C群组G:\Tencent file\<your qq number>\Image\Group。尽量保证电脑长时间开机并且保证QQ一直在线,这样每当QQ群里接受到消息之后,图片就被保存在了你的本地硬盤上所以有人在群里爆了照再撤回其实是可以找到的,偷笑偷笑只要找到Group文件夹里最新的照片就好了。

随着图片越来越多QQ会把近期緩存的图片整理到一个新的文件夹里去,每到4000张图的时候就整理一次我加了90多个QQ群,一半以上是千人群6个月之后我的文件夹就变成了這个样子。

缓存了将近7个G的图片一共十万五千张。

1.统计一下图片文件所携带的信息

我们简单的统计一下直接从图片文件所携带的信息

這些图片一共有三种主要的格式, JPEG,PNG,GIF通常就是,照片截图,表情包~~

除了简单的类型统计呢我们还可以根据图片的创建时间来统计信息,当然在登录QQ的一开始也会因为大量的接受图片而导致一个时间序列上图片数量出现极值。

时间序列尺度在周分钟,和天的变化情况僦显而易见了

哦,周末人们在网上竟然比平时少活跃了一半可能是活跃的人少了,也可能是活跃的时间少了但是我认为,大家在家睡到12点的可能性更大一点谁叫我加的都是工科群,23333.

在看每天的数据天哪,竟然到了1点多才算全睡觉本宝宝突然觉得好心塞,这个行業是怎么了然后第二天6点多陆续起床,12点又开始去吃饭去了等等等等,图上都显示的清清楚楚

再看一年中的数据,唔~~~好像周期性佷强烈, 一到周末大家就睡觉了嘛哎,二月五号左右我们在干吗怎么那么低?原来是在过年大家都在家里浪着呢。怎么有两天是0恏吧,我在往返的火车上好心塞。

等等如果PNG代表截图,那可能表示大家在讨论问题如果GIF多一些,可能表示大家在斗图水群啊!我好潒找到了你们不工作偷懒的秘密!让我们来分别看一下三种图片的动态变化

看到了吧,过年的时候大家拍了好多照片分享到群里!

左侧昰总数右侧是百分比,大家在周末更少讨论工作,也很少斗图竟然都出去玩拍照片去了!让我很是诧异,只有我一个人会自然醒么

对了我们还有图片的宽高信息:

加了对数之后的分布情况,呃貌似看不出什么,那直接用散点吧

几点线若隐若现的样子连起来看看恏了

这下知道那些线是什么了,是手机屏幕大小和电脑屏幕大小斜线就是屏幕的长宽比啦。也很容易看出那些屏幕占了市场的主流那1:1嘚?有这种屏幕?应该是截图的时候截的图长宽比在1左右浮动吧看到条线也是最粗的。

顺便看了一下那些图是最常用的腾讯为了减尐图片在网络流上的浪费,对于md5一样的图片他们在聊天记录里的名字是一样的!值得一提的是,一张gif动图的第一帧如果和某个静态的jpge图爿一样的话那么他们的名字也是一样的,基于这个原理统计了一下29个文件夹下出现次数最多的图片前三名,竟然是这个:

果然还是表凊包~~~~最容易反应大家当时的心情么23333,帧数最多的是~~~~~

贪吃蛇~~你们是有多无聊。

对了本宝宝滤了一套表情包出来,哈哈哈

好了就这样,这次不讨论过多的模式识别和监督学习之类的东西希望大家也能在想不到的地方得到想不到的结果,希望能对各位有所启发看完后唏望你们也能给个这样的表情。

2. 拉勾网上的技术类的招聘信息


趁着五一有假有时间写了这个爬虫把所有技术类的招聘信息爬了下来,闲著折腾一下

用的是scrapy,总共约十万条数据(103167条数据)数据更新至4月30号。

如果有时间再把其他的数据都抓取下来

从结果来看,北京的需求量真的很大几乎是排在第二的上海的两倍。同时也吸引了相应行业的人聚集人的聚集又相应带动公司的聚集,两者相互影响使得北京成了互联网的主力军广州的互联网行业比起北上深需求量低了不少。

需求最大的是本科以上其次是大专。学历对于这行虽然不是决萣性因素但要入门还是必须的。

对经验要求1-3年的占了大数,个人认为一来是这个阶段的人跳槽最多二来是目前创业公司较多,两者慥就这个比例

阿里巴巴,这个不用说了 良诺科贸不太清楚,位置在北京而联想利泰则是联想集团成员企业,其前身是成立于1996年的联想集团研发部软件开发团队

职位描述中,“团队”这个词出现的比重最大我们的工作中离不开团队。与技能有关的依次是设计测试,数据库java,linux等等

行业领域情况,移动互联网真的很火

PHP是最好的语言?既然比java还多出20个?其实很多人都应该会python可能是工作上作为主要开发语言的需求量不大,导致python的职位数量是倒数

看情况北京的公司规模比其他城市都要大,总体来看创业公司还是居多。

技术类笁作薪酬普遍都比较高这里没有做一个区间分析,有兴趣的可以分析一下以后有时间我在重新做一做。

职位诱惑中五险一金被提到嘚次数最多,这应该是标配才对不是诱惑。。

因为我在广州所以把广州对python的经验要求和薪酬比例分析出来看看。

3.对拉勾网上面的职位信息进行爬取


这是部分职位.....

这是爬下来的数据...




对于每一个职位而言如何能迅速了解其背景呢?

简单来说呢就是在抓取每一个职位职位数据,对其进行一系列的分析分词、统计词频,生成排名前20的热度词...

这是拉勾网的职位要求...

下面以[数据挖掘]岗位为例进行试验...

1.这是抓取的所有详情页数据

可以看到“深度学习”、“机器学习”、“算法”是最热门词汇,而Deep Learning常常使用的语言为C++和Python应用领域最多的是计算機视觉。常被提及的是卷积神经网络(CNN)框架方面则为Caffe(虽说框架用什么无所谓,但还是有点好奇2017年了为什么不该是TensorFlow).

对于NLP岗位“算法”和“机器学习”依然是最热门词汇,编程语言则提及最多的是Python和C++

在综合了所有“数据挖掘”岗位招聘要求数据之后,经过分析“數据挖掘”、“机器学习”、“算法”是常被提及的热度词。数据挖掘岗位对编程语言的要求则为Python和Java毕竟有Hadoop/Spark等成熟的生态体系。

作为算法岗数据、算法、数据挖掘、个性化理所应当是热门词汇。

移动开发则更偏向经验、架构、项目、设计模式

5.留学论坛的数据分析:

托福樾低,被拒的概率越高,低托福逆袭常春藤的例子也比较少...托福越高,被录取 的概率也相对更高。托福在 102 分及以下时,被拒的人几乎都比录取的人哆,但托福 大于 102 分时,录取的人几乎都被被拒的人多而想申请藤校的同学也可以看出,托 福大于 102 时,藤校申请者的托福分数远高于平均水平。从數据上看,申请藤校的同 学托福过 104 就已经高于其他申请者的平均水平了

接下来我们来分析托福单科分数。这是托福听力分数的分布图,我们特地把 Econ/MFE, 法学与常春藤申请者的托福听力分数做了单独分析经济金融类专业的同 学托福听力最多的竟然是...竟然是...满分!在高分段(27-30)也是常春藤申请同学保 持领先。听力大于 26 分就比很多人更有优势了

而托福的阅读水平,经济金融类的同学也是遥遥领先,满分 30 分依旧成为了众数。而 中國申请者托福阅读水平不得不说真的是高,大量集中在(28-30)范围内中国学生 的英语阅读看了不是大问题...毕竟是做完形填空长大的...

藤校申请者还昰都是高分狂魔呢...

我们来看中国学生最头疼的托福口语成绩分布。刚开始看到这图的时候吓一跳,以为 用了假的数据然后在网上翻看托福ロ语评分标准我才发现,原来托福口语评分标准 里,就没有 21 分与 25 分这两个分数。(source: )

在确认了数据的有效性后,我们发现(22-23)是大部分申请者的众数,口语岼均水平 确实需要加强不过 Econ/MFE 的同学口语成绩众数是 24 分,因此口语成绩的进步空 间还是很大。也看得出常春藤申请者的口语水平十分强势,高汾段大有人在一般口 语大于 22 分录取就具有优势了,Offer 数也会比 Reject 数多。口语大于 23 分就比很多 人领先了

写作分数相对比较分散,集中在(24-28)之间。Econ/MFE 类嘚同学们受我一膜,众 数在 28 分Ivy League 在高分段也是保持领先。写作大于 26 分就是一个不错的成绩 了所以写作也是中国学生考托的刷分大坎,一定要過啊。

分就已经大于平均水平了

如果想了解投资数据,IT桔子绝对是一个很好的选择和朋友一起合作了这个小项目,利用python爬取IT桔子上的投资公司数据包含第一层的投资公司名称,投资公司介绍投资次数,投资领域及第二层的投资组合等字段。先上个临时域名数据掛在了这个上面,感兴趣的朋友可以去玩一下感谢远在伦敦的 

提供爬虫支持,感谢@piupiu(他知乎是个空号直接放他的个人网站了)和我一起把這个项目做完。整个项目从0-1进行设计纯手写,涉及html、angularjs、d3.js等语言数据获取为python。


数据截止至共获取投资公司2063个。

1.利用D3.js做了一个拓扑图草圖


先利用D3.js做了一个拓扑图草图把所有的投资机构关系理顺,投资次数越多代表该机构的气泡半径越大具有共同投资关系的投资公司之間会存在连线,共同投资次数越多连线越宽很明显的国内投资机构和国外投资机构自然分成两个聚类。

3. 增加了点击气泡查看被投资公司列表

为增加交互性添加了网页端的slider,可以直接滑动筛选投资次数大于一定数值的投资机构界面颜色第一次做了统一调整。

4. 增加line chart和bar chart查看铨部投资机构或者各投资机构的投资趋势变化及在各轮次的投资次数变化

同时决定把这个项目做到用户友好,调整了整个颜色风格并添加简单文案。

因为三个人在不同的国家时间比较碎片化,目前line chart还存在一些小bug不过不影响整体使用,之后会继续完善临时域名,感興趣的朋友可以去随便玩一下


以下,即是此项目的分析结果希望能从另一个角度呈现出不一样的知乎。

以为启始按广度优先遍历各孓话题。话题的遍历深度为3解析各话题下的精华回答。

目前收集的信息共计50539个精华回答

  • 精华回答的点赞数,答案长度等;
  • 答题用户的id点赞数,地区性别,学历学校,专业等;

50539篇精华回答中有3308篇的回答者选择了匿名发布答案。

男15740女5749.是否从一个侧面印证了知乎上程序员占了很大的比例.

按答主的所在(毕业)学校统计,TOP10的学校是:


可以看出中国的顶尖高校对知乎的精华回答贡献颇多。

按答主所茬的专业统计TOP10专业是:


果然是程序猿的天堂。(上面的数据我针对“计算机”和“金融”的数据做了处理,把“计算机”“计算机科學”“计算机科学与技术”合并为“计算机”把“金融”和“金融学”合并为“金融”)

精华回答答主的雇主统计,互联网行业占了大哆数

按精华回答所获得的赞同数落在的区间,做统计

可见大多数精华回答获得的赞同数是处于0~4999范围内的。

如果按以下标准将精华回答按字数分类:

那么精华回答的字数分布如下:

作为一个对Python和C都有使用的程序员,在开发的过程中不断地领略着这两种语言的巨大差异
Python紦对开发者友好做到了极致,牺牲了性能
C把性能做到了极致,牺牲了对开发者的友好
这个项目只用了500行Python,如果换作500行C估计只能完成仩述功能的1/10吧。


因为显而易见的原因我不能公布它的具体来源……

但是获取这些文件(或者从各种各样的pdf里提取文字)真的只是这件事嘚一小部分,重要的都在如何分析这些数据比如遇到的第一个问题就是没有标注,也就是我们完全不知道这些申请者的录取结果如何這样不能直接训练一个分类器。当然某些系的网站上会有PhD学生的名单,那么如果我们想知道怎样的学生被录取实际遇到的是一个半监督学习当中的不完全先验信息聚类问题。

这和我毕业论文大概处理的是相同的情况虽然用的肯定不是这样来路不明的数据。因为毕业论攵还没写完暂时没有对这些文件处理。

我们也可以换个思路做一些其他量的统计或者回归。例如考虑学生GPA的分布,与学校的世界排洺等的关系那么至少可以为其他申请者提供一种参考:“申请该学校的有86.75%都比你优秀哦!”


最后,放几张图片是我在随手翻这些文件時找到的亮点。

(这个学生被坑惨了啊)

(虽然大家都是自己写的推荐信你们也不能太高调嘛)
(这是pdf属性里的文件标题,如果直接从word轉换或打印可能就会显示出文件名)

不知道p站()的数据算不算。

一共爬了600w的高收藏图片10w收藏以上8张,1w收藏以上1w21000收藏35w至36w,100收藏以上未计数

自认为1000以上的漏网之鱼应该不超过200张吧。

看看有没有人赞有的话我考虑下放出数据库文件(1.5G左右)。

考虑到侵权问题数据库峩就不发了,以后可能会发一些基于这个数据库的数据分析和“带你逛p站”之类的

赶出来个数据分析: 


1.教务网站(涉及模拟登录)


很多高校在入学时的教务系统登录密码是一样的,而且50%的学生到大四都不改:)(123456)
当年写的第一个爬虫用的php,因为php的curl库做模拟登录简单暴仂代码很简单,创建递归模拟登录解析成绩页面。(南理工的同学应该还记得当初风格极简的教务系统没有验证码,没有浏览器拦截cookie不加密)。
硬盘里存着懒得改密码同学的姓名学号成绩在当时是一种可怕的成就感:|


在CSTO上接了一个爬小游戏的单子细聊后了解到他們在做针对低龄青少年的游戏网站(类似4399)。
也是从那个时候才知道原来小游戏网站的swf文件都是赤裸裸的对外开放仍然记得交付的时候對方的表情,哦原来这个网站的文件都是不加密的啊,那挺简单的最后不得不悻悻地给钱走人。
由于对方站点"当时"没有做相关声明与技术拦截原则上讲通过手动方式能够获取的文件都不算违法。

3.亚文化与小清新网站


在做饥饿(StarvingTime)的时候调研过相关小众网站这些网站嘟是土豪外包,法律条款基本没有而且有些现在已经挺火了。大家没事可以爬爬数据存下来总没有坏处。


无意间发现饥饿公众号的文嶂出现在林子聪头像旁边好奇微信有做加密怎么会被爬,民间高手也太强了后来调研了一下,原来是搜狗将微信的接口买了下来造福夶众


前年暑假做神经网络,需要大量的个股数据用来训练于是爬了A股的所有数据。当时雅虎新浪等都有api,先使用雅虎资料太旧不荿功。大家可以试试

新浪没有历史数据接口。

google的中国股票数据当时也调用的新浪接口所以最终方案就是爬新浪页面,当时新浪财经的UI囿展示历史数据现在依然存在。


(对于个股也可以直接用同花顺等软件下载)

硬盘里有它六千多首歌,一辈子都够听了


7.自己写的可配置爬虫


基于python3.4有了异步访问后爬虫的效率简直了。


可以设置爬取深广度爬取规则(正则直接写在xml里),爬取对象爬取站点,爬取模式(主要是静态动态爬取还在测试)

如图是一个从某用户开始深度爬取知乎的 config DEMO,稍微改几个字段就可以爬取别的站点使用起来非常方便。
代码松耦合数据存储用的是MongoDB,所以使用的话需要先安装mongodb支持分布式,配合django+nginx开发系统工程效率可观

1已经爬取了58整个网站的数据
数据主要是联系人 手机号码 登陆时间 注册时间
然后统计每个人的发帖量
最后挖掘潜在客户 

我来简单介绍下怎么挖掘潜在客户


首先我们能发现的信息只有那么几个字段
最主要的是登陆时间 和发帖次数
根据登陆时间来判断客户关注程度 如果客户这段时间每天都登陆你的网站说明他对伱的网站的关注程度比较高
发帖次数能够说明客户的参与度 
综合这两个因素 对所有的客户进行排序
把排序考前的信息展现出来
……………………………………………………

一、爬虫抓到的数据的分析方式设想

第一,在分析数据之前我们总是带有某些特殊的目的、需求和预期想要得到的结论的这往往是一个实际的问题,可能是商业性的当然也可能是学术性的。举个栗子我们都知道,百度贴吧中总是存在各种各样的信息有一些是水军,有一些是有用的等等我的需求是,我想要写一个爬虫获取某贴吧里每天所有的帖子及其评论但是希朢过滤到垃圾信息(这样可以大大提高我的阅读效率,逛过吧的应该知道某些吧里一堆水军)。于是爬虫就是我首先要写的程序了。爬虫写好了问题来了。问题是每天24:00我抓完数据之后要怎么过滤掉垃圾信息及水军信息呢? 这是需要一种能力的我觉得这是题主想偠获得的能力。就是将商业性或者学术性的问题转化成一个可用数据分析解决的问题这是数据分析的一种能力我觉得这需要三个方面的能力:1、领域知识,就是你对要分析的问题的领域的熟悉程度;2、数据挖掘、分析算法的了解程度对于常用的分类、聚类、回归、关联等算法了解一些把;还有一些统计的方法;3、sense。这个就比较玄乎了一眼看出问题是什么。可能跟前两个方面存在共线性,但不得不承認有些人确实存在特殊的天赋。。
在此不展开说了比如,在这个栗子里我们可以采用分类的方式来解决问题,算法那就是一些分類算法了SVM、KNN、Decision Tree等等。训练一个二值分类器垃圾与非垃圾。

第二抓取到的数据不可能涵盖到我们想要知道的所有方面,而且数据的清潔性也不见得能达到所有字段都可以用于分析的程度还是举个栗子,小明想研究abcde5个问题。但是观察数据之后,小明发现数据只能支歭他要分析的abc3个问题(sign。);但是在观察数据的过程中,小明又得到了启发f问题也可以分析。于是最终,小明分析的可能是abcf4个問题。

所以数据分析也是一个trade-off的问题。我们抓取到得数据和要进行的分析之间的trade-off 
trade-off的过程就是这样,产生预期→收集、处理、观察数据→部分预期满足、部分预期受挫、数据启发产生新的预期→开始进行分析;甚至在分析的过程中还会发现前面预期的不合理性,或者收箌了进一步的启发这些都是有可能的。


最后来一个大栗子抓取了新浪微博的数据,其实前后抓取了两次keyword分别是“iphone”和“京东白条”。 两次分析的思路类似抓取的字段类似,两个放在一起说啦以“京东白条”为例来描述。


一、数据来源:新浪微博
二、抓取策略:在新浪微博搜索框进行检索,获取检索结果
1. 关于微博博文。(正文、点赞数、转發数、评论数、发布设备、发表日期、博主主页url)
2. 关于博主(历史博客书、粉丝数、关注数、性别、生日,地区、描述)
五、大家停下來想想你们认为可以做的统计与分析的维度有哪些??

六、当时做的统计与分析

1. 基本统计学:每天微博有多少的趋势图(解析趋势,还原到历史事件);性别分布;地区分布(省份级别的分析与GDP密切相关,但存在异常省份可进一步分析为何这些省份对于京东白条嘚关注有异常,为进一步的营销和白条策略做参考);累计分布(总点赞数、总转发数、总评论数排名前20%1%的博主占总博主的人数)

2. 情感汾析。 对微博正文切词然后进行情感判别。 我想了两个思路第一个基于切词、情感词典和极性词的情感判别;第二个是基于机器学习嘚(与垃圾分类类似,进行情感分类;可以训练个分类器试试)当时实现了第一个,判别了每条微博正文的情感value然后与性别、省份做叻交叉分析。。比较性别和省份上对于京东白条情感值的差别我认为,这个对于营销和产品设计是有意义的发现特定群体对于某些產品的特定情感情况。 然后为进一步的营销或者产品设计作参考把

3. 回归分析,以微博的点赞数、转发数、评论数为因变量(营销效果);以博主粉丝数、微博数、关注数、情感值和性别为自变量做回归。主要是想得到营销方面的结论大家都知道,微博营销各种存在沝军、大V等等。那么如果京东白条要找水军应该找怎样的水军呢?
结论:低调的又富有正能量的男神;

低调是说发的微博比较少的人營销效果好一些;男生好于女生;情感值高的微博好于情感值低得微博;粉丝多的优于粉丝少的。 这四条是统计学上显著的结论

如果你鼡过新榜或者西瓜数据你就觉得微信公众号的数据太有价值了,因为微信公众号是个封闭的体系如果你是广告主,你需要全面评估一个公众号才敢投放广告否则一个几十万的广告打水漂后悔莫及

如果你能对公众号进行全面的诊断,分析公众号最近的发文次数、阅读量、評论、点赞等数据还有公众号阅读监控,因为有些公众号喜欢通过刷阅读来蒙骗广告主

比如某篇文章的阅读增量曲线在凌晨的时候突嘫猛增,你说正不正常

如果这些数据你能爬下来当然非常有价值了。

没有技术思维的销售不是好财务

看过了回答前几名的答案感觉都挺高大上的,不过有点过于粗暴直接图文并茂就来了,并没有认真看题主关切的点一:应该搜集哪方面的数据,也就是说哪些数据会仳较有价值(方向、方向、方向);二:数据分析出来了该如何创造价值,也就是带来回报(回报、回报、回报


一、我们先拿企业囷事业单位来分析

一个企业,不管是实体企业还是互联网企业大都会有这几个方面的数据,企业基本信息、招聘、网站、股东结构、管悝层结构、借贷情况、专利情况、诉讼、信用记录等围绕这些都可以做文章,比如说在信息需求还没有被像现在这么大的时候一本黄頁拿在手上,都如获至宝它解决了企业基本信息和联系方式的不对称。所以最早做黄页的人赚到钱了比如我们的马云先生。到今天信息已经很丰富了,只要你存在互联网上多多少少都会留下痕迹,不管是情缘不情愿、有意无意这个时候,信息整合就变得非常重要也满足了很多的需求。比如投行的客户经理要调查企业的资质、信用、股东结构等都需要深度的数据分析带来支撑。再譬如市场经理哏一个项目在没有跟对方接口人联系的情况下,自己完全可以在网上摸查一下企业的最新动态比如招聘、比如股权变更、注资扩大、經营范围变更、有败诉、有不动产抵押等等。都可以为接下来的跟踪和进一步的谈判增加筹码以及做到知己知彼。
当然这方面价值的挖掘已经有很多先行者在做了,而且做得很好比如企查查、企信宝、天眼查,目前就我个人而言企信宝用的最顺心应手,不仅免费洏且层层筛选的功能强大,最良心的是企信宝的数据更新非常快企查查作为先行者,在信息更新速度上落后了。
这个是企业层面的数據价值挖掘当然还有很多,我没有想到的细分领域比如“采购、招标、保险缴纳、员工福利”等。
ps:企业或者事业单位对数据的需求昰永远都在的好的深度分析的数据那更是有价值的。如何做的比同行更好我觉得有这么几点。1:更新速度一定要快;2、细分别人尚未開发的领域;3、产品设计一定要人性化比如筛选智能,比如移动端app的使用体验等


二、我们再来拿个人分析。

个人不同于企业个人的數量级比企业那是大得多得多的,个人的需求一旦上来那将是井喷式的。我们可以想象下国内有很多电商平台,面对企业的面对个人嘚都有很多比如化工行业领头羊“中国化工网”,它做的再牛逼做的再品牌悠久,毕竟面对的客户群体狭窄决定了上限不高反观国內某宝,每天产生多少利润就可以理解个人的数据需求一旦被打开,那将是无法想象的
我们再来看个人都有哪些需求,高考填自愿时家长苦苦思考,该给孩子抱一个什么有“钱”途的专业通常情况下,都是根据自己的人生经验或者亲戚朋友的建议拍脑袋决定的假洳有一个数据它搜集了各大招聘网站的信息。分析出来了近3年最热门的岗位,以及平均薪水最高的岗位以及分别要求雇员会哪些技能。我想家长做决定肯定会更快一点的同样,在我天朝股民朋友那是很多的假如有大数据能分析出整体股市的规律以及个股的特点,那吔是件振奋人心的事当然,在我天朝股票从来都是拿不住规律的。被你找到规律了游戏还怎么玩~ 依靠这个逻辑赚钱的,比如同花顺、大智慧等再比如旅游行业,很多人都会想什么时候出行性价比最高,同样可以根据近3年各大旅游网站的数据来分析甚至可以根据丅方的评论分析出哪些景点符合你的预期。


数据如何转换成回报--盈利模式探讨


有流量和粘度,网站就不怕没有盈利这个观点到今天依嘫没有过时。说到底

腾讯互动娱乐事业群的主营业务昰游戏所有腾讯游戏都是由这个事业群做的,估计很多人都玩过像《英雄联盟》、《全民突击》等。小编所在的部门叫运营部负责所有腾讯游戏的技术运营工作。

简单解释一下什么叫技术运营工作,这里包括了几个部分:运维营销开发,数据分析和数据挖掘用戶运营(所谓用户运营,不是传统的客户服务是一些高端的用户运营。)

比如说在腾讯游戏上一年花八万就是小编们的VIP,小编们有专屬的服务经理对接就像银行的VIP用户一样。这里就不展开了重点说说小编所负责的运维管理工作吧:

如上所说,小编们所负责的运维工莋是运营部的一部分工作。小编们现在运维了几百款游戏而且数字还在快速增长,特别手游加入以来每年都有一两百款。

简单介绍┅下腾讯游戏运维团队的发展历程:小编们团队是2003年随着腾讯代理《凯旋》游戏而成立的发展到2005年的时候,小编们做了一件事情就是DO汾离,DO分离的概念前些年提得比较多现在大家好像不再提了。回头来看小编们觉得DO分离是很有必要的,因为开发跟运维需要具备的核惢能力是不同的

接下来,在2006年的时候小编们做了QO分离意思就是小编们把质量管理团队(QA)和运维分离开了,这个后面小编会再讲一下随着团队进一步扩张,业务进一步增加2007年的时候小编们把DBA专业团队分离出来了。

到2009年的时候发现业务发展很快老板不给小编们这么哆人,怎么办光靠人去填的模式已经运行不下去了,所以当时成立了运维开发团队专门建设运维工具。同时在2009年小编们还成立了一个內部安全团队这个团队可能很多公司都没有,比较特殊

因为大家知道游戏行业,有些游戏类道具非常值钱说不准哪个同学手一抖给洎己加个几十万,所以小编们成立了内部安全团队做安全监控,其中也包括权限控制大家都知道,自动化系统权限控制非常重要如果这个没控制好就会出现灾难性后果。

时间到了2012年小编们开始提倡运维转型,鼓励运维向运维开发转型让运维自己开发所需的工具来實现自动化。现在小编们提倡运维服务化和平台产品化,这个后文会提到

接下来,小编从文化、组织、人、流程、工具这几个维度分享一下运维管理的点滴经验

运维文化:当一个团队规模较大时,例如小编们团队有两三百人的规模,这个时候小编们可能需要一些文囮层面的东西来统一大家的思想让大家在行为上按照小编们的文化来思考和执行。

小编们目前提倡的文化叫“运维四化”:服务化、標准化、自动化、产品化。标准化和自动化大家都比较好理解小编就不讲了。重点强调一下小编们为什么提出运维的服务化

运维的本質到底是什么?

小编从2002年开始做运维一直到现在,都算是在运维行业里摸爬滚打以前,小编觉得做好发布变更、故障处理让业务保歭运行稳定就是运维的价值,但通过这几年的思考和实践小编觉得那是不够的。

那么运维的本质到底是什么呢小编觉得是服务,是服務于业务因为运维是用技术解决业务问题,运维的价值要依托于业务才能体现

运维不是因为技术高深,或者管理了几万台服务器而很犇逼也不是能玩转很多开源工具而很牛逼,这都不是运维的关键

小编提一个观点:对于运维来说,服务第一技术第二。运维技术再犇如果不能服务于业务,帮助业务取得成功那价值也是有限的。那么怎样服务业务呢小编们总结了四点:

1.贴近业务:就是小编们一萣要与业务走得比较近,保持信息的畅通

2.理解业务: 要知道业务目标是什么,用户群是什么商业模式是什么样的。之前小编见过很多運维甚至在公司做了半年、一年,还不知道所运维的业务的商业模式是什么这样的话,小编们怎么能有针对性地提供服务去帮助业務成功呢? 理解业务还意味着要站在业务运营的角度思考问题而不仅仅站在运维的角度思考。

3.挖掘需求背后的价值:小编们经常会收到運营人员提出的需求在理解业务的基础上,小编们要挖掘这些业务需求背后的价值比如说运营人员让发一个版本,做为运维小编们昰不是把这个版本发布完就OK了呢?

肯定是不够的小编们还要去看业务发这个版本的目的是什么?可能是为了拉新用户也有可能是做个活动去拉收入,或者是修复bug

每一个版本的目的不一样,运维所做的事情是可以不同的比如这个版本是拉新用户,小编们把版本发布完鉯后还可以采集更多的数据,去帮助运营人员分析看是不是达到了拉新用户的目的。或者协助运营人员分析这个版本的用户体验对於拉新用户是不是有瓶颈。这都是运维可做的事情也是业务运营很需要的事情。

4.扩展服务价值:着眼于业务和服务小编们可以不断挖掘到新的价值点,扩展运维服务的价值

当然了,这里绝不是说技术不重要优秀的运维服务需要强大的技术来支持。举个例子你想协助运营人员做用户体验的分析,这需要较强的技术能力来支撑因为像上述的版本数据分析对实时性的要求很高,如果你没有及时分析出來错过了运营时机可能就来不及调整了。

可以说业务视角和服务意识决定了运维服务可以拓展到哪里,而技术能力则决定了这些服务朂终可以实现多少

前文讲了小编们的历程,在2009年小编们做了一些组织分工,小编们DBA团队开发团队,安全团队都从这里分离出来了

這里想分享的经验是:当团队和业务发展到一定规模的时候一定要考虑到专业化分工,业务和团队规模小的时候没必要分的太细因为业務场景对专业性的要求可能不高,随着业务发展和团队变大专业性的要求就高了。

所以小编们现在的内部划分成5个角色第一个角色是運维规划。大家可以认为它是运维的PM他起到的作用是充分理解业务需求,挖掘需求背后的价值同时他也熟悉运维内部的各种资源,可鉯协调各种资源来满足业务的需求这些运维规划都是从运维成长起来的,懂运维

第二个角色业务运维,这个就不讲了大家都清楚。

苐三个角色DBA大家都知道DBA的重要性,他们最重要的职责之一就是要保证数据的安全一个业务,就算是遇到像携程这次的情况就算全部線上环境都没有了,但是只要数据还在业务都还是可以恢复的,但如果连数据都找不到了那就真完蛋了,所以DBA一定是独立的一定要保证数据是万无一失的。

系统运维这个角色也不说了大家也比较清楚。

还有就是运维开发的角色小编们觉得运维开发不是传统的开发,运维开发首先是运维其次才是开发,他们需要站在运维视角看问题的站在运维视角开发工具给运维用。

关于人员管理和培养体系

组織里最重要的是人在一个一定规模的团队里,建立人员的成长和培养体系是很重要的尤其像规模到几百人的时候,小编们怎么样保证團队里的同学们具备相应的能力和成长空间

在小编们团队里,有一套运维的成长体系运维同学希望从事管理或者协调方面的工作,可鉯往运维规划方向发展;如果希望从事开发方面的工作可以向运维开发方向发展。

配合成长体系有一套培养体系。新人加入以后首先有新人培训。这里所培训的内容都是与运维相关的比如运维系统的培训,在新人培训里有专门的篇幅是安全意识相关的从刚入职开始就灌输安全意识。此外新人培训中还包括腾讯游戏运维血泪史,通过分享之前的教训提高新同学的运维操作意识

新人在入职以后到轉正有三个月,在这三个月中一般情况下新同学不能独立操作正式的运营环境。只能在导师的带领下操作

那怎么才能具备独立操作能仂呢?需要考运维上岗认证这个认证包括考试和评估两个环节,考试的内容大部分是新人培训的内容例如安全意识、运维操作规范等。

评估的形式是几位资深的运维现场对被评估者进行评测考察他们在各种场景的理解和反应,这些是不能通过背书本知识来回答的所鉯还是比较考验新同学的能力和意识的。

通过上岗认证后会拿到一个上岗证以前是会发一个红色的证书,现在不发实体证书了变成电孓的了。这个上岗证后面还有一个作用后面小编会讲到。

新同学转正后日常工作中会接触到很多技术培训和分享,这些大部分是由内蔀同学贡献的当然也有公司内外部的各种培训资源。

当某位同学在团队内工作了一段时间之后可能会面临成长的问题小编们会挑选出囿潜力的同学上运营规划培养班或运维开发培训班。这两个培养班分别培养运营规划和运维开发拿运营规划培养班做例子,选定的同学經过半年的培养后通过考核才能成为的运营规划通过率大概在40~60%。

运维人员的考核分为几个部分:

业务指标就是业务的一些关键性指标仳如可用性、发布效率等等,还有很多其他指标这些指标的作用是评估运维人员的基础工作完成质量,这是由QA就是前面所述的质量管悝团队统计的,不是运维自己上报的这样可以保证其客观性。

关键事件是运维自己制定的用于引导运维不断优化工作。这个关键事件烸个月定一次由运维和他的leader和运维规划三方一起制定。

举个例子小编们发现某个游戏它的发布时长过长,就可以把发布时长优化做为這个游戏的运维人员这个月的关键事件目标是把这个业务的发布时长从多少降到多少。制定关键事件的目标时比较细要求是量化的,朤底时运维根据完成情况获得关键事件的得分

例如做分享和培训都可以加分,积极参加团队建设也可以获得加分

小编们的考核思路是盡量用正向加分的方式引导,一般不扣分除非是人为失误造成业务故障。所谓人为失误指运维操作不当造成的问题小编们对人为失误歭“低容忍” 的态度,因为小编们觉得做为运维意识是非常重要的,操作时要时时刻刻秉持小心谨慎的态度抱着敬畏的心情对待运营環境。

如果出现人为失误造成业务故障的情况对于个人会有什么影响呢?

前面提到的运维上岗证的另一个作用就在这里了大家都知道違章后驾照扣分这项处罚措施挺有威慑力的,小编们吸取了经验对运维上岗证也实行积分扣分制度:运维上岗证每半年都有10分的积分,洳果出现人为失误的故障就从中扣除一定的分数如果分数扣完,上岗证就会被注销那么这位运维就需要被评估是否适合在运维岗位上繼续工作了。

当然这个扣分制度的目的肯定不是为了处罚,主要还是希望通过这种方式提高大家的操作意识避免人为失误。有的同学鈳能会问为什么不靠自动化来降低人为失误,而要用这种考核手段

这里小编想说,根据小编们的经验游戏运维是很复杂的体系,特別是团队大了以后自动化程度再高还是有很多人为失误的空间,最终的决定性因素还是人所以,意识强化和考核手段还是不可或缺的

流程的本质就是管理和控制,其实大家做的每一件事情都有流程随便做一个发布,做的这些步骤就是流程所以流程其实是无处不在嘚。

很多运维同学都觉得流程好麻烦觉得流程就是给运维的桎梏,其实用好流程是可以保护运维的小编们很多时候需要跟运营和研发配合,如果用好了流程这个工具是可以保护运维利益的

但是,流程执行起来的确有成本那怎么降低流程的成本呢?

小编觉得流程应该“隐形化”就是让流程融入到运维系统中,让运维同学不用花额外的精力去执行流程感觉不到流程的存在,让流程起到控制作用的同時尽量不降低小编们的效率。

关于工具建设的几点思考

首先小编们认为工具的建设者必须是工具的使用者, 要懂得应用场景否则的話,造出来的工具是不好用的因为在这里小编们是吃过一些亏的,刚才提到2009年小编们就建立了运维开发团队但是到2011年发现小编们工具覆盖的情况还是不够好,运维不愿意用小编们建立的是专业的开发团队,有产品经理、开发、测试但是为什么做出来的工具就不对运維的胃口呢?

小编们后来发现开发团队并不懂运维场景,虽然他们也会做很多运维需求的访谈但总是发现做出来的东西不是运维想要嘚。

所以后来小编们改变了工具开发的模式改成在运维中培养运维开发,让运维开发自己开发工具给自己用这样的话,为了降低开发荿本小编们做了蓝鲸平台,运维只要经过两周左右的培训就可以在蓝鲸上面开发工具

标准化是自动化最重要的一个基础,如果没有标准化的话自动化是不会长久的如果业务之间架构差异过大怎么办呢?可以降低标准化的维度比如小编们去实现原子操作的标准化。

了解的同学应该知道游戏架构是很不标准化的,游戏不像Web应用有很多框架模型,它没有各家厂商各做各的,因此小编们只能做原子操莋的标准化然后再在其上去组装各种场景作业。

小编们做自动化一定要打通企业内的各个信息孤岛全流程的自动化才是真正的自动化。只有都打通了在作业执行过程中才不会中断,可以实现无人值守的自动化蓝鲸平台就是这样的,它有一条ESB打通了很多外部的系统接口。运维在蓝鲸上开发工具需要打通其他系统的直接调用就行了大大提高了开发效率。

产品化:运维平台要以产品理念建设

最后小編想说的是,前面提到运维文化中有一个产品化为什么提产品化?因为小编觉得运维平台是要以产品的理念来建设的这里包括很多的層面,这里就简单提其中一点:重视平台的用户交互以前,大家觉得运维平台是内部系统能用就行,交互好不好无所谓

但是小编们發现,内部平台也需要交互优良如果交互不好的话,可能有以下负面作用:一是交互不好容易造成误操作的情况引发故障;二是交互不恏很难用的话可能会被内部用户抛弃,被新的系统或平台替代

所以,运维平台做为内部平台也需要重视用户的交互,一定要有良好嘚界面要让用户操作起来比较方便而且不容易发生误操作。

原标题:携程用户数据采集与分析系统

【作者简介】王小波携程技术中心框架研发部高级工程师,主要负责用户行为数据采集系统及相关数据产品研发设计工作之前主要从事互联网广告、RTB相关系统研发和设计工作。本文来自王小波在“携程技术沙龙——移动开发工程实践与性能优化”上的分享

一、攜程实时用户数据采集系统设计实践

随着移动互联网的兴起,特别是近年来智能手机、pad等移动设备凭借便捷、高效的特点风靡全球,同時各类APP的快速发展进一步降低了移动互联网的接入门槛越来越多的网民开始从传统PC转移至移动终端上。但传统的基于PC网站和访问日志的鼡户数据采集系统已经无法满足实时分析用户行为、实时统计流量属性和基于位置服务(LBS)等方面的需求

我们针对传统用户数据采集系統在实时性、吞吐量、终端覆盖率等方面的不足,分析了在移动互联网流量剧增的背景下用户数据采集系统的需求,研究在多种访问终端和多种网络类型的场景下用户数据实时、高效采集的方法,并在此基础上设计和实现实时、有序和健壮的用户数据采集系统此系统基于Java NIO网络通信框架(Netty)和分布式消息队列(Kafka)存储框架实现,其具有实时性、高吞吐、通用性好等优点

1、技术选型和设计方案:

一个典型的数据采集分析统计平台,对数据的处理主要由如下五个步骤组成:

图1、数据平台处理流程

其中,数据采集步骤是最核心的问题数據采集是否丰富、准确和实时,都直接影响整个数据分析平台的应用的效果本论文关注的步骤主要在数据采集、数据传输和数据建模存儲这三部分。

为满足数据采集服务实时、高效性、高吞吐量和安全性等方面的要求同时能借鉴互联网大数据行业一些优秀开源的解决方案,所以整个系统都将基于Java技术栈进行设计和实现整个数据采集分析平台系统架构如下图所示:

图2(数据采集分析平台系统架构)

其中整个平台系统主要包括以上五部分:客户端数据采集SDK以Http(s)/Tcp/Udp协议根据不同的网络环境按一定策略将数据发送到Mechanic(UBT-Collector)服务器。服务器对采集的数据进荇一系列处理之后将数据异步写入Hermes(Kafka)分布式消息队列系统为了关联业务服务端用户业务操作埋点、日志,业务服务器需要获取由客户端SDK统┅生成的用户标识(C-GUID)然后业务服务器将用户业务操作埋点、日志信息以异步方式写入Hermes(Kafka)队列。最后数据消费分析平台都从Hermes(Kafka)中消费采集數据,进行数据实时或者离线分析其中Mechanic(UBT-Collector)系统还包括对采集数据和自身系统的监控,这些监控信息先写入Hbase集群然后通过Dashboard界面进行实时监控。

(1)基于NIO的Netty网络框架方案

要满足前面提到的高吞吐、高并发和多协议支持等方面的要求我们调研了几种开源异步IO网络服务组件(如Netty、MINI、xSocket),用它们和NginxWeb服务器进行了性能对比决定采用Netty作为采集服务网络组件。下面对它进行一些概要介绍:Netty是一个高性能、异步事件驱动嘚NIO框架它提供了对TCP、UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操莋结果

图3(Netty框架内部组件逻辑结构)

a、功能丰富,内置了多种数据编解码功能、支持多种网络协议

b、高性能,通过与其它主流NIO网络框架对比它的综合性能最佳。

c、可扩展性好可通过它提供的ChannelHandler组件对网络通信方面进行灵活扩展。

d、易用性API使用简单。

e、经过了许多商業应用的考验在互联网、网络游戏、大数据、电信软件等众多行业得到成功商用。

Netty采用了典型的三层网络架构进行设计逻辑架构图如丅:

图4(Netty三层网络逻辑架构)

第一层:Reactor通信调度层。该层的主要职责就是监听网络的连接和读写操作负责将网络层的数据读取到内存缓沖区中,然后触发各种网络事件例如连接创建、连接激活、读事件、写事件等,将这些事件触发到Pipeline中再由Pipeline充当的职责链来进行后续的處理。

第二层:职责链Pipeline层负责事件在职责链中有序的向前(后)传播,同时负责动态的编排职责链Pipeline可以选择监听和处理自己关心的事件。

第三层:业务逻辑处理层一般可分为两类:a. 纯粹的业务逻辑处理,例如日志、订单处理b. 应用层协议管理,例如HTTP(S)协议、FTP协议等

我們都知道影响网络服务通信性能的主要因素有:网络I/O模型、线程(进程)调度模型和数据序列化方式。

在网络I/O模型方面Netty采用基于非阻塞I/O嘚实现,底层依赖的是JDKNIO框架的Selector

在线程调度模型方面,Netty采用Reactor线程模型常用的Reactor线程模型有三种,分别是:

a、Reactor单线程模型:Reactor单线程模型指嘚是所有的I/O操作都在同一个NIO线程上面完成。对于一些小容量应用场景可以使用单线程模型。

b、Reactor多线程模型:Rector多线程模型与单线程模型最夶的区别就是有一组NIO线程处理I/O操作主要用于高并发、大业务量场景。

c、主从Reactor多线程模型:主从Reactor线程模型的特点是服务端用于接收客户端連接的不再是一个单独的NIO线程而是一个独立的NIO线程池。利用主从NIO线程模型可以解决一个服务端监听线程无法有效处理所有客户端连接嘚性能不足问题。Netty线程模型并非固定不变的它可以支持三种Reactor线程模型。

在数据序列化方面影响序列化性能的主要因素有:

a、序列化后嘚码流大小(网络带宽占用)。

b、序列化和反序列化操作的性能(CPU资源占用)

c、并发调用时的性能表现:稳定性、线性增长等。

Netty默认提供了对GoogleProtobuf二进制序列化框架的支持但通过扩展Netty的编解码接口,可以实现其它的高性能序列化框架例如Avro、Thrift的压缩二进制编解码框架。

通过對Netty网络框架的分析研究以及对比测试(见后面的可行性分析测试报告)可判断基于Netty的数据采集方案能解决高数据吞吐量和数据实时收集嘚难点。

(2)客户端数据加解密和压缩方案

对一些明感的采集数据需要在数据传输过程中进行加密处理。目前存在的问题是客户端采集代码比较容易被匿名用户获取并反编译(例如Android、Java),导致数据加密的算法和密钥被用户窃取较难保证数据的安全性。根据加密结果是否可以被解密算法可以分为可逆加密和不可逆加密(单向加密)。具体的分类结构如下:

密钥:对于可逆加密密钥是加密解算法中的┅个参数,对称加密对应的加解密密钥是相同的;非对称加密对应的密钥分为公钥和私钥公钥用于加密,私钥用于解密私钥是不公开鈈传送的,仅仅由通信双方持有保留;而公钥是可以公开传送的非对称密钥还提供一种功能,即数字签名通过私钥进行签名,公钥进荇认证达到身份认证的目的。

根据数据采集客户端的特点对于采集数据使用对称加密算法是很明智的选择,关键是要保证对称密钥的咹全性目前考虑的方案主要有:

a、将加解密密钥放入APP中某些编译好的so文件中,如果是Java采集的话构造一个用C编写的算法用于生成密钥,嘫后借助Emen把C代码转化为Java代码这种方案有较好的混淆作用,让窃听者不太容易获取到对称密钥

b、将密钥保存到服务器端,每次发送数据湔通过HTTPS的方式获取加密密钥,然后对采集数据进行加密和发送

c、客户端和服务器端保存一份公钥,客户端生成一个对称密钥K(具有随機性和时效性)使用公钥加密客户端通信认证内容(UID+K),并发送到服务器端服务端收到通信认证请求,使用私钥进行解密获取到UID和對称密钥K,后面每次采集的数据都用客户端内存中的K进行加密服务器端根据UID找到对应的对称密钥K,进行数据解密

这三种客户端数据加密方式基本能解决客户端采集数据传输的安全性难题。

采集数据压缩为了节省流量和带宽,高效发送客户端采集的数据需要使用快速苴高压缩比的压缩算法,目前考虑使用标准的GZIP和定制的LZ77算法

(3)基于携程分布式消息中间件Hermes的数据存储方案

Hermes是基于开源的消息中间件Kafka且甴携程自主设计研发。整体架构如图:

图6(Hermes消息队列整体架构)

Hermes消息队列存储有三种类型:

a、MySQL适用于消息量中等及以下对消息治理有较高要求的场景。

b、Kafka适用于消息量大的场景

c、Broker分布式文件存储(扩展Kafka、定制存储功能)。

由于数据采集服务的消息量非常大所以采集数據需要存储到Kafka中。Kafka是一种分布式的基于发布/订阅的消息系统。它能满足采集服务高吞吐量、高并发和实时数据分析的要求它有如下优秀的特性:

a、以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能

b、高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输

c、支持Kafka Server间的消息分区,及分布式消费同时保证每个Partition内的消息顺序传输。

d、同时支持离线数据处理和实时数据处理

e、Scale out,即支持在线水平扩展

图7(Kafka拓扑结构)

我们知道,客户端用户数据的有序性采集和存储對后面的数据消费和分析非常的重要但是在一个分布式环境下,要保证消息的有序性是非常困难的而Kafka消息队列虽然不能保证消息的全局有序性,但能保证每一个Partition内的消息是有序的在用户数据采集和分析的系统中,我们主要关注的是同一个用户的数据是否能保证有序洳果我们在数据采集服务端能将同一个用户的数据存储到Kafka的同一个Partition中,那么就能保证同一个用户的数据是有序的因此基本上能解决采集數据的有序性。

(4)基于Avro格式的数据灾备存储方案

当出现网络严重中断或者Hermes(Kafka)消息队列故障情况下用户数据需要进行灾备存储,目前考虑嘚方案是基于Avro格式的本地文件存储其中Avro是一个数据序列化反序列化框架,它可以将数据结构或对象转化成便于存储或传输的格式Avro设计の初就用来支持数据密集型应用,适合于远程或本地大规模数据的存储和交换

Avro定义了一个简单的对象容器文件格式。一个文件对应一个模式所有存储在文件中的对象都是根据模式写入的。对象按照块进行存储在块之间采用了同步记号,块可以采用压缩的方式存储一個文件由两部分组成:文件头和一个或者多个文件数据块。其存储结构如下图所示:

图8(Avro对象容器文件格式)

灾备存储处理过程是:当网絡异常或者Hermes(Kafka)消息队列出现故障时将采集的用户数据解析并转化成Avro格式后,直接序列化存储到本地磁盘文件中数据按Kafka-Topic分成多个文件存储,且每小时自动生成一个新的文件当网络或者Hermes(Kafka)故障恢复后,后端线程自动读取磁盘Avro文件将数据写入Hermes(Kafka)消息队列的对应Topic和分区中。每个文件写入成功后自动删除灾备存储文件。这样能增加用户数据采集服务的健壮性和增强服务容错性

2、架构设计方案可行性分析

在相同配置的测试服务器上(包括数据采集服务器、Hermes(Kafka)集群)做如下对比实验测试:(使用ApacheBenchmark进行Web性能压力测试工具)

在不对采集数据进行业务处理的凊况下(即只接请求并做响应,不做业务处理也不存储采集数据),在5000并发Keepalive模式下均能达到每秒处理4万多请求,其中Nginx的CPU、内存消耗会尛一些测试对比数据如下:(ab参数: -k –n –c 5000)

(2)Netty对采集数据进行业务处理

Netty服务加上采集数据解析相关业务处理,以及处理后的数据写入Hermes(Kafka)消息队列可以进行简单的间接估算。如果采集服务要求达到:每秒处理3万左右请求99%的请求完成时间小于800ms的目标,则采集数据解析和存儲流程的处理时间必须在600ms以内而这两步又分为数据解析和数据存储,可以分别进行压力测试加以验证根据我们的压力测试,采集数据解析和存储也能完全满足性能要求

经以上对比实验测试表明,使用Netty服务组件收集、解析数据并直接写入Hermes(Kafka)分布式消息队列的方案初步具备鈳行性

二、相关数据分析产品介绍

基于实时采集到的用户数据和系统监控数据,我们开发了一套相关的数据分析产品产品的内容主要汾以下几部分:(1)、API和页面性能报表;(2)、页面访问和流量;(3)、用户行为分析;(4)、系统异常崩溃分析;(5)、数据实时查询笁具;(6)、采集数据排障工具;(7)、其它。其中详细分类如下图所示:

图9(数据分析产品分类)

现选取其中几个比较常见的产品做下簡单介绍:

作用:实时跟踪用户浏览记录帮助产品优化页面访问流程、帮助用户排障定位问题。

使用案例:根据用户在客户端上的唯一標识ID如:手机号、Email、注册用户名、ClientId、VisitorId等查询此用户在某一时间段顺序浏览过的页面和每个页面的访问时间及页面停留时长等信息。如果鼡户在浏览页面过程中发生了异常崩溃退出情况可以结合应用崩溃信息关联查询到相关信息。

作用:实时查看各个页面的访问量和转化凊况帮助分析页面用户体验以及页面布局问题。

p1300然后根据用户配置页面浏览路径查询某个时间段各个页面的转化率情况。如有1.4万用户進入p1023页面,下一步有1400用户进入下一页面p1201这样可推算出页面p1201的转化率为10%左右。这是最简单的一种页面转化率还有间接的页面转化率,即只匹配第一个和最后一个页面的访问量同时可以按各种维度进行条件筛选,比如:网络、运营商、国家、地区、城市、设备、操作系统等等

作用:了解每个页面的相对用户量、各个页面间的相对流量和退出率、了解各维度下页面的相对流量。

使用案例:用户选择查询维度囷时间段进行查询就能获取到应用从第一个页面到第N个页面的访问路径中,每个页面的访问量和独立用户会话数、每个页面的用户流向、每个页面的用户流失量等信息

作用:发现用户经常点击的模块或者区域,判断用户喜好、分析页面中哪些区域或者模块有较高的有效點击数、应用于A/B测试比较不同页面的点击分布情况、帮助改进页面交互和用户体验。

使用案例:点击热力图查看工具包括Web和APP端统计的指标包括:原始点击数(当前选中元素的原始点击总数)、页面浏览点击数(当前选中元素的有效点击数,同一次页面浏览多次点击累計算1次点击)、独立访客点击数(当前选中元素的有效点击数,同一用户多次点击累计算1次点击)。

作用:快速测试是否能正常采集数據、数据量是否正常、采集的数据是否满足需求等

使用案例:用户使用携程APP扫描工具页面的二维码,获取用户标识信息之后正常使用攜程APP过程中,能实时地将采集到的数据分类展示在工具页面中对数据进行对比测试验证。

作用:监控系统各业务服务调用性能(如SOA服务、RPC调用等)、页面加载性能、APP启动时间、LBS定位服务、Native-Crash占比、Java错误占比等按小时统计各服务调用耗时、成功率、调用次数等报表信息。

基於前端多平台(包括iOS、Android、Web、Hybrid、RN、小程序)数据采集SDK的丰富的自动化埋点数据我们可以对数据、用户、系统三方面进行多维度立体的分析。服务于系统产品和用户体验、用户留存、转换率及吸引新用户

我要回帖

更多关于 表格里面怎么导出一部分 的文章

 

随机推荐