使用Python采集沙发类目商品数据,并对数据进行分析,提供给普通买家购买参考以及学习使用
- 商品类目:沙发
- 数量:共100页 4400个商品;
- 筛选条件:天猫、销量从高到低、价格500元以上。
项目目的
-
对商品标题进行文本分析 词云可视化
-
不同关键词word对应的sales的统计分析
-
商品的价格分布情况分析
-
商品的销量分布情况分析
-
不同价格区间的商品的平均销量分布
-
商品价格对销量的影响分析
-
商品价格对销售额的影响分析
-
不同省份或城市的商品数量分布
9.不同省份的商品平均销量分布
注:本项目仅以以上几项分析为例。
项目步骤
-
数据采集:Python爬取淘宝网商品数据
-
对数据进行清洗和处理
-
文本分析:jieba分词、wordcloud可视化
-
数据柱形图可视化 barh
-
数据直方图可视化 hist
-
数据散点图可视化 scatter
-
数据回归分析可视化 regplot
工具&模块:
工具:本案例代码编辑工具 Anaconda的Spyder
模块:requests、retrying、missingno、jieba、matplotlib、wordcloud、imread、seaborn 等。
爬取数据
因淘宝网是反爬虫的,虽然使用多线程、修改headers参数,但仍然不能保证每次100%爬取,所以 我增加了循环爬取,每次循环爬取未爬取成功的页 直至所有页爬取成功停止。
说明:淘宝商品页为JSON格式 这里使用正则表达式进行解析;
代码如下:
数据清洗、处理:
此步骤也可以在Excel中完成 再读入数据
代码如下:
说明:根据需求,本案例中只取了 item_loc, raw_title, view_price, view_sales 这4列数据,主要对 标题、区域、价格、销量 进行分析。
代码如下:
数据挖掘与分析:
- 对 raw_title 列标题进行文本分析:
使用结巴分词器,安装模块pip install jieba
对 title_s(list of list 格式)中的每个list的元素(str)进行过滤 剔除不需要的词语,即 把停用词表stopwords中有的词语都剔除掉:
因为下面要统计每个词语的个数,所以 为了准确性 这里对过滤后的数据 title_clean 中的每个list的元素进行去重,即 每个标题被分割后的词语唯一。
观察 word_count 表中的词语,发现jieba默认的词典 无法满足需求:
有的词语(如 可拆洗、不可拆洗等)却被cut,这里根据需求对词典加入新词(也可以直接在词典dict.txt里面增删,然后载入修改过的dict.txt)
词云可视化:
安装模块 wordcloud:
方法1: pip install wordcloud
方法2: 下载Packages安装:pip install 软件包名称
软件包下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud
注意:要把下载的软件包放在Python安装路径下。
代码如下:
分析结论:
综合分析:
- 组合、整装商品占比很高;
- 从沙发材质看:布艺沙发占比很高,比皮艺沙发多;
- 从沙发风格看:简约风格最多,北欧风次之,其他风格排名依次是美式、中式、日式、法式 等;
- 从户型看:小户型占比最高、大小户型次之,大户型最少。
不同关键词word对应的sales之和的统计分析:
(说明:例如 词语 简约’,则统计商品标题中含有简约’一词的商品的销量之和,即求出具有简约’风格的商品销量之和)
代码如下:
对表df_word_sum 中的 word 和 w_s_sum 两列数据进行可视化
(本例中取销量排名前30的词语进行绘图)
由图表可知:
-
组合商品销量最高 ;
-
从品类看:布艺沙发销量很高,远超过皮艺沙发;
-
从户型看:小户型沙发销量最高,大小户型次之,大户型销量最少;
-
从风格看:简约风销量最高,北欧风次之,其他依次是中式、美式、日式等;
-
可拆洗、转角类沙发销量可观,也是颇受消费者青睐的。
商品的价格分布情况分析:
分析发现,有一些值太大,为了使可视化效果更加直观,这里我们结合自身产品情况,选择价格小于20000的商品。
代码如下:
由图表可知:
-
商品数量随着价格总体呈现下降阶梯形势,价格越高,在售的商品越少;
-
低价位商品居多,价格在500-1500之间的商品最多,1500-3000之间的次之,价格1万以上的商品较少;
-
价格1万元以上的商品,在售商品数量差异不大。
商品的销量分布情况分析:
同样,为了使可视化效果更加直观,这里我们选择销量大于100的商品。
代码如下:
由图表及数据可知:
-
销量100以上的商品仅占3.4% ,其中销量100-200之间的商品最多,200-300之间的次之;
-
销量100-500之间,商品的数量随着销量呈现下降趋势,且趋势陡峭,低销量商品居多;
-
销量500以上的商品很少。
不同价格区间的商品的平均销量分布:
代码如下:
由图表可知:
-
价格在1331-1680之间的商品平均销量最高,951-1331之间的次之,9684元以上的最低;
-
总体呈现先增后减的趋势,但最高峰处于相对低价位阶段;
-
说明广大消费者对购买沙发的需求更多处于低价位阶段,在1680元以上 价位越高 平均销量基本是越少。
商品价格对销量的影响分析:
同上,为了使可视化效果更加直观,这里我们结合自身产品情况,选择价格小于20000的商品。
代码如下:
由图表可知:
-
总体趋势:随着商品价格增多 其销量减少,商品价格对其销量影响很大;
-
价格500-2500之间的少数商品销量冲的很高,价格2500-5000之间的商品多数销量偏低,少数相对较高,但价格5000以上的商品销量均很低 没有销量突出的商品。
商品价格对销售额的影响分析:
代码如下:
由图表可知:
-
总体趋势:由线性回归拟合线可以看出,商品销售额随着价格增长呈现上升趋势;
-
多数商品的价格偏低,销售额也偏低;
-
价格在0-20000的商品只有少数销售额较高,价格2万-6万的商品只有3个销售额较高,价格6-10万的商品有1个销售额很高,而且是最大值。
注:
以上为采集淘宝数据并对采集数据进行分析,但以上只为示例,并且对淘宝数据采集不够稳定,并且效率也不高,作者将淘宝采集数据封装成了数据接口,可实时获取到相关数据,可用于大数据分析、电商选品、品牌维权监控、同行监控等作用
以下为返回数据示例(关键字搜索):
封装的接口返回数据示例:
{
"code": 1,
"msg": "返回成功",
"time": "1650382153",
"data": {
"detail": {
"_cost": 405.758359,
"pageTraceArgs": [
{
"value": "a2141.7631557.0.0",
"key": "spm-cnt"
},
{
"value": "{\"for_bts\":\"wlrank_bigmodel:66670;health_rerank:432590;newSimilar:17424;mac_aac_layer:24785;main_feedback:33288;JK95:36180;diversity:6882;guangguangTabFlow:34770;new_card:24153;LBS_TAB:8437;tmtab_algo:77886;wlrank_pricesort:11118;sophon_card_hs:565508;interactive_search:8966;wlrank_business:32038;smart_ui_fast:27633;ifashion_tab_fe:546016;tpp_search_app:66;wlrank_adapt:6025;search_growth_outside:17105;navigation_kg:10281;tmall_tab_bucket:5536;newSearch:6445016;shop_combo:29018;search_growth_drop_down:21025;shopsearch_price_optimization:428409;pk_exp:35386;xui_layer:37026;mixrank_mainse:8249;smart_ui:7205;skuGovern:433908;price_sort_to_tpp:31917;tb_sug_rank:25832;taobao_new_experience:25980;ads_test:3612;relevance:3333;coupon_abTest_c:21465;newitem_tab:6012;wlrank_strategy:555511;sp2tpp:44010;tpp_search_ab:206609;aliHealthy_vertical:32877;newproduct_fe_1:6233;mac_aac_card_layer:26631;rank_policy:27410;twoLineTitle:20776;show_title:35494;magellan:716505;g9_search:1263;fruit:431238;hour_cloud_theme:26258;spl_suggest:97825;wlrank_layer4:4140;hour_store_check:17316;match:7367;srp_guess_like_search:17372;tpp_search_bucketId:88;recall_hx:7364;lsc_bucket_id:7\",\"list_param\":\"优衣库_22_f17b321b5a127c0474c0e12d39d0ffce\"}",
"key": "utparam-cnt"
}
],
"pageSize": "10",
"sessionid": "7857de02e1475d36ac06a36321f5554d",
"pageName": "MainSrp",
"tpp_trace": "212c2abf16503821538002842e7866",
"tpp_buckets": "66#0#206609#88",
"totalResults": "33224",
"abtest": "22",
"boxSearchTrace": [
],
"pvid": "dcbef287-dc15-4de3-845a-3142c534ef60",
"parameter": "q",
"pageTraceName": "Page_SearchItemList-MainSrp",
"scm": "1007.28601.159588.0",
"height": "234",
"paramValue": "优衣库",
"totalPage": "200",
"boxType": "RMI_CALL",
"_router_host": "hippo.33.55.93.134.na63",
"_host": "hippo.33.55.93.134.na63",
"version": 1,
"boxSearch": "http://show.chuangyi.taobao.com/html/65817/2022/04/18/286fa11d-d6280aad-205328209.html?rd=http%3A%2F%2Fclick.mz.simba.taobao.com%2Fbrand%3Fe%3DZNDS26m%252FpxoStXg%252B%252F8vbVPIC25qgcod08xnkK0gQlRp%252BhP8scr8HImF44NkOC4ckSybhiL%252F%252B4ZRqtsZTksZxmREkdsuPsCamr8WVqNcfHdhVdOCq6IIdON5FUbEg1KBIc86rR9eOOeqPSQCGfbSoUmqyopi6xDLbvlsboW2jMSUQhqUaN%252BVBVa7HVYROgaKGhT%252FnTt%252BcL0IGxfzsc6cWWrNTz10VYajdvlsboW2jMSW680kE1hqIRrWpQCbsKhxQorYgm7figGSuNMU300LgrKDQYJhonSLuN3zqKjJAtsrtewMrSsvXskjU0J03ayoh4NhLD5vontiUR8e3BaivmvPG%252FpPPm92g7uienL%252Ffilc5gEf2nbHqm2EAG2z5gXvsv2B%252FpN7wN3ySMpNV3hqwynlQCFZsyrJfbKvaJgSbpo7864V2lEOGorF0WEkPgrIjhpmG93IsZDeKM4aFmZLySzFx7kkl4fw4SXyrDqg6lO4gc%252B85jX0YlvEsIIJRN0GQ6cLBbV5gdKbGKbVEsOOXEkwYCgJNAMU%252BuoCrDRNLFfA3LgSqUe0QaiG3iwfgYD%252FVtT77GSmriwe7r2ymx1R8Urg7yB9l7n7k%26u%3D%26k%3D611%26eadt%3D42&style=112&q=%E4%BC%98%E8%A1%A3%E5%BA%93&nq=%E4%BC%98%E8%A1%A3%E5%BA%93&enable_linkage=true&bucketids=182037,182041,182042,182045,182052,182055,2790058,3243104,3243780,3284058,3287574,3285086,3286493,3493241,3286667,3287348,3301293,3302225,0,3506401&campaign_id=194366765&adgroup_id=194731278&creative_id=287971500420001&session_id=e5281e0ba37e5700625ed549d0bf4804&shop_id=57303596",
"width": "375",
"order_by": "_coefp",
"style": "wf",
"page": "1",
"RN": "f17b321b5a127c0474c0e12d39d0ffce",
"itemsArray": [
{
"priceWap": "59.00",
"activityIdBase64": "",
"short_title_c2c": "",
"videoAutoPlay": "false",
"extraParams": [
{
"value": "taobaoSearch",
"key": "xxc"
},
{
"value": "%E4%BC%98%E8%A1%A3%E5%BA%93",
"key": "detailAlgoParam"
}
],
"uprightImg": "http://g.search2.alicdn.com/img/bao/uploaded/i4/i4/196993935/O1CN01W98iRD1ewHGhkRswt_!!0-item_pic.jpg",
"title": "优衣库uniqlo圆领t恤春夏短袖",
"tItemType": "nt_auction",
"utLogMap": {
"x_business": "tbxls",
"p_t": "1",
"xui_longPic": "c3f88862027c4054de612679660979ef",
"p_f": "0",
"smartui_exp": "5",
"title": "showTitle"
},
"auctionURL": "http://a.m.taobao.com/i633123980436.htm?&ttid=10005533%40taobaolive_android_1.7.4&v=1.0&sid=3a040b44560d18ca9c09789b2086a096",
"trace": {
"spm-url": "a2141.7631557.0.0",
"item_id": "633123980436",
"utLogMap": {
"item_price": "59.00",
"list_param": "优衣库_22_f17b321b5a127c0474c0e12d39d0ffce",
"x_biz": "item",
"page": "1",
"isP4p": "false"
}
},
"itemCollect": "false",
"price": "59.00",
"summaryTips": [
"理想之选:天猫认证",
"设计师款:设计师款"
],
"realSales": "5万+人付款",
"sameCount": "0",
"leafCategory": "50000671",
"isP4p": "false",
"sold": "50168",
"shopInfo": {
"pbshowshopinfo": "false",
"shopInfoList": [
"优衣库官方旗舰店",
"上海"
],
"url": "https://shop.m.taobao.com/shop/shop_index.htm?shop_navi=allitems&upText=%E4%BC%98%E8%A1%A3%E5%BA%93&item_id=633123980436"
},
"detailBaseUrl": "",
"similarSameUrl": "",
"item_id": "633123980436",
"priceColor": "#000000",
"hiddenSet": [
],
"uprightImgAspectRatio": "0.667",
"cardType": "item",
"itemPriceSign": "",
"pic_path": "http://g.search2.alicdn.com/img/bao/uploaded/i4/i4/196993935/O1CN015oL08X1ewHGefXx1g_!!196993935.jpg_60x60.jpg",
"icons": [
],
"priceShow": {
"unit": "¥",
"price": "59.00",
"preText": ""
},
"userId": "196993935",
"similarURL": "http://h5.m.taobao.com/app/searchsimilar/www/tbsimilar/index.html?from=tbsearch&showtype=similar&liantiao=wsearch_pre_http_gray&scm=20140662.search&vm=nw&nid=633123980436&q=%E4%BC%98%E8%A1%A3%E5%BA%93&searchToken=00825aec213d76ef56747df81596adb48c709c889c2a3543a65ef69a12c26a79",
"g9": "false",
"dItemType": "nt_auction_2019",
"isB2c": "1",
"productLaunch": "",
"showLongTitle": "true",
"iconList": "",
"locType": "",
"similarCount": "1"
},
// ... more ...
]
},
"time": "1.33s",
"api_tp": "taobao",
"api_name": "search",
"log": "success"
}
}