Python爬取淘宝评论并生成词云

最新修改于2021/04/01

所需相关Python第三方库(目前最新版本即可)

推荐使用Anaconda,其使用十分方便、快捷。

  1. requests库
  2. json库
  3. pandas库
  4. xlwt库
  5. jieba分词库
  6. matplotlib绘图(要先安装pandas库)
  7. wordcloud词云库

注意事项

  1. 目前淘宝只支持查看前100页评论,但对于新手来说,用来进行数据分析以经足够了;
  2. 由于淘宝有较强的反扒机制,需使用登录后的网址。对于高手来讲,可以使用代理池等操作,本篇文章只是用了Cookie来保证爬取顺利;
  3. 在实际操作时,要文明操作,不要给他人服务器造成影响;
  4. 本篇博客相关数据均没有涉及个人秘密及隐私;
  5. 此篇博客仅供学习使用。若另作他用,后果与本博客无关。

话不多说,直接上代码

# -*- coding: utf-8 -*-
"""
Created on Mon Dec 14 18:32:34 2020
@author: 梧桐*漂湘
"""#导入相关库
import requests
#import time          //读者可以应用此库合理限制爬取频率
import json
import pandas as pd
import xlwt
#做出词云所需库
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator"""
------------------------------------------------------------------------------
STEP01  评论爬取
------------------------------------------------------------------------------
"""
#获取网页的html源码
def get_html(url):header={'accept':'*/*','accept-language':'zh-CN,zh;q=0.9','connection':'keep-alive',#示例 :'referer':'https://detail.tmall.com/item.htm?id=61347770226421&ali_refid=a3_43067223_1006:1105370874:N:lVpUfc1IrSs2DXwEZqoGNw==:d1bb9be356b2df02eebf0d3b54be7d355713&ali_trackid=1_d1bb9b56b2df3402eebf0d3b54be7d3713&spm=a2e0b.20234350158.31919782.1&sku_properties=5919063:6536340215',#XXXX处请根据实际情况填写'referer':'https://detail.tmall.com/item.htm?id=XXXXXX&ali_refid=XXXXXX&ali_trackid=XXXXXX&spm=XXXXXX&sku_properties=XXXXXX','cookie': '你的cookie','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}response=requests.get(url,headers=header)response.content.decode("UTF-8")html=response.textreturn htmldef getJson(url):#woc,返回的JSON变了,必须replace('jsonp128',''),同时b=d['rateList']要改为b=d['rateDetail']['rateList']data=get_html(url).replace('jsonp128','').strip().strip("()")d=json.loads(data,strict=False)b=d['rateDetail']['rateList']  #得到rateList后面的[]即列表类型,[]里有多个{}信息,每个{}代表一个用户的评论信息print(type(b[0])) #列表[]里的每一个元素又是一个字典类型的数据#下面遍历列表元素,取出每一个列表元素中字典里的特定信息:content、nick、dateprint(type(b))elem_list=[]for elem in b:user=elem['displayUserNick']             #用户名date=elem['rateDate']                    #日期xh=elem['cmsSource']                     #平台kinds=elem['auctionSku']                 #商品类型comt=elem['rateContent']                 #评论内容elem_list.append(user)elem_list.append(date)elem_list.append(xh)elem_list.append(kinds)elem_list.append(comt)   return elem_listprint(b['rateDate'])def writeAll(num):#示例:first="https://rate.tmall.com/list_detail_rate.htm?itemId=613477706421&spuId=1526571124&sellerId=1646247574&order=3&currentPage="#XXXX处请根据实际情况填写first="https://rate.tmall.com/list_detail_rate.htm?itemId=XXXXXX&spuId=XXXXXX&sellerId=XXXXXX&order=XXXXXX&currentPage="path="评论.xls"column=0 #列count=0file=xlwt.Workbook()sheet1=file.add_sheet('1')elem_list=[]elem_list.append("用户")elem_list.append("日期")elem_list.append("平台")elem_list.append("类型")elem_list.append("评论")   for index in range(len(elem_list)):sheet1.write(0,index,elem_list[index])#大家都知道xlwt库每次写入excel会覆盖之前的内容,对此通过以下方法避免#也可以使用其他更为方便的方法row=1for n in range(1,num+1):                #实现爬取评论时翻页try:url=first+str(n)+"&append=0&content=1" print(url)infor=getJson(url)t=len(infor)if(t==0):returnfor j in range(t):sheet1.write(row,column,infor[j])count=count+1                   #计数器column=column+1                 # 写入excel时自动换列if(count%5==0):                 #由elem_list内的列数决定row=row+1                   # 写完excel同行的每列时自动换行column=0file.save(path)print("第"+str(n)+"页获取成功!")except:print("has error")continue     #XXXX处请根据实际情况填写
#示例:url="https://rate.tmall.com/list_detail_rate.htm?itemId=613477706421&spuId=1526571124&sellerId=1646247574&order=3&currentPage=4&append=0&content=1"
url="https://rate.tmall.com/list_detail_rate.htm?itemId=XXXXXX&spuId=XXXXXX&sellerId=XXXXXX&order=XXXXXX&currentPage=XXXXXX&append=XXXXXX&content=XXXXXX"
html=get_html(url)
#print(html)
writeAll(你要爬取的页数)  #爬取的评论页数,请自定,<=100即可"""
------------------------------------------------------------------------------
STEP02  简单去重
------------------------------------------------------------------------------
"""
#抽取评论,方便去重操作
inputfile0="评论.xls"
outputfile0="评论.txt"
data0=pd.read_excel(inputfile0)
data0=data0[[u'评论']][data0[u'平台']==u'天猫']               #只处理评论列
data0.to_csv(outputfile0,index=False,header=False)#简单地去重,便于做出词云时提高准确性
inputfile1="评论.txt"
outputfile1="去重评论.txt"
data1=pd.read_csv(inputfile1,encoding='utf-8',header=None)
l1=len(data1)
data1=pd.DataFrame(data1[0].unique())
l2=len(data1)
data1.to_csv(outputfile1,index=False,header=False,encoding='utf-8')
print(u'总计删除了%s条评论。'%(l1-l2))"""
------------------------------------------------------------------------------
STEP03  制作词云
------------------------------------------------------------------------------
"""
#做出评论词云
with open("去重评论.txt",'r',encoding="utf-8") as f:text=f.read()
# print(text)
text = ' '.join(jieba.cut(text,cut_all=True))
# print(text)
backgroud_Image = plt.imread('apple.jpg')           # 词云底图地址
wordcloud = WordCloud(               #注意逗号封尾background_color = 'black',             # 设置词云背景颜色mask = backgroud_Image,max_words = 2000,                       # 设置词云最大现实的字数stopwords = STOPWORDS,                  # 设置词云停用词font_path='C:\Windows\Fonts\simsun.ttc',max_font_size=70,                       # 设置词云字体最大值min_font_size=5,                        # 设置词云字体最小值random_state=42,scale=2,).generate(text)image_colors = ImageColorGenerator(backgroud_Image)
plt.imshow(wordcloud.recolor(color_func=image_colors))
plt.imshow(wordcloud)
plt.axis("off")
fig=plt.gcf()
fig.set_size_inches(20,20)                           #设置产生词云图片的大小
plt.show()

注:关于url=“https://rate.tmall.com/list_detail_rate.htm?itemId=613477706421&spuId=1526571124&sellerId=1646247574&order=3&currentPage=4&append=0&content=1” 怎么找?
首先点击商品页面的 “累计评价” ,然后按照下图操作即可:

爬取部分数据展示

所需底图

爬取数据、成果展示

  1. Excel展示
  2. 数据简单处理结果
  3. 词云展示

    注:从词云可以看出jieba分词的弊端:“运行速度”被分成了“运行”、“行速”和“速度”,哈哈哈哈…

声明

由于淘宝可能随时更新相关网页参数,可能有细节需各位做出调整。希望这篇博客能帮到各位,不喜勿喷,谢谢!

Python入门--爬取淘宝评论并生成词云相关推荐

  1. Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26

    Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...

  2. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  3. Python爬取淘宝评论!听说差评才是最真实的?

    进入淘宝店铺,使用开发者工具抓包后点击累计评价,可以定位到评论的接口 从抓的包中复制cookie 分析接口后发现只需要四个参数即可在此接口请求到评论内容 #头部需要带上ua和referer,不然请求不 ...

  4. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  5. Python requests爬取淘宝商品信息

    作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...

  6. 如何写一个python程序浏览淘宝_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)...

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 1. 准备Pycharm,下载安装等,可以参考这 ...

  7. python +Selenium 爬取淘宝商品评论

    第一步 现在淘宝防爬取做的比较好,如果直接爬的话总是出现登陆界面.从而获取不到信息. 解决办法,新建 淘宝.py import json from selenium import webdriver ...

  8. python 爬虫实例-python爬虫实例,一小时上手爬取淘宝评论(附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 1 明确目的 通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据. ...

  9. Python爬虫实例,一小时上手爬取淘宝评论(附代码)!

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 1 明确目的 通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据. ...

最新文章

  1. Pandas | 5 种技巧高效利用value-counts
  2. C/C++中各种类型int、long、double、char表示范围(最大最小值)
  3. python 操作mongo
  4. 在Twitter上使用Apache Mesos和Apache Aurora进行资源调度和任务启动
  5. 真格量化-隐含波动率计算
  6. Spark源码打包编译的过程
  7. 4怎样判断动作是否执行_汽车驾驶怎样试验高压火,怎样判断分电器盖是否破裂,来看看吧!...
  8. c#多通道波形显示_因为每秒要采集50多个波形,需要大量的数据分析和波形分析,有什么好的解决办法吗?...
  9. 转换php时间戳,如何实现转换php时间戳
  10. marlab中主成分得分怎么求_PCA(主成分分析) 和 SVD (奇异值分解)
  11. Git克隆仓库代码至本地
  12. android 六边形简书,六边形RecyclerView
  13. Excel只保留2位小数,删掉其他小数位
  14. [XUPT]2020寒假训练---比赛专题
  15. Vue使用keep-alive,调用 $destory() ,页面不再被缓存的解决方法
  16. 必应搜索引擎怎么了?
  17. 寻址范围、按字寻址、按字节寻址
  18. 比赛的心得和感想--邱波
  19. 淘宝二手优必选舵机保姆级驱动教程,看不懂来打我(自行修改ID,有HAL库驱动函数)
  20. db2嵌套查询效率_提高 DB2 查询性能的常用方法

热门文章

  1. python自动备份手机_python实现自动备份文件
  2. hbase 二进制数据写入_linux 写入二进制文件内容
  3. 使用 Burpsuite 测试的常用操作(一)
  4. 解决懒惰、拖延的方法
  5. Golang-beego安装
  6. 芝麻代理、豌豆代理、品易代理……市面上那么多HTTP代理,要怎么挑?
  7. 暑假教师计算机培训总结,暑期教师培训心得体会4篇
  8. linux命令行连接wifi RTL810xE PCI Express Fast Ethernet Controller 网卡
  9. Unity UGUI Button不响应鼠标点击的一种不常见原因
  10. 身份证号,手机号校验