AI智能
改变未来

利用Python发现60%以上女孩的罩杯是B,但A穿衣却是百搭且很高级

最近常听到说女生的

A

罩杯,穿衣百搭且很高级!

今天,我们就爬取京东商城某文胸品牌不同

size

的大致销售情况,来看看当前什么尺码才是主流吧!

目录

1. 需求梳理

2. 数据采集

3. 统计展示

3.1. cup分布

3.2. color分布

4. 就这样吧

5. Python学习资源

1. 需求梳理

本文比较简单,单纯对京东评论数最多的某文胸品牌不同

size

的商品评论数进行采集,然后统计出不同

size

占比

由于京东没有类似销量(或多少人付款)等数据,我们这里仅用评论数做对比维度。关于评论数的获取,我们这里就不展开介绍了。

通过在京东进行商品类型选择

内衣-文胸-适用人群 青年

,再按照评论数排序,我们可以得到排名靠前的商品列表。由于前2个都是均码无尺寸的,第3个是文胸洗衣袋(也是均码无尺寸),故而我们选择了第4个商品。

 

寻找目标品牌

然后,我们直接点击进入到第4个商品的详情页面,发现存在很多7种颜色和10种尺寸,这组合有点多啊。

为了更好的获取每件商品的评论数据,我们这里需要先获取每个商品的

productId

。于是,我们

F12

进入到开发者模式,在元素页搜索其中一个商品id最终发现了存放全部商品id的地方如下:(可以通过正则解析出来)

 

color&size

既然可以获取全部的

商品id

,那么通过

商品id

即可调用

评论接口

获取对应商品的评论数据了,我们就编码走起!

2. 数据采集

数据采集部分,先用正则获取全部的商品id,然后通过商品id获取全部商品id对应的评论数据,那么需要的数据就齐活了。

获取全部商品id

import requestsimport reimport pandas as pdheaders = {    # "Accept-Encoding": "Gzip",  # 使用gzip压缩传输数据让访问更快    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",    # "Cookie": cookie,    "Referer": "https://item.jd.com/"    }url=  r'https://item.jd.com/100003749316.html'    r = requests.get(url, headers=headers, timeout=6)text = re.sub(r'\\s','',r.text)colorSize = eval(re.findall(r'colorSize:(\\[.*?\\])', text)[0])df = pd.DataFrame(colorSize)

获取商品id对应评论数据

# 获取评论信息def get_comment(productId, proxies=None):    # time.sleep(0.5)    url = 'https://club.jd.com/comment/skuProductPageComments.action?'    params = {            'callback': 'fetchJSON_comment98',            'productId': productId,            'score': 0,            'sortType': 6,            'page': 0,            'pageSize': 10,            'isShadowSku': 0,            'fold': 1,            }    # print(proxies)    r = requests.get(url, headers=headers, params=params,                      proxies=proxies,                      timeout=6)    comment_data = re.findall(r'fetchJSON_comment98\\((.*)\\)', r.text)[0]    comment_data = json.loads(comment_data)    comment_summary = comment_data['productCommentSummary']        return sum([comment_summary[f'score{i}Count'] for i in range(1,6)])    df_commentCount = pd.DataFrame(columns=['skuId','commentCount'])proxies = get_proxies()for productId in df.skuId[44:]:    df_commentCount = df_commentCount.append({                        "skuId": productId,                        "commentCount": get_comment(productId, proxies),                        },                        ignore_index=True                        )df = df.merge(df_commentCount,how='left')

3. 统计展示

我们先将尺码中的

ABC..

罩杯部分单独成列

df['cup'] = df['尺码'].str[-1]

开始我们的简单统计展示吧

先看数据信息概况

>>> df.info()    <class 'pandas.core.frame.DataFrame'>Int64Index: 64 entries, 0 to 63Data columns (total 5 columns): #   Column        Non-Null Count  Dtype ---  ------        --------------  -----  0   尺码            64 non-null     object 1   skuId         64 non-null     object 2   颜色            64 non-null     object 3   commentCount  64 non-null     object 4   cup           64 non-null     objectdtypes: object(5)memory usage: 3.0+ KB

3.1. cup分布

不过我们采集的数据中只划分了A-B-C三种cup。。

cupNum = df.groupby('cup')['commentCount'].sum().to_frame('数量')cupNum
cup 数量
A 6049
B 11618
C 4076
import matplotlib.pyplot as pltfrom matplotlib import font_manager as fmplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']plt.rcParams['axes.unicode_minus'] = Falselabels = cupNum.indexsizes = cupNum['数量']explode = (0, 0.1, 0) fig1, ax1 = plt.subplots(figsize=(6,5))patches, texts, autotexts = ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',                                    shadow=True, startangle=90)ax1.axis('equal') # 重新设置字体大小proptease = fm.FontProperties()proptease.set_size('large')plt.setp(autotexts, fontproperties=proptease)plt.setp(texts, fontproperties=proptease)ax1.set_title('cup 分布')plt.show()

cup分布

我们可以看到,高达

53.4%

的买家是

B-cup

,其次才是

A-cup

占比

27.8%

3.2. color分布

colorNum = df.groupby('颜色')['commentCount'].sum().to_frame('数量')colorNum
颜色 数量
浅肤 3627
淡蓝灰 3058
淡银灰 3837
白色 1439
藕粉 8286
酒红 1429
黑色 67

我们可以看到,藕粉色最多而且遥遥领先,其次是淡银灰、浅肤和淡蓝色。

color分布

以下是占比最高高达

38.1%

的藕粉色

 

藕粉色:来自京东

4. 就这样吧

我们看到最多的

34/75B

34

就是英码对照,

75

可以理解为下胸围长(其实这里的34和75可以理解为一样的含义),

B

则是

cup

关于

cup

胸围对照表,参考:

以上就是本次全部内容,样本量较小,不做考究,仅供娱乐哈!

5.学习资源

Python学习资源传送门——点击一下即可

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 利用Python发现60%以上女孩的罩杯是B,但A穿衣却是百搭且很高级