Pandas数据分析实战案例之青春有你2(获取人物名称与头像)

Pandas数据分析实战案例之青春有你2

看前须知:如果有需要借鉴的地方的话,可以把 导出数据下载图片 的地址改掉。除此以外,可能定义函数的时候里面的 获取资料地址有误 ,会显示404,在文章末尾处会附上相应解决方法。

任务:

  1. 获取参加鹅厂比赛小姐姐的姓名
  2. 获取小姐姐们的头像图片

代码如下:

1. 导入所需库

# 导入库
import pandas as pd
import requests
import json

2. 接下来是定义从爱奇艺平台获取信息的一个函数:

def get_aqiyi_infos():
    """
    获取资料地址:http://www.iqiyi.com/h5act/generalVotePlat.html?activityId=373
    """
    # 获取url
    url = "https://vote.iqiyi.com/vote-api/r/getMergeVoteInfo?voteIds=0896558730010825&sourceId=1&uid=&sign=7461535834340ff3861fc4e1bf73cbaf"
    
    # 添加headers
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'
    }
    
    # 发起请求
    response = requests.get(url, headers=headers)
    
    # 解析请求--解析成字典
    json_data = json.loads(response.text)
    
    # 提取选手信息——使用字典索引的方式
    player_infos = json_data['data']['0896558730010825']['childs'][0]['options']
    
    # 提取信息——利用for循环
    rank_num = []
    names = []
    images = []
    
    for i, j in enumerate(player_infos):
        rank_num.append(i+1)
        names.append(j.get('text'))
        # images.append(j.get('picURL'))
        images.append(j.get('picUrl'))
        
    # 保存信息
    df = pd.DataFrame({
        'rank_num': rank_num,
        'names': names,
        'images': images
    })
    
    return df

获取请求头获取url 的方法在文末位置。

3. 接下来可以下运行一下函数:

# 运行函数
df = get_aqiyi_infos()

4. 导出数据

# 导出数据
df.to_csv('E:/学习文件/Python数据分析/爱奇艺选手信息.csv', index=False)

5. 下载图片

# 下载图片
for name, image in zip(df['names'], df['images']):
    #请求图片url
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'
    }
    r = requests.get(image, headers=headers)
    # 创建新的图片
    f = open('E:/学习文件/Python数据分析/青春有你2photo/{}.png'.format(name), 'wb')
    # 写入图片内容
    f.write(r.content)
    # 关闭
    f.close() 

发现问题:

1. 在存档的文件中并没有图片信息

在这里插入图片描述

2. 运行后报错

MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?

在这里插入图片描述
在这里插入图片描述

解决问题:

这个其实也是由于自己的粗忽大意造成的

  1. 首先,出错的位置如下图所示在这里插入图片描述
  2. 我们要提取的地方如下图所示在这里插入图片描述
  3. 总结应该是picUrl,而不是picURL。

获取资料地址方法

  1. 在浏览器搜索爱奇艺,进入官方平台后,搜索青春有你2可以进入如下页面,注意右下角的二维码在这里插入图片描述
  2. 将二维码图片另存为随便位置即可
  3. 在浏览器上输入网址http://cli.im/deqr
  4. 将保存的二维码图片拖入即可生成网址静态码

请求头获取方法

  1. 打开网页——开发者工具——右键检查——导航栏处点击Network——CTRL+R进行刷新
  2. 一般是点击XHR,按照下图找到请求头
    在这里插入图片描述

url获取方法

与上述获取请求头的方法一致,如下图所示
在这里插入图片描述


版权声明:本文为qq_45804925原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。