写在前面
如果你不会 python ,不会爬虫,甚至完全不会编程的话,建议你先去看看这个系列博客的前两章。否则就算看完了这一篇,你也不知道怎么爬取竞品的数据。
产品经理想要什么数据?
作为产品经理,我们经常要面对很多数据。比如自己产品的各种用户量、 PV、UV、DAU ···,然后根据这些数据做出相应的产品策略调整。
除了这些数据之外,我们还会想要一些其他的数据,比如——竞品的数据
有一些竞品的数据是公开的,可以通过各种途径查到,但是那些数据主要在战略层面具有意义,在一些细节上没什么参考价值。
因此,有时候,我们需要自己通过一些方法去获取一些竞品的数据。
比如爬虫。
爬虫能获取哪些竞品数据?
之前有说,我们几乎能获得一切网站或者APP上看得到的数据。
比如说:优酷所有视频的数量、总播放量、下载量;淘宝某商品的库存量、月销量;简书某专栏文章的总数量、总阅读量、总喜欢数 ···
这些都是可以通过爬虫来获取的,一旦运行代码,程序就会自动地爬取你需要的数据。
我的初级实战经历——「在行」相关数据爬取
在行是什么?
「在行」是国内领先的知识技能共享平台。从现在开始,当你遇到任何领域的问题或是个性化的服务需求,都可以径直找到“对”的人,为你答疑解惑,出谋划策,定制服务。
我正在做的项目
我现在正在跟一群志同道合的伙伴们致力于一个“校园知识共享”以及“校园人才挖掘”的项目 「CampusSay校园说」 ,你可以把它理解成“校园版 在行+知乎”。
我需要「在行」的什么数据?
在行上有业界行家帮你答疑,校园说有学姐学长帮你指路。
今年八月的时候,我需要做一个平台的勋章系统,这个系统中各勋章的等级设定、用户分布,需要按照用户整体状况的分布比例来确定。
由于我们的项目还在刚起步的阶段,用户数据还不够成熟,于是我想看看一个成熟的竞品平台上的用户数据是什么样的。所以我需要在行上所有“行家”的“交易成交数量”分布。
知道我们需要什么后,我就可以开始了。
先找到需要的数据
我需要的数据本质是每个行家的“成交数”。
首先我先找到在行的行家列表页,发现在这里有我需要的数据,其显示为“XX人见过”。所以我知道了,在这个页面里,可以爬取到我需要的数据。
查看该页面源代码
在这个页面按F12,可以查看源代码,然后通过“选择元素”来定位到我需要的数据上,这时候就能看到这个数据相关的代码了。
正则匹配
我之前的博客有介绍到如何爬取数据,这里我用的还是很“丑陋”的“正则匹配法”。(我也正在学习一些其他的爬虫框架,但最开始的时候接触一下正则还是可以的)
根据刚刚获得的源代码,我们可以写出一个相应的正则匹配公式:
<p class="topic-tutor-count.*?<span>(.*?)</span>(.*?)</p>
通过这个公式,我们可以筛选出这个页面所有的“141”这样的数据。
对于这种简单数据的爬取,只要正则写对了,其他一般不会有什么问题。
自动翻页
我需要的是在行所有行家的数据(同一地区内),而这些数据肯定不会在一个页面显示完,因此我们要在爬取完一个页面的数据后,自动爬取下一页的数据。
要实现这个需求,只要根据页面地址的命名规律,来写一段自动翻页的代码就行。
在行列表页第一页的地址是:http://www.zaih.com/topics/ ,没有看到页数有关的命名信息。
但是我们点击下一页进入第二页,就能发现地址变成了:http://www.zaih.com/topics/?page=2 。
那么,第N页的地址,自热就是:http://www.zaih.com/topics/?page=N
所以,我们先初始化 page = 1
,要爬取的地址为 url = 'http://www.zaih.com/topics/?page=' + str(page)
。然后每爬完一页后,让 page=page+1
就行
同理,要自动切换地区等维度的方法跟自动翻页是一样的。我们在爬虫的时候很重要的一点就是要注意观察代码和地址的规律,程序员在设定它们的时候是会按照一定规律的。只有找到了这些规律,我们才能顺着找到自己需要的东西
数据获取后的分析
通过上面的方法,我们可以获得在行上所有“行家”的“交易次数”。那么有了所有行家的数据,我们就可以来分析这些数据了。
我想知道,超过 “1人见过”的行家、“5人见过”的行家···“100人见过”的行家占行家总数的百分比···以及诸如此类的数据分布情况。
那么这个实现原理就很简单了,数量达到标准,相关数据“+1”就行。我们在爬取的过程中就可以用代码来实现。这个属于最基础的编程技术,在这里就不再赘述了。
爬取结果
我把爬取的结果保存在记事本里,当然,如果要用到复杂的数据分析时,也可以直接通过 python 代码将其保存带 excel 里,并且直接进行相关数据分析的操作。或者直接用 python 的相关函数来处理数据,也OK
前面的数字就是爬取到的所有数据,后面的则是我根据这些数据得到的数据分布情况。
我爬取到了在行北京地区所有显示出来的行家数据,有近2000个。如果我们要人工去爬取这些数据的话,需要耗费很多的时间,而且容易出错。相对来说,用代码来实现,会快捷且精准很多。
同理,你也可以用一样的方法来爬取行家的评分、价格等数据,只要稍微修改一下正则就行。
亲身经历告诉你用计算机(代码)来处理数据的好处
在我刚刚接手要做勋章系统这个任务的时候,我是不会 python 和爬虫的,因此我只能人工去爬这些数据,只爬了500+就受不了了。
后来学会了爬虫后,发现500+的数据跟2000+的所反映出来的情况还是差别很大的,数据量越大的会越接近真实情况(实际上爬虫已经爬到了可以获取到的所有数据)
PS.图片里爬虫爬取的数据跟我在前面【爬取结果】里贴出来的数据有一点不一样,是因为爬取的时间不一样,中间相隔了两个月。
写在后面
看到这里,可能你觉得你依旧写不出一个这样的爬虫。因为我并没有把每一步的代码都贴出来,我在最后也不准备把所有代码都贴出来。
因为我并不准备写一个 python 爬虫的教程博客,而是一个产品经理利用这些技术来改进工作的经历分享博客。
我在这个系列博客的前两章里贴出了我学习用的其他大牛的教学博客,我觉得我也写不出比他们更好的教学博客。因此我只想跟大家分享一下我在做产品相关工作的时候,利用这项技术来改进工作的想法和思路。
无论你是不是一个产品经理,我都希望可以挤出一点时间,找一门计算机相关的技术来学习一下。相信我,利用计算机技术(包括但不限于编程),我们可以很好地改善我们的学习、工作和生活。
同时,我们还会发现很多美好的事情。
系列目录:
产品经理学Python&爬虫(一):为什么我要学Python
产品经理学Python&爬虫(二):Python基础及爬虫入门