练习:天猫商品决策分析

爬取数据

参数解析

itemId是商品ID, sellerId 是卖家ID, currentPage是当前页码,目标url是https://rate.tmall.com/list_detail_rate.htm?itemId=15332134505&spuId=294841&sellerId=917264765&order=3&currentPage=1

正则解析

1.cnt字符串不要随便换行(否则可能报错:SyntaxError: EOL while scanning string literal),

2.findall(正则规则,字符串) 方法能够以列表的形式返回能匹配的字符串

#coding=utf-8
import re

cnt = ‘"aliMallSeller":False,"anony":True,"appendComment":"","attributes":"","attributesMap":"","aucNumId":"","auctionPicUrl":"","auctionPrice":"","auctionSku":"化妆品净含量:75ml","auctionTitle":"","buyCount":0,"carServiceLocation":"","cmsSource":"天猫","displayRatePic":"","displayRateSum":0,"displayUserLink":"","displayUserNick":"t***凯","displayUserNumId":"","displayUserRateLink":"","dsr":0.0,"fromMall":True,"fromMemory":0,"gmtCreateTime":1504930533000,"goldUser":False,"id":322848226237,"pics":["//img.alicdn.com/bao/uploaded/i3/2699329812/TB2hr6keQ.HL1JjSZFlXXaiRFXa_!!0-rate.jpg"],"picsSmall":"","position":"920-11-18,20;","rateContent":"送了面膜 和晶莹水 skii就是A 不错","rateDate":"2017-09-09 12:15:33","reply":"一次偶然的机会,遇见了亲,一次偶然的机会,亲选择了SK-II,生命中有太多的选择,亲的每一次选择都是一种缘分。让SK-II与您形影不离,任岁月洗礼而秀美如初~每日清晨拉开窗帘迎来的不仅止破晓曙光,还有崭新的自己~【SK-II官方旗舰店Lily】","sellerId":917264765,"serviceRateContent":"","structuredRateList":[],"tamllSweetLevel":3,"tmallSweetPic":"tmall-grade-t3-18.png","tradeEndTime":1504847657000,"tradeId":"","useful":True,"userIdEncryption":"","userInfo":"","userVipLevel":0,"userVipPic":""‘

nickname = []
regex = re.compile(‘"displayUserNick":"(.*?)"‘)
print regex
nk = re.findall(regex,cnt)
for i in nk:
    print i
nickname.extend(nk)
print nickname

ak = re.findall(‘"auctionSku":"(.*?)"‘,cnt)
for j in ak:
    print j

rc = re.findall(‘"rateContent":"(.*?)"‘,cnt)
for n in rc:
    print n

rd = re.findall(‘"rateDate":"(.*?)"‘,cnt)
for m in rd:
    print m

输出:

完整源码

参考:http://www.jianshu.com/p/632a3d3b15c2

#coding=utf-8
import requests
import re
import sys

reload(sys)
sys.setdefaultencoding(‘utf-8‘)

#urls = []
#for i in list(range(1,500)):
#    urls.append(‘https://rate.tmall.com/list_detail_rate.htm?itemId=15332134505&spuId=294841&sellerId=917264765&order=1&currentPage=%s‘%i)

tmpt_url = ‘https://rate.tmall.com/list_detail_rate.htm?itemId=15332134505&spuId=294841&sellerId=917264765&order=1&currentPage=%d‘
urllist = [tmpt_url%i for i in range(1,100)]
#print urllist

nickname = []
auctionSku = []
ratecontent = []
ratedate = []
headers = ‘‘

for url in urllist:
    content = requests.get(url).text
    nk = re.findall(‘"displayUserNick":"(.*?)"‘,content)  #findall(正则规则,字符串) 方法能够以列表的形式返回能匹配的字符串
    #print nk
    nickname.extend(nk)
    auctionSku.extend(re.findall(‘"auctionSku":"(.*?)"‘,content))
    ratecontent.extend(re.findall(‘"rateContent":"(.*?)"‘,content))
    ratedate.extend(re.findall(‘"rateDate":"(.*?)"‘,content))
    print (nickname,ratedate)

for i in list(range(0,len(nickname))):
    text =‘,‘.join((nickname[i],ratedate[i],auctionSku[i],ratecontent[i]))+‘\n‘
    with open(r"C:\Users\HP\Desktop\codes\DATA\SK-II_TmallContent.csv",‘a+‘) as file:
        file.write(text+‘ ‘)
        print("写入成功")

注:url每次遍历,正则匹配的数据都不止一个,所以使用extend追加而不是append

输出:

数据分析

1.要不要买——评论分析

import pandas as pd
from pandas import Series,DataFrame
import jieba
from collections import Counter

df = pd.read_csv(r‘C:/Users/HP/Desktop/codes/DATA/SK-II_TmallContent.csv‘,encoding=‘gbk‘)  #否则中文乱码
#print df.columns
df.columns = [‘useName‘,‘date‘,‘type‘,‘content‘]
#print df[:10]

tlist = Series.as_matrix(df[‘content‘]).tolist()
text = [i for i in tlist if type(i)!= float] #if type(i)!= float一定得加不然报错
text = ‘ ‘.join(text)
#print text

wordlist_jieba = jieba.cut(text,cut_all=True)
stoplist = {}.fromkeys([u‘的‘, u‘了‘, u‘是‘,u‘有‘])  #自定义中文停词表,注意得是unicode
print stoplist
wordlist_jieba = [i for i in wordlist_jieba if i not in stoplist]  #and len(i) > 1
#print u"[全模式]: ", "/ ".join(wordlist_jieba)

count = Counter(wordlist_jieba)   #统计出现次数,以字典的键值对形式存储,元素作为key,其计数作为value。
result = sorted(count.items(), key=lambda x: x[1], reverse=True)  #key=lambda x: x[1]在此表示用次数作为关键字

for word in result:
    print word[0], word[1]

from pyecharts import WordCloud

data = dict(result[:100])
wordcloud = WordCloud(‘高频词云‘,width = 800,height = 600)
wordcloud.add(‘ryana‘,data.keys(),data.values(),word_size_range = [30,300])
wordcloud

输出:

好用的频率占据榜首,只是不明白为什么要切分

2.买什么——类型分析

import pandas as pd
from pandas import Series,DataFrame

df = pd.read_csv(r‘C:/Users/HP/Desktop/codes/DATA/SK-II_TmallContent.csv‘,encoding=‘gbk‘)  #否则中文乱码
#print df.columns
df.columns = [‘useName‘,‘date‘,‘type‘,‘content‘]
print df[:5]

from pyecharts import Pie

pie = Pie(‘净含量购买分布‘)
v = df[‘type‘].tolist()
print v[:5]

#n1 = v.count(u‘\u5316\u5986\u54c1\u51c0\u542b\u91cf:230ml‘)
n1 = v.count(u‘化妆品净含量:75ml‘)
n2 = v.count(u‘化妆品净含量:160ml‘)
n3 = v.count(u‘化妆品净含量:230ml‘)
n4 = v.count(u‘化妆品净含量:330ml‘)
#print n1,n2,n3,n4  #800 87 808 124

N = [n1,n2,n3,n4]
#print N  #[800,87,808,124]

attr = [‘体验装‘,‘畅销经典‘,‘忠粉挚爱‘,‘屯货之选‘]
pie.add(‘ryana‘,attr,N,is_label_show = True)
pie

输出:

时间: 2024-07-31 14:27:13

练习:天猫商品决策分析的相关文章

Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 一.前言 大家好,今天我要来讲讲一个比较实用的爬虫工具,抓取淘宝的关键字商品信息,即是: 输入关键字,按照价格等排序,抓取列出的商品信息以及下载图片,并且支持导出为Excel. 如果如下: 看完下面的讲解,Python语言就掌握得差不多,中级水平了,而且这个封装后的工具还是很好用的. 感觉自己萌萌哒~~ 二.原理 大家知道什么叫爬虫,它也叫网络蜘蛛,机器人等,意思就是说自动的程序,可以去抓取使用网络协议传输的内容. 目前来讲爬虫主

使用火蜘蛛采集器Firespider采集天猫商品数据并上传到微店

有很多朋友都需要把天猫的商品迁移到微店上去.可在天猫上的商品数据非常复杂,淘宝开放接口禁止向外提供数据,一般的采集器对ajax数据采集的支持又不太好. 还有现在有了火蜘蛛采集器,经过一定的配置,终于把天猫商品的数据都采集下来了(SKU信息,运费信息,库存信息,图片,商品描述等).天猫商品网页的确是很复杂,比如商品描述,还有商品描述中的图片,使用的都是懒加载,只有当用户滚动到那里了,才会去加载描述和图片.还好这些都难不倒火蜘蛛采集器.当然了,采集回来的信息也是很复杂的,需要我们清楚了解淘宝的商品数

Python网页信息采集:使用PhantomJS采集淘宝天猫商品内容

1,引言 最近一直在看Scrapy 爬虫框架,并尝试使用Scrapy框架写一个可以实现网页信息采集的简单的小程序.尝试过程中遇到了很多小问题,希望大家多多指教. 本文主要介绍如何使用Scrapy结合PhantomJS采集天猫商品内容,文中自定义了一个DOWNLOADER_MIDDLEWARES,用来采集需要加载js的动态网页内容.看了很多介绍DOWNLOADER_MIDDLEWARES资料,总结来说就是使用简单,但会阻塞框架,所以性能方面不佳.一些资料中提到了自定义DOWNLOADER_HAND

爬虫 爬取天猫商品的封面信息

# 爬取搜索字段的封面信息 ''' q : 搜索的类型 可以识别中文 天猫控制登录字段: sort: 排序 s:起始第几个商品 问题1: 把s删除以后,虽说可以跳过登陆,但是只能访问第一页了,何解? 解决: 多次点击页面后发现,淘宝测试不完全,在点击跳转页面后,将其的url后的参数只保留 q totalPage jumpto 三个字段后,就可以通过修改jumpto字段的值 来跳转到其他的页面 问题2: 解决登陆问题后,发现无法提前知道totalpage的总页数 解决:只要页面有显示,那我们就能拿

快速开发天猫商品模块

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 8

天猫消息盒子的CSS实现

css: body,h2,h3,ul,p{margin:0;padding:0;font-size:12px;} li{list-style: none; } a{text-decoration: none;} img{border:none;vertical-align: top;} .clear{zoom:1;} .clear:after{content: "";display: block;clear: both;} .wrap{width:740px;padding:13px

淘宝商品列表以及商品详情数据抓取

前段时间老师让我爬取淘宝的商品列表以及其商品详情数据,期间遇到了很多问题.最困难的就是淘宝的价格数据是以Ajax异步加载的,这些数据暂时还没有能力获取到. 下面介绍一下基本思路. 首先,通过抓取商品列表的商品ID获取商品的身份标识,然后根据商品ID跳转到具体的商品列表,对其他属性进行抓取. 观察两条商品列表的URL: https://s.taobao.com/search?q=帽子&imgfile=&commend=all&ssid=s5-e&search_type=ite

产品-商品之布道

在电子商务横行的年代,对于服务于电商的技术公司,在电商领域要充分理解电子商务中的基本概念,掌握产品.商品.分类.SPU与SKU等基础概念,先看下图: 下面逐步理解各个概念,及分享淘宝新一代产品服务-达尔文产品管理.先看下面说明: 产品:IPhone  4s规格:[内存大小,颜色]商品:IPhone 4s 16G 玫瑰金SKU:商品 + 某个规格实例,比如IPhone 4s 16G 玫瑰金,IPhone 4s 8G 土豪金 1.分类 分类也就是产品类目,是多层级结构,其作用用于产品归类,方便产品的

跳转到天猫客户端

NSString *urlString = @"http://detail.tmall.com/item.htm?spm=a215v.7217581.610138.10.sO6nZp&id=36615660686&areaId=410100&cat_id=2&rn=ebe1860b08257aacbac424ed12d5208c&user_id=1098342976&is_b=1";             NSURL *url;