Python爬取2万条相亲数据!看看中国单身男女都在挑什么

想必昨天的七夕节,一定是有人欢喜有人忧的一天,朋友圈里的晒照惹恼了我的一个程序员朋友,在昨晚怒爬2万条相亲网站数据,做了一次相亲男女画像

话不多说,我们今天就以某相亲网站为例子,爬取搜索页面当中所有的用户信息,包括“用户ID”、“年龄”、“城市”、“学历”、“属相”等内容,使用的工具是爬虫工具pycharm。

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

首先老规矩,爬虫之前我们先分析一些目标网页的构成,我们进入网站的搜索页面,摁下F12打开开发者工具,找到网页选项,看一下网页的Request URL和请求方式、user-agent等基本信息:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

请求方式是post,说明我们不用去源代码里找标签了,所有的数据都存放在网页的json文件当中,这倒是方便很多,我们直接通过链接直接获取API文件,不需要进行网页解析,点击HTR后点击“请求”就能看到表单数据了。

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

很显然,“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格式的用户信息,部分源代码如下:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

爬取的过程就不详细讲解了,因为这个网站还需要进行模拟登陆,所以需要登陆后将 cookie 放入爬虫的请求头中,这样便可正确访问数据。经过爬取后的数据清洗后如下:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

BI可视化分析

有了数据之后,我们下一步就是进行数据可视化分析了,这里我们把清洗好的数据导入到FineBI当中,在FineBI的主页创建Excel数据集,位置我们可以放在任意的一个业务包里:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

下一步为了能够在不改变源数据表的情况下进行数据加工和编辑,因此使用自助数据集的方式,将excel表当中的所有指标全部添加:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

在FineBI当中,我们可以对数据进行很多加工操作,比如过滤、分组汇总、新增列、排序、合并等等:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

因为我们已经在excel当中清洗过数据了,所以这次就不用进行加工处理了,直接选择创建一个可视化组件,命名为“相亲”:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

然后我们就进入了可视化操作页面,我们只需要将指标和维度拖入到横纵坐标轴上,选择对应的图表类型,比如这里选择了“柱状图”,就能自动展示出图表:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

当然我们也可以对指标和维度进行编辑,比如排序、分组、过滤等等:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

然后可以对图表进行一些优化,比如颜色、大小、标签等等,一个基础的可视化图表组件就完成了:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

结论分析

1、单身男女的学历情况分析

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

整体上看高学历的人数占比是很小的,大多数是大专和本科毕业,但是其中硕士的单身比例也非常高,因为一般来说,学历越高婚姻率越低;下面我们再看一下不同性别的学历情况:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

整体上看,女性的学历程度比起男性要低一些,大专以下的女性比例高,本科以上的男性比例高,这个也可能跟高学历的人数有关;

2、单身男女的婚姻状况

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

没想到,占比最大的婚姻状况竟然是离异,说明相亲网站上市场最大的对象是离异男女,占到了50%的比例;

我们再用性别维度进行拆解,发现整体比例是差不多的,但是男性的丧偶比例要高一下,未婚比例要比女性要低很多,说明相亲市场中未婚的还是以女性为主。

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

3、单身男女的年龄、身高情况

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

首先是年龄情况,可以看到相亲网站上用户的整体年龄偏大,主要的群体以30-40岁为主,但是男性的年龄分布出现了明显的断层,40岁-50岁的比例是很小的,但是55岁以上的比例又远超女性,看起来大龄剩男都是因为离异或者丧偶;

而女性在55岁之前的单身比例都比较高,55岁之后就断崖式下降了,看起来单身女性是个在各个年龄段都存在的问题啊。

下面我们再来看一下单身男女的身高情况:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

很显然,单身女性在“160cm”、“165cm”出现了两次高峰,单身男性在“170cm”、“175cm”出现了两次高峰。 据说女性不过160、男性不过175都很难找对象,看起来大家在填资料的时候,都或多或少往这两个数值上靠,整体上能看出来,个子不高确实不太好找对象。

为了更明显地看出男女身高与年龄的情况,我特意做了张分布图:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么
Python爬取2万条相亲数据!看看中国单身男女都在挑什么

4、单身男女的择偶观分析

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

这张图横坐标代表个人的年龄,纵坐标代表着择偶对象的心仪年龄高,基本上男女都呈现正相关的线性关系,但是男性明显对比自己年龄低的更喜欢,而女性则相反。

我们再来看一下单身男女对于未来配偶的条件分析:

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

果然有房有车才是大家最关心的条件,这也不能说错,因为单身年龄越大,对于生活的要求是偏高的;

5、单身男女的城市分布分析

Python爬取2万条相亲数据!看看中国单身男女都在挑什么

为了方便看出分布情况,我采用了热力地图,实际上从数据上可以看出单身数量最多的城市都是一线城市,包括:上海、成都、广州、北京、天津等地。

因为爬取的信息有限,因此分析结论不是非常深入,仅供大家娱乐,祝大家早日找到心仪对象,明年七夕不单身!