2019年脱单攻略|用Python爬取世纪佳缘美女照片,实现颜值评分

“关爱单身程序猿,人人有责”
在这里插入图片描述
周末,程序员小明一大早给我发来消息说想找一个女朋友。
在这里插入图片描述

| 数据探索

于是。。。。
我登陆了他的账号,摸索着浏览了这个网站
我准备把符合条件的小姐姐的头像爬取下来,然后给每张照片进行颜值评分,找一个颜值匹配的小仙女。

筛选条件,选择了上海地区的女生,年龄在30岁以内。
打开后,我看得也有点眼花了。。。
在这里插入图片描述
这么多,要选谁啊
在这里插入图片描述
下面进入干货内容,想直接看美女照片的后台回复【美女】获取

| 照片获取

说搞就搞,小姐姐们我来了~
在这里插入图片描述
打开网站

打开相亲网站,根据筛选条件,找到我们需要爬取的网页,获取完整的URL,P值表示页面:
https://search.jiayuan.com/v2/index.php?key=%E8%80%81%E5%B8%88&sex=f&stc=1:31,2:19.27,3:155.170,23:1&sn=default&sv=1&p=1&pt=236&ft=off&f=search&mt=d
在这里插入图片描述

网页分析
在这里插入图片描述
查看网页源码,看我们需要的照片信息存储的位置,stc是我们设置的筛选条件,从网页可以看到每张有一个存储链接,并不能直接获取照片,所以先将照片链接保存下来再一条条获取。

| 信息获取

我们从目标网站里获取到html的详细内容,这个实现起来比较简单:

urlinfo = requests.get(url, headers=headers)
urlinfo.raise_for_status()
urlinfo.encoding = 'unicode_escape'
userinfo = urlinfo.text

当我们知道html信息后,先将这些信息加载出来:

Info = json.loads(html, strict=False)#为了防止json格式问题,关掉strict

加载信息后,提取我们需要的用户信息,为了方便小明查找到对应的姑娘,这里我们获取了用户的id和用户名。

我们需要先分析信息存储格式,然后将用户信息存进列表内

girlinfo = []
for info in Info['userInfo']:     
    Infolist = []
    uid = info ['uid']
    nickname = info ['nickname']
    image = info ['image']

    Infolist.append(uid)
    Infolist.append(nickname)
    Infolist.append(image)    
    girlinfo.append(Infolist)

由于网页保存的的照片存储在链接里,我们先保存链接,然后从链接内容中下载照片:
在这里插入图片描述
这个照片获取起来很简单,直接使用requests来实现:

requests.get(url).content

导入我们需要用到的包:

import requests
import pandas as pd
import re

读取文件,获取链接:

# 读取csv文件
girlData = pd.read_csv("girlInfo.csv",names=['uid', 'nickname','image'])

url = girlData['image'][affe]
picture = requests.get(url).content
nickname = re.sub("[\s+\.\!\/_,$%^*(+\"\'?|]+|[+——!,。?、~@#¥%……&*()▌]+", "",girlData['nickname'][affe])
with open('picture/' + filename, 'wb') as file:
        file.write(picture)
print("Wonderful!")

以上是获取一张照片的实现方式,如果要获取每一张照片,直接添加For循环就可以实现啦~

| 颜值评分

小仙女们的照片已经收入囊中啦,接下来还有一步就是判断到底哪一个小姐姐适合我儿子 ,不对,是适合我兄弟。

网上搜索一下,有很多利用百度API来给颜值打分的方法。
于是来简单实现一下:
首先你需要注册官网(http://ai.baidu.com/tech/face)账号,或者使用你的百度账号,创建一个任务:
在这里插入图片描述

先检测一下男主的颜值,导入需要用到的包:

from aip import AipFace
import base64

输入你创建的应用的相关信息:

#传入你创建应用的信息
AppID = ''
APIKey = ''
SecretKey = ''
aipFace = AipFace(AppID, APIKey, SecretKey)

检测颜值:

with open('1.jpg', 'rb') as f:
    picture = base64.b64encode(f.read())
    info = picture.decode('utf-8')
imageType = "BASE64"
options = {}
options["face_field"] = "age,gender,beauty"

result = aipFace.detect(info,imageType,options)
print(result)

结果如下:
在这里插入图片描述
原谅我不厚道的笑了
在这里插入图片描述
本着匹配的原则,我给获取到的所有照片打分,然后给小明挑选了合适的小仙女:
大功告成,发给小明,他已经迫不及待见女网友了。

亲身经验告诉我,不要用这个给你女朋友颜值打分,女人对于颜值的胜负欲太可怕了

本故事纯属虚构,如有雷同,不胜荣幸

完整源码下载:公众号(Data_Groom) 后台回复「女朋友」

| 作者Info:

【作者】:A字头 【原创公众号】:数据札记倌(Data_Groom)
【简介】:这是一个坚持原创的技术公众号,每天坚持推送各种 Python基础/进阶文章,数据分析,爬虫实战,机器学习算法,不定期分享各类学习资源。
【福利】:送你新人大礼包一份,关注微信公众号,后台回复:“CSDN” 即可获取!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值