欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python找寻知乎最美最帅之人

程序员文章站 2022-05-04 11:17:43
都说某乎卧虎藏龙,女网友有倾国倾城、闭月羞花之容貌,男网友有玉树临风、英俊潇洒的姿态,今日我们就来探索一番吧! 爬虫部分 我选取了某乎热度非常高的10个问题,男女兼而有之。“ 帅得惨绝人寰是帅到了哪种程度? ”,这样的问题下面该会是什么样的神颜呢,真是期待呢。 这里爬取这些问题每一个的前百页回答(毕 ......

都说某乎卧虎藏龙,女网友有倾国倾城、闭月羞花之容貌,男网友有玉树临风、英俊潇洒的姿态,今日我们就来探索一番吧!

Python找寻知乎最美最帅之人

Python找寻知乎最美最帅之人

爬虫部分

我选取了某乎热度非常高的10个问题,男女兼而有之。“ 帅得惨绝人寰是帅到了哪种程度? ”,这样的问题下面该会是什么样的神颜呢,真是期待呢。

Python找寻知乎最美最帅之人

这里爬取这些问题每一个的前百页回答(毕竟百页之后很少出现高赞回答)中的所有图片,毕竟这些问题都是一图胜千言的经典问题。爬虫的逻辑非常简单,将每个问题下的每个回答的所有jpg、png格式的图片链接存入redis,参数列表仅需复制网页上的即可,唯一需要改变的是offset,我们正是用offset参数控制翻页(每次递增5)。

def get_urls(self,offset,urls):
        
        params={
                'include': '',  
                'limit': 5,
                'offset': offset,
                'platform': 'desktop',
                'sort_by': 'default'              
                }
        r=requests.get(self.url,headers=self.headers,params=params)
        data=r.json()['data']
        for i in data:
            content=i['content']
            pic_urls=re.findall(r'data-actualsrc="(.*?.(jpg|png))',content)
            for j in range(len(pic_urls)):
                self.r.sadd("urls",pic_urls[j][0])

颜值评分

颜值评分的部分呢,我调用了旷视的api,直接利用图片的url链接便可生成包含颜值评分的json数据,而这个评分正是百分制。

Python找寻知乎最美最帅之人

data={
            'api_key':'',
            'api_secret':'',                         
            'return_attributes': 'beauty,gender',
            'image_url': image_url
              }
r=requests.post(url=self.url,headers=self.headers,data=data)
score_data=json.loads(r.text)
if len(score_data['faces'])==0:
    print("未从该图片中找到人像!")
else:
    face_num=score_data['face_num']
    for i in range(face_num):
        face=score_data['faces'][i]
        beauty=face['attributes']['beauty']
        gender=face['attributes']['gender']
        if gender['value']=='female':
            score=beauty['female_score']
        else:
            score=beauty['male_score']
        item={'image_url':image_url,
                     'score':score
                                 }
        self.db['score2'].insert_one(item)

api_key以及api_secret是需要申请的,我把所有图片都通过api得到其对应得分,并存入mongodb中,不同的问题下的图片评分存储到不同的表中。

所有图片的平均颜值评分为69.66,总体来看大概是"  "的档次,大概是ai的评分太为严格,接下来看看那些评分超过91的女生,是怎样的的靓丽风景,顺便猜猜最高评分94.396是哪一张?

Python找寻知乎最美最帅之人

下面压力来到了男生这边,究竟“惨绝人寰”有多帅?

Python找寻知乎最美最帅之人

嗯,确实,确实美,确实帅。欣赏完帅哥美女之后,想必给自己也来个颜值评分是基本操作吧?毕竟我可是和吴彦祖平均颜值评分超过85分的男人!