python爬取淘宝评论数据导入excel表格并做处理

其实代码都很简单本人编程能力也很一般,且并不是专业做python,只是一个扩展技能,有什么错漏之处请礼貌指出谢谢啦

第一步爬取淘宝评论数据,主要使用request,time
几个要点:
1.header最好给全
2.参数中有两个是动态参数需要根据时间戳进行动态赋值否则会被反爬,我有做了简易的动态UA,无用,还是需要时间戳的动态参数
3.以我本人的能力无法爬取到99页以后的内容,我是使用接口传参的方式去爬的,超过99页以后的页数接口不会报错但是仍然返回99页的数据
4.必须设置sleep,我平时设置10秒或者8秒否则淘宝会弹出反爬的警示框

直接上代码

import requests
import json
import pandas
import time

#获取时间戳
t_param = time.time()
t_list = str(t_param).split('.')

headers = {
    'authority': 'rate.tmall.com',
    'pragma': 'no-cache',
    'cache-control': 'no-cache',
    'sec-ch-ua': '^\\^',
    'sec-ch-ua-mobile': '?0',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    'accept': '*/*',
    'sec-fetch-site': 'same-site',
    'sec-fetch-mode': 'no-cors',
    'sec-fetch-dest': 'script',
    'referer': '根据商品信息填写referer',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cookie': '你的cookie',
}

#一定要加动态参数!
params={
    "itemId":"根据url参数获取",
    "sellerId":"根据url参数获取",
    "currentPage":"1",
    "callback":str(int(t_list[1][3:])+1),
    "_ksTS":t_list[0]+t_list[1][:3]+"_"+t_list[1][3:]
}


col=['auctionSku','rateContent','rateDate','reply']
auctionSku=[]
rateContent=[]
rateDate=[]
reply=[]
pics=[]

url="https://rate.tmall.com/list_detail_rate.htm"

for page in range(1,100):
    params["currentPage"]=str(page)
    req=requests.get(url,params,headers=headers).content.decode('utf-8');
    result=json.loads(req[req.index('({')+1:-1]);
    for item in result['rateDetail']['rateList']:
        auctionSku.append(item['auctionSku'])
        rateContent.append(item['rateContent'])
        rateDate.append(item['rateDate'])
        pics.append(item['pics'])
        if item['appendComment']:
            reply.append(item['appendComment']['content'])
        else:
            reply.append('')
    print('第'+str(page)+'页完毕')
    time.sleep(8)

df = pandas.DataFrame({
    '产品名字':auctionSku,
    '初评':rateContent,
    '初评时间':rateDate,
    '初评图片':pics,
    '追评':reply
})

df.to_excel("1-99.xlsx", sheet_name="评论数据", index=False, header=True)

第二步根据excel表格做数据处理,主要依赖pandas,pyecharts
我的目的是根据评论和追评内容的关键词来判定用户属性,打上标记然后计算标记数量输出成分分析到echarts饼图
注意:我下载的pyecharts插件是v1版本的,但本人实测旧版本更好用,可找到的资料更多,新版本语法很多都修改了,资料少,百度写法时一定要带上V1版本来检索。可惜我的公司电脑环境不知道哪里不对,旧版安装一直失败只能委屈使用新版本。

import pandas
from pyecharts.charts import Pie
from pyecharts import options as opts

tf1 = pandas.read_excel('1-99.xlsx')
tf = tf1.copy()

# # 产品类别筛选
tf = tf1[tf1.iloc[:,0].str.contains('03')|tf1.iloc[:,0].str.contains('16')]
# # 全量标记
tf = tf.copy()
tf.loc[:,'粉丝类别'] = '无法识别'
#

type = {
    'cpf':['浪浪钉','^(?=.*?张哲瀚)(?=.*?龚俊).+$',
           '山人','lld','LLD','cp','CP','cpf','浪钉','^(?=.*?猫)(?=.*?狗).+$',
           '嗑糖','俊哲','端水','橘子皮','俊哲批','份子','张老师','双人','npc','NPC','双代','全城热恋',
           '^(?=.*?张)(?=.*?龚).+$','^(?=.*?俊子)(?=.*?公主).+$','^(?=.*?俊子)(?=.*?老婆).+$','^(?=.*?俊俊)(?=.*?老婆).+$',
           '^(?=.*?俊俊)(?=.*?lp).+$','^(?=.*?俊俊)(?=.*?哲瀚).+$','^(?=.*?jz)(?=.*?zh).+$',
           '^(?=.*?温)(?=.*?周).+$','^(?=.*?老公)(?=.*?老婆).+$','^(?=.*?Zh)(?=.*?gj).+$','^(?=.*?zh)(?=.*?gj).+$',
           '^(?=.*?阿絮)(?=.*?老温).+$', '^(?=.*?哲瀚)(?=.*?俊子).+$','^(?=.*?恶龙)(?=.*?公主).+$','^(?=.*?西蒙)(?=.*?公主).+$',
           '^(?=.*?老龚)(?=.*?老婆).+$','^(?=.*?星星)(?=.*?月亮).+$','^(?=.*?俊俊)(?=.*?瀚瀚).+$','^(?=.*?星星)(?=.*?月亮).+$',
           '^(?=.*?栀子花)(?=.*?柑橘).+$','嗑',
           ],
    '海哲':['海哲','hz','瀚哥','张哲瀚','小哲','hzjj','瀚瀚','哲瀚'],
    '俊味仙':['俊味仙','jwx','i俊','俊宝','龚俊','俊俊','俊子'],
}

# cpf
tf.loc[tf.iloc[:,1].str.contains('|'.join(type['cpf']))|tf.iloc[:,4].str.contains('|'.join(type['cpf'])),'粉丝类别']='cpf'

# 俊味仙
tf.loc[(tf.iloc[:,1].str.contains('|'.join(type['俊味仙']))|tf.iloc[:,4].str.contains('|'.join(type['俊味仙'])))&(tf['粉丝类别']!='cpf')&(tf['粉丝类别']!='海哲'),'粉丝类别']='俊味仙'

# 海哲
tf.loc[(tf.iloc[:,1].str.contains('|'.join(type['海哲']))|tf.iloc[:,4].str.contains('|'.join(type['海哲'])))&(tf['粉丝类别']!='cpf')&(tf['粉丝类别']!='俊味仙'),'粉丝类别']='海哲'

keyWords = {
    '关键字':[],
    '数量':[]
}
for typeItem in ('cpf','海哲','俊味仙'):
    for item in type[typeItem]:
        keyWords['关键字'].append(item)
        if list(tf.iloc[:,1].str.contains(item).value_counts()).__len__()==2:
            keyWords['数量'].append(list(tf.iloc[:,1].str.contains(item).value_counts())[1])
        else:
            keyWords['数量'].append(0)

keyWordsdf =pandas.DataFrame(columns=('关键字','数量'))
keyWordsdf = pandas.DataFrame(keyWords)
keyWordsdf.to_excel('tf关键词结果.xlsx',sheet_name='tf关键词',index=False,header=True)

# 输出到表格
tf.to_excel("tf1-99结果.xlsx", sheet_name="tf", index=False, header=True)

x_data =["cpf", "海哲", "俊味仙", "无法识别"]
y_data = [int(tf[tf['粉丝类别']=='cpf']['粉丝类别'].count()),
          int(tf[tf['粉丝类别']=='海哲']['粉丝类别'].count()),
          int(tf[tf['粉丝类别']=='俊味仙']['粉丝类别'].count()),
          int(tf[tf['粉丝类别']=='无法识别']['粉丝类别'].count())]

#饼图用的数据格式是[(key1,value1),(key2,value2)],所以先使用 zip函数将二者进行组合
data_pair = [list(z) for z in zip(x_data, y_data)]
Pie(init_opts=opts.InitOpts(bg_color="#2c343c")).add(
    #系列名称,即该饼图的名称
    series_name="粉丝成分",
    #系列数据项,格式为[(key1,value1),(key2,value2)]
    data_pair=data_pair,
    #通过半径区分数据大小 “radius” 和 “area” 两种
    rosetype="radius",
    #饼图的半径,设置成默认百分比,相对于容器高宽中较小的一项的一半
    radius="55%",
    #饼图的圆心,第一项是相对于容器的宽度,第二项是相对于容器的高度
    center=["50%", "50%"],
    #标签配置项
    label_opts=opts.LabelOpts(is_show=False, position="center"),
).set_global_opts(
    #设置标题
    title_opts=opts.TitleOpts(
        #名字
        title="粉丝成分",
        #组件距离容器左侧的位置
        pos_left="center",
        #组件距离容器上方的像素值
        pos_top="20",
        #设置标题颜色
        title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
    ),
    #图例配置项,参数 是否显示图里组件
    legend_opts=opts.LegendOpts(is_show=False),
).set_series_opts(
    tooltip_opts=opts.TooltipOpts(
        trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
    ),
    #设置标签颜色
    label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"),
).render("粉丝成分.html")
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容