Python爬虫某鱼5000+小姐姐做一个颜值检测神器!

小七学习网,助您升职加薪,遇问题可联系:客服微信【1601371900】 备注:来自网站

使用最新 Python 3.10 为大家抓取斗鱼颜值区小姐姐5000+主播照片、直播间名称、主播名称和主播分类等信息并使用openpyxl存入本地Excel中。

颜值检测神器!好不好看 我说了算~

本文 将使用最新 Python 3.10 为大家抓取斗鱼颜值区小姐姐5000+主播照片、直播间名称、主播名称和主播分类等信息并使用openpyxl存入本地Excel中。 通过照片链接我们将所有的小姐姐照片下载到本地通过调用某度api做一个在线颜值检测,为每个小姐姐的颜值进行打分。最后将所有的照片按照颜值打分进行排序。

通过此案例你将学到:

python爬虫某鱼主播照片、直播间名称、主播名称和主播分类等信息; 使用openpyxl将抓取到的数据直接下载到本地; 调用某度api开发颜值检测系统; 对获取的所有照片按照颜值进行打分; 对获取的所有照片按照颜值进行排序;



今天我们的目标是爬取斗鱼小姐姐并且为她们的颜值打分。 我们的思路分为三大部分:

  1. 爬取小姐姐照片
  2. 调用api为小姐姐的颜值进行打分
  3. 颜值排行

先来看看我们要爬取的目标: 图片 再来看看我们爬取的过程: 在这里插入图片描述 最后看看我们爬取到的结果: 在这里插入图片描述 在这里插入图片描述

python爬取斗鱼主播照片、直播间名称、主播名称和主播分类等信息;

  1. 首先我们打开斗鱼主页找到分类下的’颜值’在这里插入图片描述
  2. 可以看到当前在线的所有美女信息.我们今天的任务就是将这些美女主播的照片、房间号、房间名称和主播分类存入到本地Excel并且打印出所有美女照片。在这里插入图片描述
  3. 我们F12打开浏览器模式,点击翻页可以观察到这个页码是随着反也变化的。在这里插入图片描述 并且规律如下:
    https://www.douyu.com/gapi/rknc/directory/yzRec/1https://www.douyu.com/gapi/rknc/directory/yzRec/2https://www.douyu.com/gapi/rknc/directory/yzRec/3https://www.douyu.com/gapi/rknc/directory/yzRec/4
  4. 我们打开浏览器观察所需的数据如下,它们都位于data下的rsl列表中。在这里插入图片描述
  5. 编码实现来获取浏览器响应
    url = f\'https://www.douyu.com/gapi/rknc/directory/yzRec/1\'        headers = {            \'cookie\':\'xxxxx\',            \'referer\':\'xxxxx\',            \'user-agent\':\'xxxxx\'        }#获取浏览器返回的JSON结果resp = requests.get(url,headers = headers).json()#获取每一页的120个颜值小姐姐信息girls = resp[\'data\'][\'rl\']\'\'\'[{\'rid\': 3477773, \'rn\': \'唱歌主播 无人听懂曲中意\', \'uid\': 160088008, \'nn\': \'鹿鹿酱in\', \'cid1\': 2, \'cid2\': 311, \'cid3\': 1749, \'iv\': 0, \'av\': \'avatar_v3/202104/31e0b77f8fa84f779f5e965c9ae3acf2\', \'ol\': 178516, \'url\': \'/3477773\', \'c2url\': \'/directory/game/XX\', \'c2name\': \'颜值\', \'icdata\': {\'548\': {\'url\': \'\', \'w\': 0, \'h\': 0}}, \'dot\': 2103, \'subrt\': 0, \'topid\': 0, \'oaid\': 0, \'bid\': 0, \'gldid\': 0, \'rs1\': \'https://rpic.douyucdn.cn/live-cover/roomCover/2020/12/22/fbc91f6c4baf895bc7c91e6fa299803d_small.png/dy2\', \'rs16\': \'https://rpic.douyucdn.cn/live-cover/roomCover/2020/12/22/fbc91f6c4baf895bc7c91e6fa299803d_big.png/dy1\', \'utag\': [], \'rpos\': 0, \'rgrpt\': 1, \'rkic\': \'\', \'rt\': 2103, \'ot\': 0, \'clis\': 2, \'chanid\': 0, \'icv1\': [[{\'id\': 548, \'url\': \'https://sta-op.douyucdn.cn/dy-listicon/4d1d7ef013162713c5f1f601697bcb2f.png\', \'score\': 1001, \'w\': 0, \'h\': 0}], [], [], []], \'ioa\': 0, \'od\': \'\', \'isShowUp\': 0, \'authInfo\': None}]
  6. 接下来一步就是循环获取美女主播的照片、房间号、房间名称和主播分类。
    for girl in girls:      pic_links = girl[\'rs1\']     # 所有照片链接      room_title = girl[\'rn\']     # 房间标题      room_name = girl[\'nn\']      # 房间名称      category = girl[\'c2name\']   # 主播分类      print(pic_links,room_title,room_name,category)\'\'\'https://rpic.douyucdn.cn/live-cover/appCovers/2021/03/07/7750351_20210307090509_big.jpg/dy2 这是个靓女的直播间~ Thea柒清 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2020/10/11/638575_20201011212022_big.jpg/dy2 小姨子: 幸运之神 丽亚celiahunne 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2021/03/24/7909303_20210324172547_big.jpg/dy2 有颜有才,尽在斗歌台 斗歌台官方直播间 https://rpic.douyucdn.cn/live-cover/appCovers/2020/07/27/8922441_20200727190717_big.jpg/dy2 5月15日月庆聚会 睡懵的渣皇 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2021/03/04/9384662_20210304004743_big.jpg/dy2 想要成为那个被你保护的人。 新来的恩宠 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/04/21/7fb646bba059b6a9f78b094d13fcde68_small.png/dy2 身怀绝技 百里挑一 星势力官方直播间 https://rpic.douyucdn.cn/live-cover/appCovers/2021/04/15/9737095_20210415195744_big.jpg/dy2 08年妹妹第一天直播求关注9737095 一只酸奶牛new 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2020/07/22/f865fc38018b758f92ca65413d01f611_small.png/dy2 我学会孤独 娇儿的36D吖 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2020/07/23/4125556_20200723164324_big.jpg/dy2 我回来啦!!681888 Skr丶大伟伟 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2021/02/22/1010383_20210222125342_big.jpg/dy2 双倍亲密,三倍上限,来了不想走呦~ 王羽杉abc 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/04/13/42e209e1cb9f15b27b3f40e5b3224fb4_small.png/dy2 我和我的猫都很想你 小初困了吗 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2021/05/03/8086045_20210503111144_big.jpg/dy2 时间不语,但会回答一切 豆乐乐咩 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/05/07/5b840cb58099af5f0912c716d30ded13_small.png/dy2 一条小虞er~想被哥哥带上岸 虞Oxygen 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/05/07/946df9dfa50623ac9fcb10d943d5678b_small.png/dy2 520周年庆欢迎大家来玩喔❤️Day8 林芊又 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2021/05/11/9720412_20210511195844_big.jpg/dy2 新人主播请多关照!!9720412 开心市民小邵 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/04/16/4c932e400f6e74c4fe62219013f43e7a_small.png/dy2 医生讲,你不要熬夜了 奉奉儿 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2019/04/08/5271808_20190408082749_big.jpg/dy2 消费查询,恭喜空空荣升超帝 酥小A 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2020/05/12/2243218_20200512082834_big.jpg/dy2 哦 那我走呗 八分饱ww 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/04/29/cfd9f29d923b5e4159ef3e77402fde76_small.png/dy2 每一天都期待能和你见面 9775190 尤田T 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2021/02/06/9064900_20210206191857_big.jpg/dy2 今天是你喜欢的美女子吗 玉玉子sway 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/04/09/c90f603c9305f85dc5efbd3d24134ea6_small.png/dy2 四川新主播略略略略略略 翼遥遥丶 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2020/11/26/4566947_20201126195330_big.jpg/dy2 可可爱爱 没有脑袋 4566947 关晓羽 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2020/06/20/4652236_20200620175813_big.jpg/dy2 身高170长发及腰的武汉小姐姐~~ 小火郭丶 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2019/04/01/6df644b55178d672257996028418bf3b_small.jpg/dy2 2021 一切顺利~ 林cute 颜值https://rpic.douyucdn.cn/live-cover/roomCover/2021/04/06/2796d0dfbbaff1b4a7f537829658b6a4_small.png/dy2 小猪开播了 金善智 颜值https://rpic.douyucdn.cn/live-cover/appCovers/2021/04/27/6532591_20210427105108_big.jpg/dy2 随意来去 开心就好 林以安阿 颜值.........\'\'\'
  7. 我们将获取到的这些信息先存入到Excel中。
     ws = op.Workbook()  wb = ws.create_sheet(index=0)  wb.cell(row=1, column=1, value=\'照片链接\')  wb.cell(row=1, column=2, value=\'房间标题\')  wb.cell(row=1, column=3, value=\'房间名称\')  wb.cell(row=1, column=4, value=\'主播分类\')  ws.save(\'斗鱼颜值.xlsx\')
  8. 然后我们再定义一个专门保存图片的函数down_dy()。
    def down_dy(save_pic):    count = 0    for num,(pic_img,pic_name) in enumerate(save_pic):        r = requests.get(pic_img)        pic = r.content
        try:        with open(\'./pictures/{}.jpg\'.format(pic_name), \'wb\') as fin:            print(f\'正在爬取第{count}张图片\')            fin.write(pic)            print(\'{}.jpg----下载成功\'.format(pic_name))    except:        print(\'下载失败!\')
  9. 最后一步,因为我们要获取的小姐姐照片总共有6页,所以我们定义page变量来获取全部页数的小姐姐照片。 最终效果如下: 在这里插入图片描述

调用某度api开发颜值检测系统;

百度开源的人脸识别接口,通过上传人像图片可以返回颜值打分,年龄等信息;

今天我们看看如何使用这个接口实现一款Python颜值打分神器。

  1. 首先我们打开某度智能云-找到人脸识别 在这里插入图片描述
  2. 点击立即使用,然后选择创建应用。 在这里插入图片描述 在这里插入图片描述
  3. 填入必须参数之后即可自动生成AK和SK(clientid 为官网获取的AK, clientsecret 为官网获取的SK) 在这里插入图片描述
  4. 请求URL数据格式,向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成 在这里插入图片描述
  5. 所以第一步我们是用上面的python代码生成我们所需的access_token
    # encoding:utf-8import requestsfrom icecream import ic# client_id 为官网获取的AK, client_secret 为官网获取的SKhost = \'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=GD9bcCHcQETq37OdxwImqH6X&client_secret=tbtX8c5GG7BGkSXe874LLVtaOi3exAQN\'response = requests.get(host)if response:    ic(response.json())\'\'\'ic| response.json(): {\'access_token\': \'24.cc3e7b026490d25129eb65d8f7adc70a.2592000.1648793474.282335-25674718\',                      \'expires_in\': 2592000,                      \'refresh_token\': \'25.36c464a8fbd78c59bc6db8442c6862cd.315360000.1961561474.282335-25674718\',                      \'scope\': \'public brain_all_scope vis-faceverify_faceverify_h5-face-liveness \'                               \'vis-faceverify_FACE_V3 vis-faceverify_idl_face_merge \'                               \'vis-faceverify_FACE_EFFECT vis-faceverify_face_beauty \'                               \'vis-faceverify_face_feature_sdk brain_face_scene_scope wise_adapt \'                               \'lebo_resource_base lightservice_public hetu_basic lightcms_map_poi \'                               \'kaidian_kaidian ApsMisTest_Test权限 vis-classify_flower lpq_开放 \'                               \'cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base \'                               \'smartapp_mapp_dev_manage iop_autocar oauth_tp_app \'                               \'smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify \'                               \'smartapp_opensource_openapi smartapp_opensource_recapi \'                               \'fake_face_detect_开放Scope vis-ocr_虚拟人物助理 idl-video_虚拟人物助理 \'                               \'smartapp_component smartapp_search_plugin avatar_video_test \'                               \'b2b_tp_openapi b2b_tp_openapi_online\',                      \'session_key\': \'9mzdWBOhzPMLX7G1V6B8Tsp9nrv1yjuFBxcP98asOgonK1N8yaWUah0XetLBqnJ/lhM9bctoAjfHOHOuw8JGNtuQeddKNA==\',                      \'session_secret\': \'b8618a53db61df35c8a74eb2f2190fcd\'}\'\'\'

    可以看到在我们获取信息的列表中已经有了access_token,我们直接将其打印出来

    注意:access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token;

    接下来我们使用示例的请求代码来发送url 在这里插入图片描述 在这里插入图片描述

  6. 传入必要参数代码整合如下,接下来我们就可以传入图片来测试了。

对获取的所有照片按照颜值进行打分;

颜值评分我们首先要识别图片检测人脸:

  1. 我们先来测试单张图片:读取图片后可以看到获取到了很多的参数值。其中beauty的值,这就是我们的颜值评分
    \'\'\'人脸检测与属性分析\'\'\'request_url = f\"https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token={token}\" # 传入获取到的token值params = {          \'image\': \'img_base64\',  # 读取图片          \'image_type\': \'BASE64\',          \'face_field\': \'beauty\',}headers = {\'content-type\': \'application/json\'}response = requests.post(request_url, data=params, headers=headers)ic(response.json())
  2. 所以最终的颜值获取方式如下:
    # 颜值评分beauty = response.json()[\'result\'][\'face_list\'][0][\'beauty\']\'\'\'ic| beauty: 73.06\'\'\'
  3. 接下来我们再测试多张图片评分。我们需要使用os模块获取多张图片 for file in files: img_file = \'pictures\\\\\' + file img_name = file.split(\'.\')[0] f = open(img_file, mode=\'rb\') # 转base64 img_base64 = base64.b64encode(f.read()) # 调用评分函数 beauty = get_beauty(img_base64) print(f\'主播{img_name},颜值评分是{beauty}\') \'\'\' 主播7z流川枫,颜值评分是71.43 主播Ai田幸儿,颜值评分是59.85 主播Amo柠檬C,颜值评分是68.91 主播April小满,颜值评分是84.38 Traceback (most recent call last): File \"U:\\Python\\pycharm+\\斗鱼\\test.py\", line 46, in <module> beauty = get_beauty(img_base64) File \"U:\\Python\\pycharm+\\斗鱼\\test.py\", line 35, in get_beauty beauty = response.json()[\'result\'][\'face_list\'][0][\'beauty\'] KeyError: \'result\' \'\'\' 在这里插入图片描述

我们的多张图片评分在检测图中报错如上,这是什么原因呢?

我们的人脸识别靠的是150个像素点,但是图片中有时候小姐姐会戴口罩或者捂嘴笑或者是照片中有一个小宠物等等原因都会间接的

影响我们的人脸识别。 在这里插入图片描述 为了避免此问题我们可以使用try-catch将该异常进行捕获,

这样一来我们不但可以清楚的知道那些图片是无法正常读取的而且不会产生错误导致程序中断了

```try:    beauty = response.json()[\'result\'][\'face_list\'][0][\'beauty\']    return beautyexcept:    return \'人脸识别失败!\'\'\'\'主播7z流川枫,颜值评分是71.43主播Ai田幸儿,颜值评分是59.85主播Amo柠檬C,颜值评分是68.91主播April小满,颜值评分是84.38主播Asta昕昕,颜值评分是74.33主播A柠檬女孩,颜值评分是人脸识别失败!主播baby1218,颜值评分是人脸识别失败!主播Babyjojo鬼鬼,颜值评分是77.95主播BOA茶宝,颜值评分是46.77主播Cc小懒猫,颜值评分是62.52主播ch朵儿,颜值评分是69.5\'\'\'```

对获取的所有照片按照颜值进行排序;

最后一步我们将评分后的颜值小姐姐进行排序操作,提起排序想到了什么?对就是列表自导的sort方法!

我们要将所需参数主播姓名和颜值评分放入列表当中然后使用sort方法进行排序输出,最终结果展示如下:

为了人机交互更加友好,我们加上tqdm进度条如下:

for file in tqdm(files[:20]):    img_file = \'pictures\\\\\' + file    img_name = file.split(\'.\')[0]    f = open(img_file, mode=\'rb\')    # 转base64    img_base64 = base64.b64encode(f.read())    # 调用评分函数    beauty = get_beauty(img_base64)    # 颜值排名    if beauty != \'人脸识别失败!\':        dit = {            \'主播\': img_name,            \'颜值\': beauty        }        # 字典添加到空列表        lis.append(dit)lis.sort(key=lambda x:x[\'颜值\'], reverse=True)num = 1for index in lis:    print(f\'颜值排名第{num}的主播{index[\"主播\"]},颜值评分是{index[\"颜值\"]}\')    num += 1\'\'\'0%|          | 0/100 [00:00<?, ?it/s]正在识别人脸,颜值检测中......100%|██████████| 100/100 [00:56<00:00,  1.76it/s]颜值排名第1的主播April小满,颜值评分是84.38颜值排名第2的主播Ice美黛,颜值评分是81.98颜值排名第3的主播Fay清漪,颜值评分是81.48颜值排名第4的主播Babyjojo鬼鬼,颜值评分是77.95颜值排名第5的主播Dy秦薇薇,颜值评分是76.33颜值排名第6的主播Asta昕昕,颜值评分是74.33颜值排名第7的主播Cic小野猫,颜值评分是73.06颜值排名第8的主播7z流川枫,颜值评分是71.43颜值排名第9的主播ch朵儿,颜值评分是69.5颜值排名第10的主播Ai田幸儿,颜值评分是59.85颜值排名第11的主播BOA茶宝,颜值评分是46.77颜值排名第12的主播D响叮铛,颜值评分是46.25\'\'\'

好了本次的分享就到此结束了! 文章从网站数据的爬取到最终的本地保存再到最后的调用百度api实现颜值检测有兴趣的小伙伴们可以试试。

小七学习网,助您升职加薪,遇问题可联系:客服微信【1601371900】 备注:来自网站

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站(邮箱:1099252741@qq.com,备用微信:1099252741),本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。