想必昨天的七夕节,一定是有人欢喜有人忧的一天,朋友圈里的晒照惹恼了我的一个程序员朋友,在昨晚怒爬2万条相亲网站数据,做了一次相亲男女画像!
话不多说,我们今天就以某相亲网站为例子,爬取搜索页面当中所有的用户信息,包括“用户ID”、“年龄”、“城市”、“学历”、“属相”等内容,使用的工具是爬虫工具pycharm。
首先老规矩,爬虫之前我们先分析一些目标网页的构成,我们进入网站的搜索页面,摁下F12打开开发者工具,找到网页选项,看一下网页的Request URL和请求方式、user-agent等基本信息:
请求方式是post,说明我们不用去源代码里找标签了,所有的数据都存放在网页的json文件当中,这倒是方便很多,我们直接通过链接直接获取API文件,不需要进行网页解析,点击HTR后点击“请求”就能看到表单数据了。
很显然,“sex”就是性别,“f”是“female”的缩写,“p”代表着页码,因为搜索页面一共有10页,所以我们需要构造一下完整的请求url:http://search.jiayuan.com/v2/search_v2.php?key=&sex=f&stc=1:11,2:18.24,3:155.170,23:1&sn=default&sv=1&p=1&f=select
当网页页码发生变化的时候,我们发现url当中只有p值发生了变化,因此只需要改变p值就能构造对应的URL。
好了,网页的构成都分析好了,下一步就要开始在pycharm当中写爬虫了,通过上面的url,我们可以获取到服务器返回的 json格式的用户信息,部分源代码如下:
爬取的过程就不详细讲解了,因为这个网站还需要进行模拟登陆,所以需要登陆后将 cookie 放入爬虫的请求头中,这样便可正确访问数据。经过爬取后的数据清洗后如下:
BI可视化分析
有了数据之后,我们下一步就是进行数据可视化分析了,这里我们把清洗好的数据导入到FineBI当中,在FineBI的主页创建Excel数据集,位置我们可以放在任意的一个业务包里:
下一步为了能够在不改变源数据表的情况下进行数据加工和编辑,因此使用自助数据集的方式,将excel表当中的所有指标全部添加:
在FineBI当中,我们可以对数据进行很多加工操作,比如过滤、分组汇总、新增列、排序、合并等等:
因为我们已经在excel当中清洗过数据了,所以这次就不用进行加工处理了,直接选择创建一个可视化组件,命名为“相亲”:
然后我们就进入了可视化操作页面,我们只需要将指标和维度拖入到横纵坐标轴上,选择对应的图表类型,比如这里选择了“柱状图”,就能自动展示出图表:
当然我们也可以对指标和维度进行编辑,比如排序、分组、过滤等等:
然后可以对图表进行一些优化,比如颜色、大小、标签等等,一个基础的可视化图表组件就完成了:
结论分析
1、单身男女的学历情况分析
整体上看高学历的人数占比是很小的,大多数是大专和本科毕业,但是其中硕士的单身比例也非常高,因为一般来说,学历越高婚姻率越低;下面我们再看一下不同性别的学历情况:
整体上看,女性的学历程度比起男性要低一些,大专以下的女性比例高,本科以上的男性比例高,这个也可能跟高学历的人数有关;
2、单身男女的婚姻状况
没想到,占比最大的婚姻状况竟然是离异,说明相亲网站上市场最大的对象是离异男女,占到了50%的比例;
我们再用性别维度进行拆解,发现整体比例是差不多的,但是男性的丧偶比例要高一下,未婚比例要比女性要低很多,说明相亲市场中未婚的还是以女性为主。
3、单身男女的年龄、身高情况
首先是年龄情况,可以看到相亲网站上用户的整体年龄偏大,主要的群体以30-40岁为主,但是男性的年龄分布出现了明显的断层,40岁-50岁的比例是很小的,但是55岁以上的比例又远超女性,看起来大龄剩男都是因为离异或者丧偶;
而女性在55岁之前的单身比例都比较高,55岁之后就断崖式下降了,看起来单身女性是个在各个年龄段都存在的问题啊。
下面我们再来看一下单身男女的身高情况:
很显然,单身女性在“160cm”、“165cm”出现了两次高峰,单身男性在“170cm”、“175cm”出现了两次高峰。 据说女性不过160、男性不过175都很难找对象,看起来大家在填资料的时候,都或多或少往这两个数值上靠,整体上能看出来,个子不高确实不太好找对象。
为了更明显地看出男女身高与年龄的情况,我特意做了张分布图:
4、单身男女的择偶观分析
这张图横坐标代表个人的年龄,纵坐标代表着择偶对象的心仪年龄高,基本上男女都呈现正相关的线性关系,但是男性明显对比自己年龄低的更喜欢,而女性则相反。
我们再来看一下单身男女对于未来配偶的条件分析:
果然有房有车才是大家最关心的条件,这也不能说错,因为单身年龄越大,对于生活的要求是偏高的;
5、单身男女的城市分布分析
为了方便看出分布情况,我采用了热力地图,实际上从数据上可以看出单身数量最多的城市都是一线城市,包括:上海、成都、广州、北京、天津等地。
因为爬取的信息有限,因此分析结论不是非常深入,仅供大家娱乐,祝大家早日找到心仪对象,明年七夕不单身!