35

爬了7000+条内衣信息,只为探究妹纸们的偏好!

 4 years ago
source link: https://bigdata.51cto.com/art/201911/606480.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

爬了7000+条内衣信息,只为探究妹纸们的偏好!

为了探究妹纸们的偏好,我爬了网易严选妹子内衣信息总共是七千多条数据,下面一起来看看网易严选商品评论的获取和分析。

作者:周萝卜来源:萝卜大杂烩|2019-11-22 09:42

为了探究妹纸们的偏好,我爬了网易严选妹子内衣信息总共是七千多条数据,下面一起来看看网易严选商品评论的获取和分析。

0336a9fc3c9dc6a642a9f0d96a409eab.jpg-wh_651x-s_2269750602.jpg

图片来自 Pexels

声明:这是一篇超级严肃的技术文,超!级!严!肃!请本着学习交流的态度阅读,谢谢!

分析网页

①评论分析

进入到网易严选官网,搜索“文胸”后,先随便点进一个商品。

9efbc30c169c0a9427f4f20742f4d637.jpg-wh_600x-s_304936312.jpg

在商品页面,打开 Chrome 的控制台,切换至 Network 页,再把商品页面切换到评价标签下,选择一个评论文字,如“薄款、穿着舒适、满意”,在 Network 中搜索。

d781182b433a9277501a2bc777a2f66a.jpg-wh_600x-s_2935333487.jpg

可以发现,评论文字是通过 listByItemByTag.json 传递过来的,点击进入该请求,并拷贝出该请求的 URL:

  1. https://you.163.com/xhr/comment/listByItemByTag.json?csrf_token=060f4782bf9fda38128cfaeafb661f8c&__timestamp=1571106038283&itemId=1616018&tag=%E5%85%A8%E9%83%A8&size=20&page=1&orderBy=0&oldItemTag=%E5%85%A8%E9%83%A8&oldItemOrderBy=0&tagChanged=0 

aa1d483085b3a5a0bf713a030a366cde.jpg-wh_600x-s_3910372679.jpg

将该 URL 放入 Postman 中,逐个尝试 url query params,最后能够发现,只需保留 itemId 和 page 两个请求参数即可。

8ea1339836ae3dea2d5186c909be3b06.jpg-wh_600x-s_3412396074.jpg

请求返回的是一个 JSON 格式的数据,下面就是分析该 JSON 数据了。

不难发现,所有的评论数据都存储在 commentList 中,我们只需保存该数据即可。

下面就是如何获取 itemId 的信息了,这个是产品的 ID,我们回到网易严选首页,继续分析。

②产品 ID 获取

当我们在搜索框中输入关键字进行搜索的时候,同样能够发现在 Network 中有很多请求。

此时可以观察各个请求,通过请求文件的名称(此处需要一些经验,守规矩的程序员都不会乱起名字),我们可以定位到搜索时展示搜索结果的请求。

8ec3c5982d36b8ef51ce68dd6cba82d1.jpg-wh_600x-s_2079461862.jpg

搜索一般都是 search,所以我们就锁定了这个 search.json 的请求。同样把请求 URL 拷贝到 Postman 中,逐个验证传参,最后保留 page 和 keyword 两个参数即可。

868b22c06309b1d043254d7014eb34c4.jpg-wh_600x-s_1097650381.jpg

该请求返回的数据较多,还是需要耐心的分析数据,也能够发现,在 result->data->directly->searcherResult->result 下面的 id 值,即为我们要获取的产品 ID。

以上,我们基本完成了前期的分析工作,下面开始代码的编写。

编写代码

①获取产品 ID

代码如下:

  1. def search_keyword(keyword): 
  2.     uri = 'https://you.163.com/xhr/search/search.json' 
  3.     query = { 
  4.         "keyword": keyword, 
  5.         "page": 1 
  6.         res = requests.get(uri, params=query).json() 
  7.         result = res['data']['directly']['searcherResult']['result'] 
  8.         product_id = [] 
  9.         for r in result: 
  10.             product_id.append(r['id']) 
  11.         return product_id 
  12.     except: 
  13.         raise 

我这里是获取了 page 为 1 的产品 ID,下面就是通过产品 ID 来获取不同产品下的评论信息。

②获取数据存储

通过前面的分析,我们可以知道,评论信息都是如下形式的,对这种形式的信息,我们可以很方便地存储进入 MongoDB,然后再慢慢分析数据里的内容。

  1.                 "skuInfo": [ 
  2.                     "颜色:肤色", 
  3.                     "杯码:75B" 
  4.                 "frontUserName": "1****8", 
  5.                 "frontUserAvatar": "https://yanxuan.nosdn.127.net/f8f20a77db47b8c66c531c14c8b38ee7.jpg", 
  6.                 "content": "质量好,穿着舒服", 
  7.                 "createTime": 1555546727635, 
  8.                 "picList": [ 
  9.                     "https://yanxuan.nosdn.127.net/742f28186d805571e4b3f28faa412941.jpg" 
  10.                 "commentReplyVO": null, 
  11.                 "memberLevel": 4, 
  12.                 "appendCommentVO": null, 
  13.                 "star": 5, 
  14.                 "itemId": 1680205 

对于 MongoDB,我们既可以自己搭建,也可以使用网上免费的服务。在这里我介绍一个免费的 MongoDB 服务网站:mlab,使用很简单,就不过多介绍使用过程了。

数据库有了,下面就是把数据保存进去了:

  1. def details(product_id): 
  2.     url = 'https://you.163.com/xhr/comment/listByItemByTag.json' 
  3.         C_list = [] 
  4.         for i in range(1, 100): 
  5.             query = { 
  6.                 "itemId": product_id, 
  7.                 "page": i, 
  8.             res = requests.get(url, params=query).json() 
  9.             if not res['data']['commentList']: 
  10.                 break 
  11.             print("爬取第 %s 页评论" % i) 
  12.             commentList = res['data']['commentList'] 
  13.             C_list.append(commentList) 
  14.             time.sleep(1) 
  15.             # save to mongoDB 
  16.                 mongo_collection.insert_many(commentList) 
  17.             except: 
  18.                 continue 
  19.         return C_list 
  20.     except: 
  21.         raise 

最后爬取完成之后,总共是七千多条数据,下面就可以根据个人需要做一些分析了。

675611c636986efd704b08248521d234.jpg-wh_600x-s_4149988123.jpg

爬取的数据 MongoDB 链接:

  1. conn = MongoClient("mongodb://%s:%[email protected]:49974/you163" % ('you163', 'you163')) db = conn.you163 mongo_collection = db.you163 

商品评论数据分析

下面就到了激动人心的时刻了,一探妹子偏好!

偏好颜色

先来看看妹子们偏好的颜色:

077d86d5306bb1b9af393e2e655aedbe.jpg-wh_600x-s_480384095.jpg

可以看出,黑色是遥遥领先的哦,这里你要做到心中有数!

再通过饼状图来观察下不同颜色的占比情况:

4fd7ba9a8862467d2685fec5bbbf0068.jpg-wh_600x-s_82638468.jpg

那么这些颜色中,有你的她喜欢的吗?

尺寸分布

再来看看妹子们的尺寸分布:

d931470f09dadf6ae53d47b1d113fc4c.jpg-wh_600x-s_1799823412.jpg

没有问题,75B 就是大多数妹子的尺寸了!

如果你对这种罩杯尺寸没有研究的话,不要紧,贴心的我给你准备了对照表,拿走不谢!

99dc1c65d62f3bc617e2106880745fb9.jpg

商品评论

最后我们再来看看妹子们对于商品的评价情况:

就星级评价上来看,大多数都是五星好评,毕竟打着“严选”的名号,质量是必须有保证的。

再来看看在评论区,妹子最喜欢用什么词语来描述呢:

a7f5db090adbfcc9c2fbd2083756c315.jpg-wh_600x-s_3806196771.jpg

舒服、很舒服,非常舒服;满意、很满意,非常满意。

仿佛进入了“夸夸群”,看来妹子们首要看重的就是舒服与否,毕竟是贴身的,质量最重要!

好了,看了上面的分析,单身的你是不是更加有了脱单的冲动?如果是已经有软妹傍身的你,是不是该下手讨好下身边的她了呢?

完整代码如下:

  1. https://github.com/zhouwei713/data_analysis/tree/master/you163_spider 

06b2a54c97a0c09401603bab7aea68d4.gif-wh_600x-s_2946624692.gif

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0
大家都在看猜你喜欢

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK